CN101673581A - 存取半导体存储设备的存储***和方法 - Google Patents
存取半导体存储设备的存储***和方法 Download PDFInfo
- Publication number
- CN101673581A CN101673581A CN200910205766A CN200910205766A CN101673581A CN 101673581 A CN101673581 A CN 101673581A CN 200910205766 A CN200910205766 A CN 200910205766A CN 200910205766 A CN200910205766 A CN 200910205766A CN 101673581 A CN101673581 A CN 101673581A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- programming
- flash memory
- page
- 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
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
-
- 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/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
- G11C16/3431—Circuits or methods to detect disturbed nonvolatile memory cells, e.g. which still read as programmed but with threshold less than the program verify threshold or read as erased but with threshold greater than the erase verify threshold, and to reverse the disturbance via a refreshing programming or erasing step
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/562—Multilevel memory programming aspects
- G11C2211/5621—Multilevel programming verification
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
提供一种带有处理器、主存储器和闪存的存储器***。通过获得加速和高的数据可靠性可提高存储器***的性能。存储器***包括非易失性存储器设备和用于驱动控制程序来控制非易失性存储器设备的控制器。即使在对非易失性存储器设备的第一存取操作完成之前,控制程序也执行对于非易失性存储器设备的第二存取操作。
Description
技术领域
此处公开的发明涉及半导体存储设备,更特别地,涉及存取半导体存储设备的存储***和方法。
背景技术
半导体存储设备是可以存储数据以及在需要时读出所存储的数据的存储设备。半导体存储设备可主要分为易失性存储设备和非易失性存储设备。
当电源中断时,易失性存储设备失去所存储的数据。与之相反,即使电源中断,非易失性存储设备仍保留着存储的数据。非易失性存储设备的例子是只读存储器(ROM)、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、闪存设备、相变随机存取存储器(PRAM)、磁RAM(MRAM)、阻性RAM(RRAM)、铁电RAM(FRAM)等等。
发明内容
本发明提供了可实时响应的非易失性存储器***、以及存取非易失性存储器设备的方法。
本发明也提供了可提供多线程函数的非易失性存储器***、以及存取非易失性存储器设备的方法。
本发明的实施例提供的存储器***包括:非易失性存储器设备;以及控制器,驱动控制非易失性存储器设备的控制程序,其中即使在对非易失性存储器设备的第一存取操作完成之前,控制程序也可执行对非易失性存储器设备的第二存取操作。
在一些实施例中,在第一存取操作完成之前,当指定给第一存取操作的时间结束时,控制程序产生表示第一存取操作完成的响应信号。
在其它实施例中,当第一存取操作暂停时,控制程序存储第一存取操作的行进程度。
在另外的其它实施例中,在第一存取操作完成之前,当指定给第一存取操作的时间结束时,控制程序暂停第一存取操作。当出现空闲时间时,控制程序重新开始被暂停的第一存取操作。
还在其它实施例中,在第一存取操作被暂停之后,当传递用于第二存取操作的请求时,控制程序执行第二存取操作。当在指定给第二存取操作的时间结束之前第二存取操作完成时,控制程序重新开始第一存取操作,直至指定给第二存取操作的时间结束。
仍在其它的实施例中,在第一存取操作被暂停之后,控制程序重新开始第一存取操作,直至传递用于第二存取操作的请求为止。
在进一步的实施例中,第一存取操作是第一写操作,第二存取操作是第二写操作或读操作。当在第一写操作被暂停之后传递用于读操作的请求时,控制程序执行读操作。当在第一写操作被暂停之后传递用于第二写操作的请求时,控制程序执行向缓冲器的第二写操作。当出现空闲时间时,控制程序将写入写缓冲器的数据写入非易失性存储器设备。
在更进一步的实施例中,非易失性存储器设备和控制器集成到一个半导体设备中。
在更进一步的实施例中,非易失性存储器设备和控制器形成半导体盘设备。
在更进一步的实施例中,非易失性存储器设备是闪存设备,控制程序是闪存转换层(flash translation layer)。
在其它实施例中,控制程序是非易失性地存储在控制器中的固件。
仍在其它实施例中,控制程序被配置为带有逻辑电路。
在本发明的其它实施例中,存取非易失性存储器设备的方法包括:根据用于第一存取操作的请求执行第一存取操作;虽然第一存取操作没有完成,但当指定给第一存取操作的时间结束时,暂停第一存取操作;当出现空闲时间时,重新开始暂停的第一存取操作。
仍然在其它实施例中,重新开始执行第一存取操作直至传输第二存取操作的请求。
在进一步的实施例中,当在指定给第二存取操作的时间结束之前依照用于第二存取操作的请求的第二存取操作完成时,重新开始实施第一存取操作,直至指定给第二存取操作的时间结束。
在本发明更进一步的实施例中,存储***包括:非易失性存储器设备;以及控制器,用于驱动控制非易失性存储器设备的控制程序。在此,当指定用于非易失性存储设备的第一存取操作的时间结束时,即便在第一存取操作结束之前,控制程序都向主机传递指示第一存取操作完成的响应信号。
在更进一步的实施例中,当指定给第一存取操作的时间结束时,控制程序暂停第一存取操作并执行第二存取操作。
在又进一步的实施例中,当出现空闲时间时,控制程序重新开始所暂停的第一存取操作。
附图说明
包括附图以提供对于本发明进一步的理解,在此处结合附图并且附图组成该说明书的一部分。附图与说明书一起示出了本发明示范性实施例,用于解释本发明的原理。在附图中:
图1是示出通用闪存***的操作的流程图。
图2是示出了根据本发明的实施例的存储器***的框图。
图3是示出了根据本发明的实施例的存储器***的操作的流程图。
图4是示出了图2的存储器***的控制程序的框图。
图5是示出了根据本发明的实施例的映射表的操作的框图。
图6是示出了由图4的控制程序提供的多线程函数的流程图。
图7A到图7C是示出了图4中的控制程序如何存储主和次线程操作的局部变量的图。
图8是示出第一类空闲时间的图。
图9是示出第二类空闲时间的图。
图10是示出了图4的控制程序根据主机的请求进行操作的实施例的图。
图11是根据本发明的实施例的控制程序如何实时响应的流程图。
图12是示出了包括图2和4的存储器***的计算***的实施例的框图。
图13是示出了使用闪存的存储器***的硬件结构的框图;
图14是示出了图13的存储器***的***软件结构的框图;
图15是示出了图14的存储器***的混合映射方法的框图;
图16是示出了存储器***的通用映射方法的概念图;
图17(a)和图17(b)示出了图16的数据块和逻辑(log)块之间的页映射关系。
图18是示出了通过数据块和逻辑块的合并产生新的数据块的方法的视图;
图19是示出了根据本发明的存储器***的不对称映射方法的概念图;
图20是示出了根据本发明的另一个实施例的不对称映射方法的流程图;
图21是示出了图20的随机写的视图;
图22是示出了图20的顺序写的视图;
图23是示出了在数据块中的所有逻辑页(页0,页1和页2)只被逻辑块更新一次的情况的视图;
图24是示出了数据块中的部分逻辑页被逻辑块更新的情况的视图;
图25是示出了数据块中的部分逻辑页被逻辑块更新的情况的视图;
图26是示出了根据本发明的带有闪存设备的计算***的框图;
图27是示出了根据本发明的固态磁盘(SSD)***的结构的框图;
图28示出了根据本发明的实施例的存储器***的框图;并且
图29是根据本发明的另一个实施例的存储器***的框图;
图30描述了纯“与非”(pure-NAND)存储器的***层结构,并且图31是受管理的“与非”(managed-NAND)存储器的***层结构。
图32描述了示出对于每个NAND闪存的基本操作的执行时间的比例的图。
图33和34描述了根据逻辑映射的合并操作。
图35描述了根据本发明的示范性实施例的存储器***的框图。
图36描述了示出图35的存储器***的驱动方法的流程图。
图37描述了纯NAND中的主机CPU的操作的时序图。
图38描述了图35的CPU和加速器的时序图。
图39描述了比较图37和图38的操作性能的图。
图40描述示出了根据本发明的第二示范性实施例的存储器***的框图。
图41描述了包括本发明的存储器***的计算机***。
图42是描述了根据本发明的其它示范性实施例的基于存储器的存储设备的框图。
图43是示范性示出根据本发明的存储器***的框图。
图44是示出了图43所示的闪存的框图。
图45是示出多电平单元的偏置电压的图。
图46是示出图44所示的存储器单元的温度变化所导致的阈值电压改变的图。
图47是示出用于初始化图43所示的温度传感器的过程的流程图。
图48是示出根据本发明的依据存储器***的温度改变的校验电压调整的方法的流程图。
图49是示出根据本发明的依据存储器***的温度改变的读电压调整的方法的流程图。
图50到53是示出根据本发明的存储器***的各种实施例的框图。
图54是示出了一方法的流程图,该方法纠正温度改变导致的位错误的方法但存储器单元的阈值电压会变化。
图55是示出了每个存储2位(MSB和LSB)的多电平单元的阈值电压分布和相应于例如NAND闪存的存储器中的分布的数据值的图。
图56是示出了根据本发明的存储器***的图。
图57是示出了根据本发明第一实施例的编程方法的流程图。
图58A到58C是示出根据本发明的第一编程方法的图
图59A到50D是示出根据本发明的第二编程方法的图。
图60是示出了依照本发明的检测编程失败阶段的方法的框图。
图61是用于示出通过图60中示出的错误校正电路检测编程失败的方法的图。
图62是示出根据本发明的NOR闪存设备的优选实施例的框图。
图63是示出依照本发明的检测编程失败阶段的另一个方法的框图。
图64是示出通过编程来改变标志存储器单元的阈值电压的方法的流程图。
图65是示出依据本发明的检测编程失败的另一个方法的框图。
图66是示出通过完成编程阶段来改变存储在标志寄存器中的数据的方法的流程图。
图67A到67C是示出根据本发明的LSB读方法的图。
图68A到68C示出根据本发明的第一编程方法。
图69A到69C示出根据本发明的第二编程方法。
图70A到70B是示出根据本发明的LSB读方法的图。
图71是示出本发明的另一个应用的框图。
图72A到72B是示出地址加扰技术的图。
图73A到73B是用于示出当4个位存储在存储器单元中时的编程顺序的图。
图74是简单示出根据本发明的带有闪存设备的计算***的框图。
图75是简单示出根据本发明的SSD***的框图。
图76是示出根据本发明的另一个示范性实施例的存储器***的框图。
图77是示出根据本发明的另一个示范性实施例的存储器***的框图。
图78示出了主机***5840耦合到图70的卡5830的实施例。
图79是示范性示出根据本发明的存储器***的框图。
图80是示出了图79中的闪存的框图。
图81是示出图80中所示的闪存的单元串和由于软编程所带来的读失败的图。
图82和83是示出图81中所示的存储单元的软编程的图。
图84是示出根据本发明的存储器***的读失败防止方法的流程图。
图85是示出根据本发明的存储器***的读失败防止方法的另一个实施例的流程图。
图86是用于示出如果发生了突然的断电,补偿读计数数据的方法的流程图。
图87是示范性示出MLC闪存的单元阈值电压分布的图。
图88是示出保证闪存数据可靠性的方法的流程图。
图89是示出包括根据本发明的存储器***的计算机***的框图。
图90是根据本发明的示范性实施例的计算***的框图。
图91是根据本发明的示范性实施例的图90的存储器控制器的框图。
图92是示出根据本发明的示范性实施例的基于存储器的存储设备的读处理的流程图。
图93是示出根据本发明的示范性实施例的基于存储器的存储设备的块管理方法的流程图;
图94是示出根据本发明的示范性实施例的刷新操作的图;
图95是示出根据本发明的另一个示范性实施例的基于存储器的存储设备的块管理方法的流程图;
图96是示出根据本发明的另一个示范性实施例的基于存储器的存储设备的块管理方法的流程图;
图97是示出根据本发明的另一个示范性实施例的计算***的框图;
图98是示出根据本发明的另一个示范性实施例的基于存储器的存储设备的框图;以及
图99是示出包括根据本发明的另一个示范性实施例的基于存储器的存储设备的存储器***的框图。
具体实施方式
现在将结合附图在下文更完整地描述本发明,附图中示出了发明的优选实施例。然而,本发明可以具体化为许多不同的形式,而不应解读为限定于此处列出的实施例。更合适的,提供这些实施例以便于使本公开完整和完善,并向本领域技术人员完全表达本发明的范围。自始自终相似编号指代相似的元件。
闪存***包括硬件,例如处理器、主存储器、闪存。闪存***可进一步包括增强其性能的温度传感器、加速器、以及ECC电路。这些部件将在下面详细描述。更进一步的,闪存***包括软件,例如用户应用程序、操作***(O/S)、文件***和闪存转换层(FTL)。
根据本发明的实施例,闪存***可通过以上提到的硬件或软件的方式获得加速或保证的数据可靠性。同时,典型的闪存***在其操作速度增加时会降低数据可靠性,或者在保证数据的可靠性时经受降低的操作速度。
现在将结合附图在下面详细描述用于加速闪存***的各种实施例。也将结合附图在下面详细描述用于闪存***的数据可靠性的各种实施例。根据本发明的实施例的闪存***可通过获得加速和高的数据可靠性来提高性能。
I.闪存***的加速
[实施例1]执行多线程函数的闪存***
闪存设备具有写之前擦除的特性。即,为了在闪存设备中存储数据,要预先擦除相应的存储空间。在闪存设备中,写操作的单位与擦除操作的单位不同。写操作的单位是页,然而擦除操作的单位是闪存设备中的块。闪存设备的擦除次数的数量大约限制在十万次。由于闪存设备的这种特性,在闪存设备的写操作期间执行写操作之外的额外操作。例如,可在闪存设备的写操作期间附加地执行碎片收集和耗损均衡操作。
如上所述,擦除次数的数量限制在十万次。因此,虽然对于数据的擦除请求从主机传输,但是数据不被擦除而是被设置为无效数据。从主机传输的写数据被写入没有存储数据的自由块。即,对于闪存设备的写或覆写操作使用闪存设备的自由块。
当重复闪存设备上的写或更新操作时,可以使用闪存设备的大部分自由块。在可用的自由块的数量小于预设的数量的情况下,当传递写请求时,闪存***执行碎片收集。碎片收集包括合并、压缩和碎片块获得。碎片收集向自由块复制逻辑块(也称为物理块)的有效数据,该逻辑块存储着有效和无效数据,并将逻辑块的有效数据设置为无效数据。然后,存储无效数据的逻辑块被擦除,并因此设置为自由块。即当执行碎片收集时,可写入数据的自由块的数量增加了。
耗损均衡操作防止闪存设备的特定逻辑块的擦除次数的数量增加到超过参考值。即耗损均衡操作防止闪存设备的特定逻辑块与其它逻辑块相比被快速地恶化。耗损均衡操作将擦除次数的数量是存储无效数据的逻辑块中最小的逻辑块设定为自由块。
即,当从主机传来写请求时,碎片收集和耗损均衡操作以及写操作可在闪存设备中执行。在这种情况中,闪存设备响应主机的写请求的响应时间可被延迟。即,闪存设备可不实时响应主机的请求。
当闪存设备处于空闲状态时,碎片收集和耗损均衡操作可作为后台(background)操作被执行。当从主机传递存取请求而碎片收集和耗损均衡操作作为后台操作被执行时,闪存设备响应主机的存取请求的响应时间可被延迟。即,闪存设备可不实时响应主机的请求。
图1是示出通用闪存***的操作的流程图。参考图1,在操作S1100中,闪存***接收写请求。写请求从主机传递到闪存***。
在操作S1110中,闪存***检测逻辑块以便写数据。即,检测闪存***的逻辑块的自由块。
在操作S1120中,如果自由块存在于闪存***的逻辑块中,在操作S1170中数据被写入自由块。然而,如果闪存***的逻辑块中不存在自由块,则执行S1130。为了描述的方便,示出了根据闪存***的逻辑块中是否存在自由块,执行操作S1130或者操作S1170。然而,可以理解的是,当闪存***的自由块的数量小于预定数时,也可选择地执行操作S1130或者操作S1170。
在操作S1130中,闪存***执行获得自由块的操作。示范性地,闪存***可执行碎片收集以获得自由块。同样,闪存***可执行耗损均衡操作以控制逻辑块的擦除次数的数量。为了描述的方便,示出了闪存***执行碎片收集操作的压缩操作。然而,闪存***执行的碎片收集不限于压缩操作。可以理解的是,闪存***可通过合并、压缩和碎片块获得操作或其它碎片收集来获得自由块。
在操作S1140中,闪存***确定复制压缩和压缩哪个高效。当确定复制压缩比压缩更高效时,在操作S1150中执行复制压缩。相反,当确定压缩比复制压缩更高效时,在步骤S1160中执行压缩。其示出了闪存***执行复制压缩和压缩中的任意一个。然而,可以理解的是,除了复制压缩或压缩之外,闪存***还可执行另一个碎片收集。
在操作S1150中,执行复制压缩。假定第一逻辑块被配置为具有存储无效和有效数据的页,并且第二逻辑块被配置为具有存储有效数据的页和不存储数据的自由页。闪存***将第一逻辑块的有效数据复制到第二逻辑块的自由页。闪存***擦除第一逻辑块以获得自由块。
在操作S1160中,执行压缩。假定第一和第二逻辑块分别存储无效数据和有效数据,并且第三逻辑块是自由块。闪存***向第三逻辑块复制第一和第二逻辑块的有效数据。闪存***擦除第一和第二逻辑块以获得自由块。
在操作S1170,闪存***向自由块中写数据。
如上所描述的,如果当从主机传递写请求时执行碎片收集,则闪存***响应主机的请求的响应时间被延迟。如果碎片收集和耗损均衡操作同时执行,则闪存***响应主机的请求的时间被进一步延迟。同样,即使当碎片收集和耗损均衡操作作为后台操作被执行,闪存***响应主机的请求的响应时间仍可被延迟。
图2是示出根据本发明的实施例的存储器***1500的框图。参考图2,根据本发明的实施例的存储器***1500包括控制器1600和非易失性存储器设备1700。
控制器1600连接到主机和非易失性存储器设备1700上。控制器1600将从非易失性存储器设备1700读取的数据传递到主机,或者存储从主机传递到非易失性存储器设备1700的数据。
控制器1600可包括RAM、处理单元、主机接口、以及存储器接口。RAM可作为处理单元的工作存储器使用。处理单元可控制控制器1600的全部操作。主机接口可包括在主机和控制器1600之间交换数据的协议。例如,可配置控制器1600以便其通过例如USB、MMC、PCI-E、高级技术附件(ATA)、串行ATA、SCSI、ESDI、以及集成驱动电子学(IDE)之类的各种接口协议之一与外界(主机)通信。存储器接口可与非易失性存储器设备1700接口连接。控制器1600可进一步包括错误纠正块。错误纠正块可检测从非易失性存储器设备1700读取的数据的错误,接着纠正该错误。
控制器1600和非易失性存储器设备1700可集成到一个半导体设备中。示范性地,控制器1600和非易失存储器性设备1700集成到一个半导体设备中,因此形成存储卡。可选地,控制器1600和非易失性存储器设备1700集成到一个半导体设备中,因此形成半导体盘/驱动器(SSD,固态盘/驱动器)。当存储器***1500作为SSD使用时,连接到存储器***1500的主机的操作速度可被显著地提高。
非易失性存储器设备1700包括数据存储区域1710和缓冲器1720。数据存储区域1710是用于存储用户数据的存储空间。缓冲器1720是用于暂时存储将要写入数据存储区域1710的数据的存储空间。根据本发明的实施例的缓冲器1720可具有与数据存储区域1710相同的配置。示范性地,非易失性存储器设备1700的存储单元阵列被分成两个区域,其中之一可用作数据存储区域1710,另一个被用作缓冲器1720。
控制器1600可驱动控制程序1610控制非易失性存储器设备1700。控制程序1610可控制非易失性存储器设备的读、写以及擦除操作。
根据主机的存取请求的存取操作具有指定的时间。示范性地,4KB数据的写操作具有30ms的指定时间。在从主机传递存取请求之后,如果存储***1500没有在指定时间内完成存取操作,则可能发生超时。然而,根据本发明的实施例的存储器***1500防止了超时的发生。
图3是示出了根据本发明的实施例的存储器***1500的操作的流程图。参考图2和3,在操作S1200中,存储器***1500从主机接收存取请求。在操作S1210,存储器***1500基于从主机接收的存取请求执行存取操作。示范性地,控制程序1610可基于接收到的存取请求执行写、读或擦除操作。
在操作S1220中,控制程序1610检查指定给存取操作的时间是否结束。在操作S1230中,如果指定给存取操作的时间没有过去,则在操作S1210中继续执行存取操作。当指定给存取操作的时间结束时,控制程序1610传递响应信号,该响应信号指示在操作S1240中完成了存取操作。
即,当指定给存取操作的时间结束时,根据本发明的实施例的存储器***1500向主机发送指示存取操作完成的响应信号。控制程序1610暂停该存取操作,并接收新的存取请求。当出现空闲时间,重新开始暂停的存取操作。示范性地,控制程序1610使用多线程技术处理从主机接收到的存取请求。控制程序1610可作为固件存储在ROM或非易失性存储器设备中。可选地,可配置控制程序1610带有逻辑电路。
图4是示出图2的存储器***1500的控制程序1610的框图。在控制器中驱动用于控制非易失性存储器设备1700的控制程序1610(见图2的1600)。控制程序1610包括读/写管理器1620、第一映射表1630、第二映射表1640、以及存储器管理器1650。
读/写管理器1620使用第一和第二映射表1630和1640控制易失性存储器设备1700上的读操作和写操作。使用第一映射表1630存取非易失性存储器设备1700的数据存储区域1710。使用第二映射表1640存取非易失性存储器设备1700的缓冲器1720。使用第一和第二映射表1630和1640将主机传递的逻辑地址(LA)转换为物理地址(PA)。
存储器管理器1650控制对非易失性存储器设备的存取以及与主机的全部通信。即使根据主机的第一个存取请求的第一个存取操作没有完成,存储器管理器1650根据来自主机的第二个存取请求执行第二存取操作。即,存储器管理器1650向存储器***1500提供实时响应。
将闪存***作为例子,下面将详细描述本发明的实施例。然而,本发明的实施例不限于闪存***。例如,可以理解的是本发明的技术概念也适用于包括例如PRAM、RRAM、MRAM以及FRAM、和EEPROM之类的非易失性存储器设备的存储器***。
闪存设备1700的单元阵列被分为数据存储区域1710和缓冲器1720。缓冲器1720具有比数据存储区域1710更快的存取速度。示范性地,可通过不同地设置用于数据存储区域1710和缓冲器1720的映射表1630和1640来控制数据存储区域1710的操作速度以及缓冲器1720的操作速度。
图5是示出了根据本发明的实施例的映射表1630和1640的操作的框图。参考图4和5,映射表1630和1640用于映射被主机存取的数据块(DB)和被控制程序1610存取的逻辑块(LB)。通过逻辑地址存取数据块(DB),通过物理地址存取逻辑块(LB)。
数据块(DB)形成一个或多个数据块组。每个数据块组包括预定数量的数据块(DB)。逻辑块(LB)形成一个或多个逻辑块组。每个逻辑块组包括预定数量的逻辑块(LB)。一个或多个数据块组被映射到一个或多个逻辑块组上。
每个映射表1630和1640包括块映射表(BMT)和页映射表(PMT)。块映射表(BMT)映射数据块组和逻辑块组。例如,当数据块组被配置为带有两个数据块(DB)而逻辑块组被配置为带有四个逻辑块(LB)时,块映射表(BMT)向一个逻辑块组上映射两个数据块组。页映射表(PMT)向相应的逻辑块组的逻辑块(LB)的页上映射数据块组的数据块(DB)的页。
数据存储区域1710的数据块(DB)和逻辑块(LB)通过块相关映射方法被映射。即,数据块(DB)被分为多个数据块组,并且逻辑块(LB)被分为多个逻辑块组。映射表1630的块映射表(BMT)映射数据块组和逻辑块组。映射表1630的页映射表(PMT)映射数据块组的页和逻辑块组的页。即,以块组和页为单位管理数据存储区域1710。
通过完全相关的映射方法映射缓冲器1720的数据块(DB)和逻辑块(LB)。即,所有的数据块(DB)形成一个数据块组,而所有的逻辑块(LB)形成一个逻辑块组。映射表1640的页映射表(PMT)映射所有数据块(DB)的页和所有逻辑块(LB)的页。即,通过页映射表(PMT)以页为单位管理缓冲器1720。
因此,当要写入缓冲器1720的数据被传递时,检测缓冲器1720的自由页,并且将数据写入检测到的自由页。缓冲器1720可以先进先出(FIFO)模式操作。示范性地,当数据被顺序写入缓冲器1720中的第一逻辑块的页和第二逻辑块的页时,存储在第一逻辑块的页和第二逻辑块的页中的数据被顺序擦除。当第一逻辑块的页设为无效页时,第一逻辑块可被擦除。即,当缓冲器1720操作时,不需要碎片收集。因此,缓冲器1720的操作速度可比数据存储区域1710的快。
为了向存储器***1500提供实时响应,控制程序1610使用协同程序(coroutine)方法。控制程序1610将来自主机的请求分为主线程和次线程。在根据次线程的请求(此处指次线程请求)操作期间,当主线程的请求(此处指主线程请求)被传输时,控制程序1610暂停次线程操作,并根据主线程请求来执行操作。当控制程序1610处于空闲状态时,重新开始暂停的次线程操作。
例如,当没有暂停的操作或在进行中的操作时传递的存取请求被确定为次线程。相反,当存在暂停的操作或在进行中的操作时传递的存取请求被确定为主线程。控制程序1610使用主或次线程提供多线程函数。
控制程序1610的需要的时间比预定的时间要长的操作(例如,写、碎片收集、耗损均衡)具有一个或更多个暂停点。控制程序1610的操作可在暂停点被暂停。然后,暂停的操作可从暂停点重新开始。示范性地,可在对一个页的程序操作之前和之后形成暂停点。可选地,可在对一个块的擦除操作之前和之后形成暂停点。
例如,当在次线程操作期间传递对于主线程操作的请求时,控制程序1610在次线程操作的暂停点暂停次线程,并执行主线程操作。之后,当出现空闲时间时,控制程序1610从暂停点重新开始次线程操作。
图6是示出了图4的控制程序1610提供的多线程函数的流程图。在图6中,示出了次线程操作有一个暂停点,并且基于该暂停点被分成两个主体BODY1和BODY2。然而,根据本发明的实施例的主或次线程操作不限于一个暂停点。根据本发明的实施例的主或次线程有n个暂停点,n+1个主体。
在操作S1300中,重新设定程序计数器(PC)、局部变量。程序计数器PC示出了在次线程操作期间已经通过多少个暂停点。
在操作S1310,次线程操作的主体BODY1被执行。示范性地,当次线程操作是向闪存设备(见图2的1700)的两个页的写操作时,主体BODY1可以是向一个页的写操作。
操作S1320代表暂停点。次线程操作可在暂停点被暂停。操作S1320包括多个子操作。
在操作S1321,程序计数器(PC)增加。即次线程操作执行暂停点的任何时候,程序计数器(PC)都增加。程序计数器(PC)示出了次线程操作执行了多少个暂停点。当次线程操作在暂停点被暂停时,可使用程序计数器(PC)检测用于重新开始暂停的次线程操作的重新开始点。
在操作S1323,检查是否请求主线程操作。在操作S1325,如果请求主线程操作,则暂停次线程操作。除非请求主线程操作,才执行操作S1340。
当在操作S1327中暂停次线程操作时,在操作S1330执行主线程操作。当完成线程操作时,在操作S1340重新开始次线程操作。
在操作S1340中,控制程序1610使用程序计数器(PC)检测暂停的次线程操作的重新开始点。示范性地,如果程序计数器(PC)的值是2,则控制程序1610可在第二暂停点之后执行主体。
在操作S1350,执行次线程操作的主体BODY2。
当控制程序1610处于空闲状态时传递的请求可作为次线程执行。当控制程序1610处于忙状态时传递的请求可作为主线程执行。
当控制程序1610执行主线程或次线程时,控制器(见图2的1600)的操作存储器(例如SRAM)的一部分被指定执行主或次线程操作。控制程序1610存储在指定的存储空间中执行主或次线程需要的变量。
为了可暂停次线程操作,可执行主线程操作,并且次线程操作可重新开始,当执行主线程操作时,应保存次线程操作的局部变量。同时,主和次线程操作的局部变量存储在相同的存储空间中。因此,当执行主线程操作时,次线程操作的局部变量值由于主线程操作的局部变量而被改变或消失。
根据本发明的实施例的控制程序1610不同地设置用于存储次线程操作的局部变量的方法和用于存储主线程操作的局部变量的方法。甚至当次线程操作被暂停时,控制程序1610仍保存次线程操作的局部变量。
图7A到7C是示出图4的控制程序1610如何存储主和次线程操作的局部变量的图。参考图7A,以堆积的方式存储次线程操作的局部变量。当次线程操作被暂停时,也以堆积的方式存储程序计数器(PC)。
参考图7B,以堆栈的方式存储主线程操作的局部值。由于主和次线程操作的局部值在存储空间(LDA)被不同地存储,存储主和次线程操作的局部变量的存储空间彼此不交迭。因此,次线程的局部变量不会因为主线程的局部变量而改变或消失。
参考图7C,当完成主线程操作时,主线程操作的局部变量消失。次线程操作的程序计数器和局部变量被保存,因此次线程操作可正常重新开始。
根据本发明的实施例的控制程序1610使用多线程技术向存储器***1500提供实时响应。存储器***1500根据来自主机的第一存取请求执行第一存取操作。由于碎片收集、耗损均衡操作或类似操作,在指定给第一存取操作的时间内,第一存取操作可能完不成。当第一存取操作没有完成时,如果传递第二存取请求,则控制程序1610暂停第一存取操作,并传递响应信号,该响应信号向主机示出第一存取操作的完成。接着,控制程序1610基于第二存取请求执行第二存取操作。当出现空闲时间时,控制程序1610重新开始暂停的第一存取操作。
图8是示出第一类空闲时间的图。在图8中,横坐标轴代表时间,纵坐标轴代表控制程序1610的状态。
当在时间t1传输第一存取请求Req1时,控制程序1610根据第一存取请求Req1执行第一存取操作。此时,控制程序1610处于繁忙状态。当指定给第一存取操作的时间是ta-t1时,主机在时间ta之后传输第二存取请求Req2。当第一存取操作在时间t2完成时,在第二存取请求Req2被传输之前,在时间ta-t1期间,主机不传输存取请求。即,控制程序1610有空闲时间。
如图8所示,由于存取操作在称为内部处理(inter-transaction)间隙时间(slack time)ST1的指定时间之前完成,则出现空闲时间。控制程序1610可在空闲时间ST1期间重新开始暂停的存取操作。
图9是示出第二类型空闲时间的图。在图9中,横坐标轴代表时间,纵坐标轴代表控制程序的状态(见图2的1610)。
在时间t1接收第一存取请求Req1。控制程序1610在指定给根据第一存取请求的第一存取操作的时间ta-t1,完成第一存取操作。主机可在时间ta之后传递第二存取请求Req2。然而,当主机不存取存储器***1500时,主机可不传递第二存取请求Req2。即,主机传输第二存取请求Req2的定时可为时间ta之后所经过的预定的时间。示范地,主机在时间ta之后的时间t4传递第二存取请求Req2。在这时,控制程序1610在时间t4-ta之间是空闲状态。
在从主机接收的存取请求之间的空闲时间被称为内部处理间隙时间ST2。控制程序1610可在空闲时间ST2期间重新开始暂停的存取操作。
图10是示出图4的控制程序1610根据主机的请求进行操作的实施例的图。在图10中,横坐标轴代表时间,纵坐标轴代表控制程序1610的函数。
在时间t5,从主机传递第一存取请求Req1。示范性地,第一存取请求Req1可为写请求。指定给第一存取请求Req1的时间AT一直到时间t6。
控制程序1610执行写函数。在点J1,写函数调用函数Get Log BLK。函数Get Log BLK是在闪存设备1700的数据存储区域1710中检测逻辑块的自由块的函数。
当在数据存储区域1710中没有自由块时,Get Log BLK函数在点J2调用Reserve Free函数。Reserve Free函数是执行碎片收集以获得自由块的函数。示范性地,为了获得自由块,Reserve Free函数可确定复制压缩和压缩之间哪个更有效率。当确定复制压缩比压缩更有效率时,Reserve Free函数在点J3调用Copy Compaction函数。复制压缩执行复制压缩以获得自由块。当获得自由块时,完成Copy Compaction函数,并且控制程序1610返回到Reserve Free函数。
控制程序1610检查指定给第一存取操作(第一写操作)的时间AT1是否结束。当接近指定给第一存取操作(第一写操作)的时间AT1时,即使第一存取操作(第一写操作)没有完成,控制程序1610也将第一存取操作(第一写操作)暂停到数据存储区域1710。还没写入数据存储区域1710的数据DATA1的数据被写入缓冲器1720。控制程序1610在数据DATA1中比较没被写入的数据的尺寸、向缓冲器1720中写数据需要的时间、指定给第一存取操作(第一写操作)的时间,由此控制对缓冲器1720中的写操作在指定给第一存取操作(第一写操作)的时间AT1结束之前完成。当对缓冲器1720的写操作完成时,控制程序1610向主机发送指示第一存取操作(第一写操作)完成的响应信号。
在时间t6主机传输第二存取请求Req2。示范性地,第二存取请求Req2可为第二写请求。控制程序1610基于第二存取请求Req2执行第二存取操作(第二写操作)。指定给第二存取操作(第二写操作)的时间AT2一直到时间t8。由于第一写操作被暂停,控制程序1610向缓冲器1720而非数据存储区域1710执行第二写操作。
缓冲器1720的操作速度比数据存储区域1710的操作速度快。因此,向缓冲器1720写数据的第二写操作可早于指定时间AT2完成。示范性地,在时间t7完成第二写操作。当完成第二写操作时,控制程序1610向主机传输指示第二写操作完成的响应信号Res2。虽然响应信号Res2被传递到主机,但在第二存取操作(第二写操作)的指定时间AT2之后,主机请求新的存取操作。即,从第二存取操作完成的时间t7到指定给第二存取操作的时间t8,控制程序1610处于空闲状态。更具体地,控制程序1610有内部处理间隙时间ST1。
控制程序1610在点J6重新开始暂停的第一存取操作(第一写操作)。即,暂停的Reserve Free函数被重新开始。当完成函数Reserve Free时,控制程序1610在点J7返回到函数Get Log BLK。当完成函数Get Log BLK时,控制程序1610在点J8返回到Write函数。由于函数Get Log BLK获得自由块,所以第一写数据DATA1被写入数据存储区域1710。
当指定给第二存取操作(第二写操作)的时间AT2结束时,控制程序1610在点J9暂停第一存取操作(第一写操作)。控制程序1610检测是否接收到新的存取请求。如果没有接收到新的存取请求,则控制程序1610具有空闲时间。更详细地,控制程序1610具有内部处理间隙时间ST2。由于空闲时间的出现,控制程序1610重新开始第一存取操作(第一写操作)。
控制程序1610在第一存取操作(第一写操作)中设定的每个暂停点暂停第一存取操作(第一写操作),并检测是否接收到新的存取请求。当没有传递新的存取请求时,控制程序1610重新开始第一存取操作(第一写操作)。当传递了新的存取请求时,控制程序1610根据新的存取请求执行存取操作。
当控制程序1610重新开始暂停的存取操作时,控制程序1610不能响应来自于主机的存取请求。即,新的存取操作可被延迟一在检测控制程序1610是否接收新的存取请求的操作之间的时间间隔。因此,可设置存取操作的暂停点之间的时间间隔,以便晚于预定时间时不执行新的存取操作。
第一存取操作(第一写操作)在时间t9完成。根据第二存取请求(第二写请求)的第二存取操作(第二写操作)不在数据存储区域1710上执行但是在缓冲器1720上执行。控制程序1610识别在缓冲器1720上而不是在数据存取区域1710上执行的写操作作为暂停的存取操作。因此,控制程序1610在空闲时间期间,向数据存储区域1710复制存储在缓冲器1720中的数据。即,控制程序1610执行第二存取操作(第二写操作)。
控制程序1610在第二存取操作(第二写操作)的每个暂停点执行第二存取操作(第二写操作),并检测是否接收到新的存取请求。在时间t10传递第三存取请求Req3。示范性地,第三存取请求Req3为读请求。指定给第三存取操作(读操作)的时间AT3一直到时间t12。
控制程序1610执行第三存取操作(读操作)。当第三存取操作(读操作)在时间t11完成时,控制程序1610向主机传递指示第三存取操作(读操作)完成的响应信号Res3。由于在指定的时间AT3内完成了第三存取操作(读操作),所以控制程序1610有空闲时间。更具体地,控制程序1610具有内部处理间隙时间ST1。因此,控制程序1610重新开始暂停的第二存取操作(第二写操作)。在时间t12,完成第二存取操作(第二写操作)。
如上所述,根据本发明的实施例的控制程序1610执行第一存取操作(第一写操作)。如果指定给第一存取操作(第一写操作)的时间结束,则控制程序1610暂停第一存取操作(第一写操作),并向主机发送指示第一存取操作(第一写操作)完成的响应信号。当出现空闲时间时,重新执行暂停的第一存取操作。
在第一存取操作(第一写操作)被暂停之后,当传递用于第二存取操作(第二写操作或读操作)的请求时,控制程序1610执行第二存取操作(第二写操作或读操作)。当在指定的时间之前第二存取操作(第二写操作或读操作)完成时,控制程序1610重新开始第一存取操作(第一写操作)直至指定给第二存取操作(第二写操作或读操作)的时间结束。即,控制程序1610在内部处理间隙时间ST1期间重新开始第一存取操作(第一写操作)。
在第一存取操作(第一写操作)被暂停之后,控制程序1610重新开始第一存取操作(第一写操作)直至传递用于第二存取操作(第二写操作或读操作)的请求。即,控制程序1610在内部处理间隙时间ST2期间重新开始第一存取操作(第一写操作)。如果当暂停第一存取操作(第一写操作)的同时传递的第二存取操作是第二写操作,则第二写操作在缓冲器1720上而不是在数据存储区域1710上执行。在空闲时间期间,控制程序1610向数据存储区域1710复制存储在缓冲器1720中的数据。
在实例中,指定的时间AT1到AT3可能彼此不同。例如,当存在多个存取存储器***1500的主机时,分别来自多个主机的指定时间AT1到AT3彼此不同。
图11是根据本发明的实施例的控制程序1610如何实时响应的流程图。参考图11,在操作S1400中,从主机接收第一存取请求。在操作S1410,控制程序1610根据第一存取请求执行第一存取操作。
在操作S1420,控制程序执行第一存取操作的暂停点。操作S1420包括多个子操作。在操作S1421,控制程序1610确定第一存取操作是否完成。如果第一存取操作没有完成,则实施操作S1423。
在操作S1423,控制程序1610确定指定给第一存取操作的时间AT是否结束。如果指定给第一存取操作的时间AT没有过去,则在操作S1410执行第一存取操作。然而,如果指定给第一存取操作的时间AT结束,则执行操作S1425。
在操作S1425,控制程序1610确定是否接收到新的存取请求。如果没有接收到新的存取请求,则控制程序1610具有内部处理间隙时间ST2。因此在操作S1440,控制程序1610重新开始第一存取操作。如果接收到新的存取请求,则在操作S1427暂停第一存取操作。在操作S1430,根据新的存取请求执行存取操作。
新的存取操作可为读或写操作。执行读操作比写操作快。因此如果新的存取请求是读操作,则读操作可在指定时间之前完成。即,控制程序1610可具有内部处理间隙时间。
如果新的存取操作是写操作,由于第一存取操作被暂停,则新的写操作在缓冲器1720上执行。由于对缓冲器1720的写操作执行的比对数据存储区域1710的写数据快,所以对缓冲器1720的写操作可在指定时间之前完成。即,控制程序1610可具有内部处理间隙时间ST1。
在操作S1450,由于控制程序1610具有内部处理间隙时间ST1,则控制程序1610可以重新开始暂停的第一存取操作。
在前述实施例中,控制程序1610可通过闪存转换层(FTL)实现。
在之前的实施例中,示出了闪存设备1700的单元阵列被分为数据存储区域1710和缓冲器1720。但是,根据本发明的实施例的闪存设备1700可包括分离的缓冲器。
在前述实施例中,本发明的技术概念通过使用包括闪存设备的闪存***作为实例加以描述。然而,本发明的技术概念不限于应用到闪存***。示范性地,本发明的技术概念也可应用于非易失性存储器***,例如PRAM、RRAM、MRAM、FRAM以及EEPROM。在该情况中,可以在非易失性存储器设备的控制器中被驱动的固件中提供控制程序1610。
图12是示出了包括图2和4的存储器***的计算***1800的实施例的框图。参考图12,计算***1800包括中央处理单元1810、随机存取存储器(RAM)1820、用户接口1830、电源1840以及存储器***1500。
存储器***1500通过***总线350电连接到中央处理单元1810、随机存取存储器(RAM)1820、用户接口1830、电源1840。通过用户接口1830提供或通过中央处理单元1830处理的数据被存储在存储器***1500中。存储器***1500包括控制器1600和非易失性存储器设备1700。
在存储器***1500被作为半导体盘设备装配的情况下,计算***1800的引导速度可明显增快。虽然没有示出,但本领域技术人员可以理解,根据本发明的***可进一步包括应用芯片组、照相机图像处理器等等。
根据本发明的实施例的存储器***1500实时响应读或写请求。根据本发明的实施例的存储器***检查指定给存取操作的时间是否结束。如果指定时间已结束,存储器***1500向主机传输指示存取操作完成的响应信号。接着,存储器***暂停存取操作。如果出现空闲时间,则暂停的存取操作被重新开始。
根据本发明的第一实施例的闪存***可通过多线程函数的方式获得加速。另外,根据本发明的第一实施例的闪存***可通过温度传感器和多线程函数的方式获得高的数据可靠性。在第四实施例中将详细描述包括温度传感器的闪存***。
根据本发明的第一实施例的闪存***通过保证LSB数据的可靠性和多线程函数可获得高性能。在第五实施例中将详细描述保证LSB数据可靠性的闪存***。
根据本发明的第一实施例的闪存***通过读计数数据或读历史以及多线程函数的方式可获得高的数据可靠性。在第六和第七实施例中将分别详细描述通过读计数数据或读历史的方式获得高的数据可靠性的闪存***。
根据本发明的第一实施例的闪存***通过多线程函数的方式可获得加速,通过各种方式可获得高的数据可靠性,这将在下面详细描述。通过加速和高的数据可靠性的获得,可提高根据本发明的第一实施例的闪存***的性能。
[实施例2]具有自由页的闪存***
最近,例如数码相机、MP3播放器、移动电话、个人数字助理(PDA)等的便携式电设备被广泛使用。在这些便携式电子设备中普遍使用闪存。原因是闪存是非易失性存储器装置,其具有例如更低的功率损耗以及高集成度的特点。
不像硬盘可以覆写数据,闪存不能覆写数据。即,如果闪存试着覆写数据,首先必须擦除已经存在的数据。这称为写前擦除。在写数据之前,闪存必须返回到初始状态或者擦除状态。
闪存的擦除操作通常比写操作花费相对较长的时间。另外,由于闪存的擦除单位是块,其比写单位大,这会导致闪存擦除写操作所不必要的部分。不故意擦除的部分需要通过再一次的写操作来恢复。
由于在闪存中擦除和写操作的单位不同,写操作的操作性能在速度方面落后于擦除操作的速度。此外,如果闪存在相同的块上执行大约十万次的擦除操作,它的物理耗损可引起不正常的操作。因此,闪存执行耗损均衡操作,以便防止擦除操作在特定的块上被反复执行。
闪存转换层(FTL)是用于克服闪存的这些限制并有效管理它们的软件。FTL从文件***接收逻辑地址,并将其转换为物理地址。此处,物理地址是实际在闪存***中使用的地址。
FTL包括用于管理以上地址映射操作的地址映射表。地址映射表通常在随机存取存储器(RAM)中被驱动。地址映射表记录逻辑地址和其相应的物理地址。地址映射表可根据映射单位改变它的尺寸,并根据映射单元可以有各种映射方法。
典型的映射方法包括页映射方法、块映射方法以及混合映射方法等。页映射方法使用页映射表。页映射表用于通过页单位执行映射操作,并存储逻辑页和其相应的物理页。块映射方法使用块映射表。块映射表用于通过块单位执行映射操作,并存储逻辑块和其相应的物理块。混合映射方法同时使用页映射方法和块映射方法。
通常,一个存储器块包括数十或数百的页。因此,如果使用页映射方法,它的映射表的尺寸比块映射方法的映射表的尺寸要大数十或数百倍。即,页映射方法需要比用于映射表的存储器空间相对更大的空间。
由于块映射方法通过块单位执行映射操作,其映射表的尺寸小于页映射方法的映射表的尺寸。然而,根据块映射方法,由于待写入块的页的位置是固定的,所以需要执行大量的合并操作。
在混合映射方法中,页映射方法用于逻辑块,块映射方法用于数据块。由于混合映射方法使用页和块两种映射方法,缩小了其映射表的尺寸,同样也减少了合并操作的次数。
根据混合映射方法,至少一个逻辑块被分派给一个数据块。即使仅有逻辑块的页的部分被使用,合并操作仍可能执行。例如,如果在一个逻辑块中的页的数量是四,当三个或两个页被使用时,执行合并操作。在该情况中,逻辑块的页使用率减少。逻辑块的低的页使用率是恶化存储器***的性能的因素。
图13是示出使用闪存的存储器***的硬件结构的框图。参考图13,存储器***2100包括中央处理单元(CPU)2110、随机存取存储器(RAM)2120以及闪存2130。
如本领域技术人员所公知的,闪存2130包括多个串结构,每个串结构具有多个存储器单元。一组存储器单元通常被称为单元阵列。闪存2130的单元阵列包括多个存储块。每个存储块包括多个页。每个页包括多个共享一个字线的存储器单元。
在闪存2130中,读和写操作的单位与擦除操作的单位不同。即,闪存2130通过存储器块单位执行擦除操作,并通过页单位执行读或写操作。另外,不像其它半导体存储器,闪存2130不支持覆写操作。因此,闪存2130在写操作之前执行擦除操作。
由于闪存2130的这种特性,需要对于读/写/擦除操作进行额外的管理以便有效地将闪存2130作为硬盘使用。闪存转换层(FTL)是为了上述目的开发的***软件。FTL在RAM 2120上被驱动。
图14是示出图13的存储器***2100的***软件结构的框图。存储器***2100具有软件层结构,应用程序2205、文件***2210、FTL 2220、闪存2230被顺序放在该软件层结构。
FTL 2220从应用程序2205或文件***2210接收逻辑地址LA。FTL 2220接收逻辑地址LA并将其转换为物理地址PA。物理地址PA被提供给闪存2230。FTL 2220具有用于地址转换的地址映射表。地址映射表在图13的RAM2120上被驱动。
FTL 2220的地址映射方法根据映射单位改变。代表性的映射方法包括页映射方法、块映射方法和混合映射方法。
页映射方法通过页单位执行地址映射操作。根据页映射方法,由于通过页单位执行地址转换操作,因此不需要随后的用于页排列的合并操作。相反,页映射方法需要大尺寸的地址映射表。即,为了使用页映射方法,需要大容量RAM 2120。页映射方法不需要合并操作但需要用于页映射表的大容量存储空间。
块映射方法通过存储器块单位执行地址映射操作。块映射方法与页映射方法比较可降低存储器空间的尺寸。相反,块映射方法需要执行大量的用于页排列的合并操作。混合映射方法同时使用页映射和块映射方法,因此可降低映射表的尺寸以及合并操作的数量。下面将更详细描述混合映射方法。
图15是示出图14的存储器***的混合映射方法的框图。参考图15,存储器***300包括文件***2310、FTL 2320、以及闪存2330。FTL 2320从文件***2310接收逻辑地址LA并使用映射表将其转换为物理地址PA。
参考图15,FTL 2320包括块映射表2321和页映射表2322。块映射表2321将逻辑块号(LBN)转换为物理块号(PBN)。页映射表2322用于数据块和逻辑块的页映射。
参考图15,闪存2330包括数据区域2331、逻辑区域2332、自由区域2333以及元区域2334。数据区域2331包括多个块,并存储用户数据。逻辑区域2332包括至少一个逻辑块。逻辑块2332被分配给特定数据块。
在写数据的情况下,数据首先被写入数据块内,接着被写入分配的逻辑块内。接着,为了合并操作,逻辑块和数据块的有效页被复制入新的数据块。
自由区域2333包括多个自由块。当逻辑块不足时,自由块被转为逻辑块。另一方面,在合并操作后将被擦除的数据块或逻辑块被转为自由块。即,通过合并操作任何一个存储块可被转化为数据块、逻辑块、以及自由块。根据合并操作的修改的映射信息被存储在元区域2334中。
图16是示出存储器***的通用映射方法的概念图。参考图16,图15的闪存2330包括具有数据块的数据区域、具有逻辑块的逻辑区域以及具有自由块的自由区域。
数据区域包括具有例如DB100,...,DB109的物理块编号的数据块。逻辑区域包括具有例如LB 200,LB 201以及LB 202的物理块编号的逻辑块。自由区域可包括三个至最大值的物理块。如图16所示,由于所有物理块都分配给逻辑块,所以自由区域是空的。逻辑块LB 201被分配给数据块DB104,并且逻辑块LB 202被分配给数据块DB 108。
如果图15的文件***2310产生数据写请求,则图15的FTL 2320检查是否存在分配给相应数据块的逻辑块。如果存在分配给相应数据块的逻辑块,则使用分配的逻辑块。然而,如果没有分配给相应数据块的逻辑块,则相应的数据块被分配有来自自由块的新的逻辑块。
参考图16,逻辑块LB 200的物理页PPN 0用于存储数据块DB 101的逻辑页页1。数据块DB 101的物理页PPN 1被无效(nullified)。另外,逻辑块LB 201的物理页PPN 0到PPN 1分别用于存储数据块DB 104的逻辑页页0和页2。数据块104的物理页PPN 0到PPN 2被无效。最后,逻辑块LB 202的物理页PPN 0被用于存储数据块DB 108的逻辑页页0。数据块DB108的物理页PPN 0被无效。
图17(a)和图17(b)示出了图16的数据块和逻辑块之间的页映射关系。参考图17(a),逻辑块LB 201被分配给数据块DB 104。每个数据块DB 104和逻辑块LB 201包括四个物理页页0到页3。图17的物理页编号PPN意味着每个存储块的页顺序。
图15的FTL 2320响应于写请求在数据块DB 104中存储的逻辑页上执行写操作。参考图17(a),图15的文件***2310以逻辑页页2到逻辑页页0的顺序请求写操作。此处,逻辑页页2被存储在数据块DB 104的物理页PPN 2中,并且逻辑页页0被存储在数据块DB 104的物理页PPN 0中。
一旦输入针对逻辑页页2的写请求,则执行用于逻辑块LB 201的物理页PPN 0的写操作。数据块DB 104的物理页PPN 2被无效。接着,一旦输入针对逻辑页页0的写请求,则执行用于逻辑块LB 201的物理页PPN 1的写操作。数据块DB 104的物理页PPN 0被无效。
图17(b)是示出了数据块和逻辑块之间的页对应关系的映射表。参考图17(b),数据块DB 104的逻辑页页2被存储在逻辑块LB 201的物理页PPN 0中,并且数据块DB 104的逻辑页页0被存储在逻辑块LB 201的物理页PPN 1中。
然而,如果逻辑块不足,则逻辑块需要被转为自由块。例如,为了存储数据块DB 102的逻辑页页0,新的逻辑块需要被分配到数据块DB 102中。然而,如果没有要分配给逻辑块的自由块,则逻辑块需要被转换为自由块。
图18是示出了通过合并逻辑块和数据块而产生新的数据块的方法的视图。参考图18,逻辑页页2和页0(分别存储在逻辑块LB 201的物理页PPN0和PPN 1中)以及逻辑页页1和页3(分别存储在数据块DB 104的物理页PPN 1和PPN 3中)被复制到新数据块DB 100。
首先,逻辑块LB 201的逻辑页页0被复制到新数据块DB 110的物理页PPN 0。接着,数据块DB 104的逻辑页页1被复制到新的数据块DB 110的物理页PPN 1。接着,逻辑块LB 201的逻辑页页2被复制到新的数据块DB110的物理页PPN 2。接着,数据块DB 104的逻辑页页3被复制到新的数据块DB 110的物理页PPN 3。接着,逻辑块LB 201和数据块DB 104被擦除并被转换为自由块。
根据图18的映射方法,逻辑块LB 201和数据块DB 104的有效页通过合并操作被复制到新的数据块DB 110。逻辑页页0到页3被顺序写入新的数据块DB 110。将逻辑页页0到页3顺序写入一个块中被称为按原顺序(in-place order)。相反,任意的将逻辑页页0到页3写入一个块中被称为不按原顺序或随机放置顺序。
如果写请求是以从逻辑页页0到逻辑页页3的顺序,则这些逻辑页页0到页3被顺序写入逻辑块LB 201的物理页PPN 0到PPN 3中。不需额外的页复制,写入逻辑块LB 201的页可直接注册为数据块。这是因为逻辑块LB201排列页以适合于按原顺序。
然而,如果写请求是随机的,则必须需要用于满足逻辑页顺序的页复制处理。在图18中,需要四个页复制处理。另外,在页复制操作之后,需要用于逻辑块LB 201和数据块DB 104的两个擦除处理。同样的,图16的映射方法需要大量的页复制处理以便满足页顺序。此外,在页复制操作之后,需要两个块擦除操作以便擦除逻辑块LB和数据块DB。页复制操作和块擦除操作恶化了存储器***的速度。
相反,在图18中,逻辑块LB 201仅仅使用四个页中的两个,并根据合并操作将逻辑块LB 201转换为自由块。在一些例子中,仅逻辑块LB 201的一个页被使用,接着逻辑块LB 201可被转换为自由块。根据图17的1∶2映射方法,逻辑块LB 201需要频繁地被转换为自由块。合并操作是恶化存储器***性能的因素。
图19是示出根据本发明的存储器***的不对称映射方法的概念图。参考图19,图15的闪存303包括具有数据块的数据区域、具有逻辑块的逻辑区域以及具有自由块的自由区域。
数据区域包括具有例如DB 100,...,DB 109的物理块编号的数据块。由于没有分配给数据块的逻辑块,所以逻辑区域是空的。自由区域可包括三个到最大个数的物理块。如图19中所示的,由于没有分配给数据块的逻辑块,所以自由区域包括三个自由块FB 300、FB 301、和FB 302。
根据本发明的实施例,数据块的某个物理页作为空物理页被保存。例如,在数据被顺序存储在数据块DB 100的物理页PPN 0到PPN 2中之后,数据被存储在下一个数据块DB 101的物理页PPN 0中。如稍后将描述的,在数据块中,空的物理页用于存储另一个物理页。
如果图5的文件***2310请求数据写操作,图15的FTL 2320确定在相应数据块中是否存在空的物理页。如果在相应数据块中存在空的物理页,则数据被存储在空物理页中。然而,如果不存在空的物理页,则相应的数据块被分配来自自由块的新的逻辑块。如果不存在可用的自由块,则将执行合并操作。
如果文件***2310请求关于数据块DB 101的逻辑页页1的写操作,则响应于写请求,FTL 2320检测在数据块DB 101中是否存在空的物理页。参考图19,由于在数据块DB 101中存在空的物理页,则在物理页PPN 3中存储逻辑页页1。另外,物理页PPN 1被无效。
另外,如果文件***2310请求关于数据块DB 104的逻辑页页2的写操作,则FTL 2320响应于写请求检测数据块DB 104中是否存在空的物理页。参考图19,由于在数据块DB 104中存在空的物理页,则逻辑页页2被存储在物理页PPN 3中。另外,物理页PPN 2被无效。
最后,如果文件***2310请求关于数据块DB 108的逻辑页页0的写操作,则FTL 2320响应于写请求检测数据块DB 108中是否存在空的物理页。参考图19,由于在数据块DB 108中存在空的物理页,则在物理页PPN 3中存储逻辑页页0。另外,逻辑页PPN 0被无效。
如上所述,通过在数据块中的额外的物理页,可以减少执行的合并操作的数量。参考图19,由于每个数据块DB 101、DB 104和DB 108包括空的物理页,则不用合并操作就可以在其中存储逻辑页。这提高了存储器***的性能。
合并操作需要的时间比页复制操作需要的时间长几十倍。当数据块包括一个空的物理页时的合并操作的数量是不存在空的物理页时的合并操作的数量的一半。即,包括一个空物理页的数据块执行仅仅一次合并操作,而普通的数据块执行两次合并擦作。因此,由于合并操作的数量减少了,就能提高存储器***的速度。
由于相同的原因,当数据块包括N个空物理页时的合并操作的数量是当不存在空的物理页时的合并操作的数量的1/N+1。即,具有N个空物理页的数据块执行仅仅一次合并操作,而典型的数据块执行N+1次合并操作。因此,由于N+1次合并操作被减少,可提高存储器***的速度。在图19的实施例中,数据块示范性地包括一个空物理页,但本发明不限于此。根据本发明的数据块可以包括任意数量的空物理页。
图20是示出根据本发明的另一个实施例的不对称映射方法的流程图。在该实施例中,根据数据存储模式确定数据是否存储在空物理页中或者在所分配的逻辑块中。参考图20,在操作S2110,从文件***输入写请求。在操作S2120,FTL响应于写请求检测数据写模式。更详细地,FTL确定数据是否被随机存储在各自不同的数据块(在下文中称为随机写)中或者顺序存储在一个数据块的物理页中(在下文中称为顺序写)。
当数据被随机存储在各自不同的数据块中时,进入操作S2130。当数据被顺序存储在一个数据块的物理页中时,进入操作S2140。在操作S2130,确定数据块中是否存在空的物理页。如果在数据块中没有空的物理页,进入操作S2140,当存在空物理页时,进入操作S2150。在操作S2150,数据被存储在空的物理页中。在操作S2140,逻辑块被分配给数据块。在操作S2160,数据被存储在所分配的逻辑块中。
如上所述,由于根据数据写模式确定分配逻辑块与否,可在顺序写时防止性能恶化。将结合下述附图更详细地描述随机写和顺序写。
图21是示出了图20的随机写的视图。参考图21,文件***首先需要关于数据块DB 101的逻辑页页1的写操作。在该情况中,由于数据块DB 101包括空的物理页PPN 3,所以逻辑页页1被存储在物理页PPN 3中。接着,物理页PPN 1被无效。
接着,文件***首先需要关于数据块DB 104的逻辑页页2的写操作。在该情况中,由于数据块DB 104包括空的物理页PPN 3,所以逻辑页页2被存储在物理页PPN 3中。物理页PPN2被无效。
接着,文件***首先需要关于数据块DB 108的逻辑页页0的写操作。在该情况中,由于数据块DB 108包括空的物理页PPN 3,所以逻辑页页0被存储在物理页PPN 3中。物理页PPN 0被无效。
最后,文件***首先需要关于数据块DB 104的逻辑页页0的写操作。在该情况中,由于数据块DB 104不包括任何空的物理页,所以逻辑块LB 200被分配给数据块DB 104。此外,逻辑页页0被存储在逻辑块的物理页PPN 0中。数据块DB 104的物理页PPN 0被无效。
根据该实施例,在随机写的情况中,首先使用在数据块中的空物理页,并且如果没有空的物理页,则逻辑块被分配给数据块。通过相同的方法,可减少合并操作的数量。
如上所述,合并操作需要的时间通常比页复制操作需要的时间长几十倍。当数据块包括一个空的物理页时的合并操作的数量是不存在空的物理页时的合并操作的数量的一半。即,包括一个空的物理页的数据块执行仅仅一次合并操作,而普通的数据块执行两次合并操作。因此,由于合并操作的数量减少,可提高存储***的速度。
由于相同的原因,当数据块包括N个空的物理页时的合并操作的数量是没有空的物理页时的合并操作的数量的1/N+1。即,具有N个空物理页的数据块仅仅执行一次合并操作,而典型的数据块执行N+1次合并操作。因而,由于减少了N+1次合并操作,从而提高了存储器***的速度。在图20的实施例中,数据块仅仅包括一个空的物理页,但是本发明并不限于此。根据本发明的数据块可包括任意数量的空物理页。
参考图21,一个逻辑块被分配给一个数据块。即,对于一个外部逻辑块,使用两个内部物理块(例如数据块DB 104和逻辑块LB 200)。在此意义中,图21的混合映射方法可称为1∶2映射方法。根据1∶2映射方法,逻辑块LB 200可仅记录被包括在数据块DB 104中的页数据。然而,本发明的范围不限于此。根据本发明,多个逻辑块可分配给一个数据块。即,可使用1∶K映射方法。例如,所有的逻辑块可分配给一个数据块。另外,在该实施例中假设自由块是三个,但对于本领域的技术人员显而易见的是本发明不限于此。
图22是示出图20的顺序写的视图。参考图22,文件***请求关于数据块DB 102的逻辑页页0、页1、页2的写操作。在该情况中,FTL识别数据写模式是顺序写。因而,FTL响应于来自文件***的写请求,向数据块DB 102分配逻辑块LB 201。数据块DB 102的逻辑页页0、页1、和页2分别存储在逻辑块LB 201的物理页PPN 0、PPN 1、和PPN 2上。此外,数据块DB 102的物理页PPN 0、PPN 1、和PPN 2被无效。
如上所述,如果数据写操作在一个数据块上执行,则逻辑块被分配给数据块。由于该方法,可提高顺序写的性能。
如上所提及的,由于根据本发明的存储器***使用不对称映射方法,逻辑块的页使用率可被提高。另外,由于本发明根据写数据模式,确定是否分配逻辑块,就能提高顺序写的性能。此外,由于本发明具有逻辑块的高的页使用率,所以比较于典型的方法,可减少合并和块擦除操作的数量。因此,可增强产品的耐久性。
然而,如果所有的自由块都被分配给数据块,需要通过合并操作获得它们。如上所论及的,通过合并数据块和分配给其的逻辑块,可获得自由块。然而,哪个数据块和逻辑块被合并成为重要的论题。根据本发明的实例,为了合并操作,优先选择使得合并操作没有困难地执行的数据块和逻辑块。
图23示出了数据块中的所有逻辑页页0、页1、和页2仅被逻辑块更新一次的情况的视图。参考图23,存储在逻辑块中的数据与存储在数据块中的数据是一样的。因此,通过将逻辑块转换为数据块不需要页复制操作就可执行合并操作。该合并操作被称为交换合并(swap merge)。
图24是示出数据块中的部分逻辑页被逻辑块更新的情况的视图。参考图24,数据块的逻辑页页0和页1已经被更新。因此,数据块的逻辑页页2被存储在逻辑块的物理页PPN 2中,并且逻辑块被转换为数据块,以便能够执行合并操作。在该情况中,在合并操作期间执行一次页复制操作。该合并操作被称为复制合并。
图25是示出数据块中的部分逻辑页被逻辑块更新的情况的视图。参考图25,逻辑页页0和页2被存储在逻辑块中,逻辑页页1被存储在存在的数据块中。因此,逻辑页页0、页1和页2被存储在新的数据块中,该存在的数据块和逻辑块被擦除并转换为自由块。在该情况中,在合并期间,执行三个页复制操作。该合并被称为简单合并。
根据图23到25的合并操作,页复制操作的数量不同。在本发明的实施例中,首先执行需要最小数量的页复制的合并操作。
图26是示出根据本发明的带有闪存设备的计算***2400的框图。参考图26,计算***2400包括处理器2410、存储器控制器2420、输入设备2430、输出设备2440、非易失性存储器2450以及主存储器2460。实线代表***总线,通过***总线传输数据或命令。
存储器控制器2420和非易失性存储器2450可组成存储卡。处理器2410、输入设备2430、输出设备2440以及主存储器2460可组成主机,该主机使用存储卡作为存储设备。
根据本发明的计算***2400通过输入设备2430(例如键盘、照相机等)从外部接收数据。输入的数据可以是用户命令或者例如照相机的图像数据的多媒体数据。输入的数据被存储在非易失性存储器2450或主存储器2460内。
处理器2410处理的结果被存储在非易失性存储器2450或主存储器2460内。输出设备2440输出存储在非易失性存储器2450或主存储器2460内的数据。输出设备2440以人类可察觉的形式输出数字数据。例如,输出设备2440包括显示器或扬声器。根据本发明的不对称映射方法将应用到非易失性存储器2450。当非易失性存储器2450的速度和耐久性被提高时,计算***2400的速度和耐久性也与之成比例地提高。
可使用各种形式的封装对非易失性存储器2450和/或存储器控制器2420进行封装。例如,使用诸如下列的封装来装载非易失性存储器2450和/或存储器控制器2420,这些封装例如层叠封装(PoP)、球栅阵列(BGA)、芯片尺寸封装(CSP)、塑料引线芯片载体(PLCC)、塑料双列直插式封装(PDIP)、晶片中管芯封装(Die in Waffle Pack)、晶圆中管芯形式(Die in Wafer Form)、板上芯片(COB)、陶瓷双列直插式封装(CERDIP)、塑料四方扁平封装(MQFP)、薄型四方扁平封装(TQFP)、小外形集成电路(SOIC)、收缩型小外形封装(SSOP)、薄型小外形封装(TSOP)、***级封装(SIP)、多芯片封装(MCP)、晶圆级制作封装(WFP)、晶圆级堆叠封装(WSP)等。
虽然没有在图中示出,但是对于本领域技术人员显而易见的是,需要电源支持计算***2400的操作所必须的电能。此外,如果计算***2400是移动设备,则额外需要电池以便向计算***2400提供电源。
图27是示出根据本发明的实施例的固态盘(SSD)***的结构的框图。参考图27,SSD***2500包括SSD控制器2510和闪存2520到2523。
根据本发明的半导体存储器***可应用于SSD。最近,用于替代硬盘驱动器(HDD)的SSD变得受欢迎,并被广泛用于下一代存储器市场。SSD是使用例如闪存的存储器芯片来存储数据的数据存储设备,而非典型的HDD中的可旋转叠片。与机械地操作HDD相比,SSD更快速,且物理上对于外部碰撞更坚固,并且具有更低的功率消耗。
参考图27,中央处理单元(CPU)2511确定其是在闪存中存储来自主机的数据,还是从闪存中读取所存储的数据并在接到来自主机的命令时将其传输到主机。CPU 2511向主机发送数据。根据CPU 2511的控制,ATA接口2512用于与主机交换数据。ATA接口2512从主机取得命令和地址并通过CPU总线将其传输到CPU 2511。根据CPU 2511的控制,通过ATA接口2512输入到主机的数据或者将被传输到主机的数据通过SRAM高速缓存2512而非CPU总线传递。
SRAM高速缓存2513暂时存储在主机和闪存2520到2523之间传输的数据。另外,SRAM高速缓存2513用于存储将被CPU 2511操作的程序。SRAM高速缓存2513可作为一种缓冲存储器,但不需要包括SRAM。快闪接口2514与用作存储设备的非易失性存储器交换数据。可配置快闪接口2514以支持NAND闪存、ONE-NAND闪存、或者多电平闪存。
根据本发明的半导体存储器***可作为便携式存储设备使用。此外,半导体存储设备可作为MP3、数字照相机、个人数字助理(PDA)、电子书等的存储设备使用。另外,半导体存储器***可作为数字电视机或者计算机的存储设备使用。
图28是根据本发明的实施例的存储器***的框图。在图28的存储器***中,存储器2610和存储器控制器2620组成卡2600。例如,卡2600可与闪存卡是一样的。即,卡2600可满足例如数码照相机、个人计算机等电子设备的特定工业标准。可以理解的存储器控制器2620基于从其它外部设备接收的控制信号控制存储器2610。
图29是根据本发明的另一个实施例的存储器***的框图。图27的SSD***是便携式设备2700。便携式设备2700可为MP3播放器、视频播放器以及视频和音频播放器的组合。如图29中所示的,便携式设备2700包括存储器2710和存储器控制器2720。便携式设备2700可包括编码器和解码器(EDC)2730、显示组件2740以及接口2750。
EDC 2730处理的数据(视频、音频等)通过存储器控制器2720输入到存储器2710中,并从存储器2710输出。如图27的虚线所示的,数据直接从EDC 2730输入到存储器2710,和/或直接从存储器2710中输出到EDC2730。
EDC 2730可编码数据并将它们存储在存储器2710中。例如,EDC 2730可执行音频数据的MP3编码并将它们存储在存储器2710中。在另一个方法中,EDC 2730可执行视频数据的MPEG编码(例如MPEG2、MPEG4等)并将它们存储在存储器2710中。另外,EDC 2730可包括多个基于其它数据格式来编码其它类型数据的编码器。例如,EDC 2730可包括用于音频数据的MP3编码器和用于视频数据的MPEG编码器。
EDC 2730解码存储器2710的输出。例如,EDC 2730可执行从存储器2710输出的音频数据的MP3解码。在另一个方法中,EDC 2730可对存储器2710输出的视频数据执行MPEG解码(例如MPEG2、MPEG4等)。此外,EDC 2730可包括多个根据其它数据格式来解码其它类型数据的解码器。例如,EDC 2730可包括用于音频数据的MP3解码器和用于视频数据的MPEG解码器。
可以理解的是EDC 2730包括唯一的解码器。例如,已经编码的数据可被EDC 2730接收并可传递到存储器控制器2720和/或存储器2710。此外,通过通用处理器(未示出)以软件实现EDC 2730并使用它。
EDC 2730通过接口2750接收用于编码的数据或者接收已经编码的数据。接口2750可以遵循公知的标准(例如固件、USB等)。接口2750可包括至少一个接口。例如,接口2750可包括固件接口、USB接口等。来自存储器2710的数据可通过接口750输出。
显示组件2740可向用户显示数据,该数据从存储器输出和/或被EDC2730解码。例如,显示组件2740可包括用于输出音频数据的扬声器插口,和用于输出视频数据的显示屏。
根据本发明的第二实施例的闪存***可通过数据块中的至少一个自由页获得加速。另外,根据本发明的第二实施例的闪存***通过温度传感器和自由页可获得高的数据可靠性。将在第四实施例中详细描述包括温度传感器的闪存***。
根据本发明的第二实施例的闪存***通过保证LSB数据的可靠性和通过自由页可获得高性能。将在第五实施例中详细描述保证LSB数据的可靠性的闪存***。
根据本发明的第二实施例的闪存***通过读计数数据或者读历史的方式和通过自由页获得高的数据可靠性。将分别在第六和第七实施例中详细描述通过读计数数据或者读历史的方式获得高的数据可靠性的闪存***。
根据本发明的第二实施例的闪存***,通过自由页的方式获得加速,通过各种方式获得数据可靠性,这将在下面详细描述。通过加速和高的数据可靠性的获得,可提高根据本发明的第二实施例的闪存***的性能。
[实施例3]使用微代码的闪存***
使用硬布线(Hard-wired)逻辑控制闪存的所有指令序列来设计存储器控制器,在某种程度上增强存储器控制器性能。设计为带有硬布线逻辑的存储器控制器是复杂的,扩展能力低,并难以有效地管理多个闪存。
另一方面,提高存储器控制器的扩展能力的一个方式是通过固件控制闪存的所有指令序列。根据该方法设计存储器控制器易于实现但是性能低。因此,解决以上描述的不利方面需要两种方法。换句话说,需要易于扩展带有高性能的闪存控制器。同样,例如NAND闪存的单个产品(single-product)存储器由主机的CPU控制。例如SD和MMC卡的产品包括在存储器控制器内部。
图30和31示出了用于控制典型的闪存设备的***层结构。
图30是示出了具有纯NAND存储器的***层结构的示范性实施例,图31是示出了被管理的NAND存储器的***层结构的示范性实施例。纯NAND存储器是单个产品存储器,例如NAND或OneNAND。纯NAND被外部处理器(例如主机的CPU)所控制。例如ARM926或者ARM1136的相对复杂的处理器被用作外部处理器。被管理的NAND是闪存,例如,SD、MMC、LBA NAND闪存。被管理的NAND被闪存中的内部存储器控制器所控制。例如ARM7TDMI的相对简单的处理器用做闪存内的NAND存储器控制器。
参考图30,纯NAND的***层结构3010包括用户应用程序3011、文件***3012、块设备接口3013、闪存转换层FTL 3014到3016以及闪存3017。用户应用程序3011是在文件***3012中被驱动的实用程序(utility)。用户应用程序3011通过使用高速下行链路分组存取(HSDPA)接收内容的下载,该高速下行链路分组存取是第三代移动通信技术。用户应用程序3011被例如ARM11或ARM9的主机处理器所驱动。文件***3012是设计用于在闪存3017内读取和写入数据的规则。文件***3012的一些实例是在DOS或Windows中运行的FAT16、FAT32和NTFS,在Linux中运行的ext2、raiserFS以及ext3。块设备接口3013连接文件***3012和FTL 3014到3016。闪存转换层3014到3016包括扇区传输层、块管理层和低级设备驱动器。FTL 3014到3016控制物理闪存3017以便在文件***3012中使用。对于纯NAND,主机的CPU直接控制闪存3017。
参考图31,被管理的NAND***层结构3020包括用户应用程序3021、文件***3022、块设备接口3023、闪存转换层3024到3026、以及闪存3027。对于被管理的NAND,主机的CPU控制用户应用程序3021、文件***3022和块设备接口3023,并且被管理的NAND直接控制FTL 3024到3026以及闪存3027。基于主机的CPU的高计算性能和充裕的存储器(RAM)资源,纯NAND的FTL被复杂而有效地操作。然而,主机的CPU花费大量的资源(即CPU的负载和存储器)来操作FTL。换句话说,文件***中的写性能非常依赖于CPU的资源,这些资源被分配以便执行FTL。因而,在多任务条件下,在CPU资源给了具有比需要FTL性能的任务更高的优先级的任务的情况下,写性能就会快速地恶化。
在另一方面,对于被管理的NAND,由于其使用除了用于FTL的之外的内部处理器,可保证写性能高于预定值。然而,当每个闪存包括控制器时,也增加了成本。同样,当被管理的NAND通过更简单的内部处理器和更少的RAM资源执行更简单的FTL时,它就包含了比纯NAND更低效率的合并操作。因此,难于对用于被管理的NAND的文件***的写性能进行最优化。
图32是示出了用于每个NAND闪存的基本操作的执行时间比例的图。参考图32,在NAND闪存的基本操作中,最经常使用的操作是“其它操作”ETC 3034。“其它操作”是除了写操作、读操作和复制操作以外的操作。“其它操作”的例子是擦除操作和擦除校验操作。除了“其它操作”,在NAND闪存的基本操作中其次被经常使用的操作是写操作3031。再其次被经常使用的是复制操作3032,接着是读操作3033。对于被管理的NAND,闪存的基本操作不影响主机CPU的负载。在另一方面,对于纯NAND,闪存操作的基本操作对主机CPU的负载影响巨大。
因此,根据本发明的示例实施例的存储器***包括加速器,加速器仅控制NAND闪存的基本操作中最经常使用的操作,以降低主机CPU的过负载。根据本发明的示范性实施例的加速器将参照图35详细描述。根据本发明的示范性实施例的存储器***包括控制NAND闪存的基本操作的写操作和复制操作的加速器。在闪存设备中不能执行覆写操作。因而,闪存设备执行合并操作而非覆写操作。
遵循逻辑映射的闪存设备的合并操作将结合图33和图34详细描述。参考图33,数据存储设备的闪存被分为数据区域、逻辑区域和元区域。
根据逻辑映射,在逻辑区域的存储块被分别指派给数据区域中的存储块的部分存储块。例如,假设闪存包括9个存储块PBN0到PBN8。在9个存储块中,分别地,存储块PBN0到PBN4被指定作为数据区域,存储块PBN5到PBN7作为逻辑区域,并且存储块PBN8作为元区域。逻辑区域的存储块PBN7被指定作为空白块。在数据将被写入数据区的存储块PBN0中的情况中,数据不直接写入存储块PBN0,而是写入与存储块PBN0相应的逻辑区域的存储块PBN5中。在数据将被写入存储块PBN1中的情况中,由于与存储块PBN1相应的逻辑区域的存储块没有被指定,合并操作将按如下所述来执行。在逻辑区域存在空白存储块PBN7的情况中,则存储在逻辑区域的存储块PBN5的有效数据被复制到空白存储块PBN7中。另外,存储在与存储块PBN5相应的数据区域的存储块PBN0中的有效数据被复制到存储块PBN7中。
在另一个方面,根据合并操作的存储器块的映射信息可被改变,改变的映射信息由FTL管理并被存储在闪存的元区域PBN8中。
图34示出了根据逻辑映射的合并操作。参考图34,逻辑块PBN5和数据块PBN0的有效页被复制到新的数据块PBN7中。此处,由于逻辑块PBN5是最近被写入的数据,所以可能它就是用户想要写入的数据,但是写入在数据块PBN0中的数据已经被擦除了,即,它可能是无效数据。在该情况中,FTL不能确定写入数据块PBN0中的数据是有效的还是无效的。换言之,数据块PBN0的有效页对于FTL可能是有效页,但是对于文件***它可能是无效页。例如,如果写入数据块PBN0的第二有效页中的文件从文件***的角度出发已经是被擦除的数据了,则相应页的合并操作从文件***的角度出发是没有必要的操作。由于合并操作是按照FTL的需要而执行的操作,所以主机不能检测到是否执行合并操作。因此,由于被管理的NAND被所包含的处理器控制而没被主机的CPU控制时,所以它执行无效果的合并操作。
图35是根据本发明的示范性实施例的存储器***的框图。
参考图35,根据本发明的存储器***3100包括主机处理器3110、第一存储器设备3120以及第二存储器设备3130、第一加速器3140和第二加速器3150以及***总线3160。第一存储器设备3120包括第一ONE-NAND闪存3121和第一接口3122。第二存储器设备3130包括第二ONE-NAND闪存3131和第二接口3132。第一加速器3140包括控制序列发生器Ch.A 3141和第一DMA 3142。第二加速器3150包括控制序列发生器Ch.B 3151和第二DMA3152。微代码是多个用于控制存储器的指令,包括在第一和第二存储器设备3120和3130中。微代码包括多个用于控制第一和第二存储器设备3120和3130的基本操作(例如,写、读、复制和擦除操作)的指令。根据本发明的微代码还包括“读和加载”、“读和检验”、“写”、“等待事件”以及“结束”作为基本指令,“读和加载和索引增加”、“移位”、“加”、“减”、“或”、“与”、“向左移”、“向右移”、“交换”、“向后跳”、“如果相等向后跳”、“如果不相等向后跳”、“向前跳”、“如果相等向前跳”、“如果不相等向前跳”、“向后跳和链接”、“向前跳和链接”、“返回”以及“块存储传递”。另外,根据本发明的加速器通过微代码执行FTL的低级设备驱动器(LLD)的LLD_Copy、LLD_Write函数。
主机处理器3110通过***总线3160分别向第一和第二加速器3140和3150中的控制序列发生器Ch.A3141和控制序列发生器Ch.B 3151传递微代码。主机处理器3110传递的微代码被保存在控制序列发生器Ch.A 3141和Ch.B 3151中的码存储器(未示出)中。保存在序列发生器码存储器中的微代码被控制序列发生器Ch.A 3141和Ch.B 3151取得并执行。第一加速器3140的控制序列发生器Ch.A 3141执行微代码。响应于控制序列发生器Ch.A3141的已执行的微代码,第一DMA 3142读取第一ONE-NAND闪存3121的数据,并通过第一接口3122将读取的数据传递到主机处理器3110。第二加速器3150的操作与第一加速器3140的操作相同。换句话说,第二加速器3150通过微代码控制第二存储器设备3130的基本操作。第二加速器3150的控制序列发生器Ch.B 3151的操作与第一加速器3140的控制序列发生器3141的操作相同。因而,为了简短,将省略冗余描述。
根据本发明的存储器***使用微代码控制安装在存储器***中的多个存储器设备。由于这个原因,可降低存储器***3100中的主机处理器3110的负载。
图36是示出图35的存储器***的驱动方法的流程图。
参考图35和36,主机CPU 3110通过***总线3160在第一和第二加速器3140和3150的代码存储器中载入微代码(S3001)。主机CPU 3110通过***总线3160载入第一和第二加速器3140和3150的参数存储器(未示出)(S3002)。参数包括第一和第二存储器3121和3131的源地址和目的地址。主机CPU 3110发布第一和第二加速器3140和3150的驱动指令,并保持睡眠模式,直至出现来自第一和第二加速器3140和3150的中断(S3003)。第一和第二加速器3140和3150执行与参数相应的微代码以产生中断(S3004)。第一加速器3140和第二加速器3150检查中断状态(S3005)。
本发明在纯NAND中包含闪存加速器,以增强文件***中的写性能。在根据本发明的存储器***中,主机CPU执行带有更复杂计算和更多使用存储器的任务,并且通过加速器执行更少使用存储器的任务。因而,在本发明中,在FTL写操作期间,可以减少合并和程序操作所需要主机CPU的使用。同样,根据本发明的存储器***降低了在目前可用的主机CPU的资源数量上的闪存的写性能的可靠性。
图37是在纯NAND中主机CPU操作的时序图。
参考图37,CI表示主机CPU进行的闪存指令的发布任务。SC表示主机CPU进行闪存的状态检查。tR或tPROG是主机CPU正在执行闪存指令。换句话说,tR是从存储器单元中读取数据直至数据被传递到锁存寄存器的时间段,tPROG是数据从锁存寄存器写入存储器单元的编程时间段。
主机CPU并行地执行任务A和任务B。任务A与闪存的基本操作不相关,任务B用于控制闪存的基本操作。主机CPU在时间共享***中执行任务A和任务B。换句话说,主机CPU在执行任务A的同时执行任务B。
图38是图35的CPU和加速器的时序图。参考图38,CI是加速器进行的闪存指令的发布操作,SC是加速器对闪存的状态检查,APL是加速器的参数载入操作,ASC是主机CPU进行的加速器的状态检查,并且tR或tPROG是加速器对闪存指令的繁忙等待操作。换句话说,tR是从存储器单元读取数据并且数据被传输到锁存寄存器的时间段。tPROG是数据从锁存寄存器写入存储器单元的编程时间段。
主机CPU并行地执行任务A和任务B。任务A是与闪存的基本操作不相关的操作,任务B是用于控制闪存的基本操作的操作。主机CPU彼此独立地执行任务A和任务B。因此,本发明可减少主机CPU的负载。
图39是比较图37和38的操作性能的图。
参考图37到图39,图的X轴是分配给CPU用于驱动FTL的资源的数量,Y轴是FTL的写性能。换句话说,X轴相应于主机CPU的负载,Y轴相应于操作性能。实线表示图37中所示的操作性能。虚线表示图38中所示的操作性能。换句话说,当分配给CPU的资源数量增加时,作为图37的操作性能的实线算术地增加,而作为图38的操作性能的虚线几何地增加。
图40是示出根据本发明的第二示范性实施例的存储器***的框图。
参考图40,根据本发明的存储器***3200包括主机处理器3210、第一存储器设备3220和第二存储器设备3230、第一加速器3240和第二加速器3250以及***总线3260。第一存储器设备3220包括第一NAND闪存3221和第一接口3222。第二存储器设备3230包括第二NAND闪存3231和第二接口3232。第一加速器3240包括控制序列发生器Ch.A 3241、第一DMA 3242以及第一错误校正代码块3243。第二加速器3250包括控制序列发生器Ch.B3251、第二DMA 3252以及第二错误校正代码块3253。
微代码是用于控制包括在第一存储器设备3220和第二存储器设备3230中的存储器的多个指令。微代码包括用于控制第一和第二存储器设备3220和3230的基本操作(例如,写、读、复制和擦除操作)的多个指令。主机处理器3210通过***总线3260向第一和第二加速器3240和3250中的控制序列发生器Ch.A 3241和Ch.B 3251传递微代码。通过主处理器3210传递的微代码被存储在控制序列发生器Ch.A 3241和Ch.B 3251的代码存储器(未示出)中。存储在序列发生器代码存储器中的微代码因而被控制序列发生器Ch.A 3241和Ch.B 3251取得并执行。
第一错误校正代码块3243校正第一NAND闪存3221中的数据的错误。第一设备DMA 3242通过第一接口3222响应于控制序列发生器Ch.A 3241执行的微代码读取第一NAND闪存3221中的数据,并向主机处理器3210传递被第一错误校正代码块3243校正的数据。第二加速器3250的操作与第一加速器3240的操作一样。换句话说,第二加速器3250使用微代码控制第二存储器设备3230的基本操作。
闪存设备是非易失性存储器设备,即使在断电的时候也能够保存被存储的数据。作为例如蜂窝电话机、PDA数字照相机、便携式游戏控制台以及MP3的移动设备被广泛地使用,闪存被更广泛地用作代码存储器和数据存储器。闪存设备也可应用于家用电器,例如HDTV、DVD、路由器和GPS。在图41中,简单描述了包括本发明的存储器***的计算机***。本发明的计算***3300包括电连接到***总线3700、用户接口3340、例如基带芯片组的调制解调器3320、存储器控制器3310和闪存设备3360的CPU 3330。存储器控制器3310控制闪存设备3360。在闪存3360中,CPU 3330处理的或将要处理的N位数据(N是大于等于1的正数)将被存储器控制器3310存储。在根据本发明的计算***是移动设备的情况中,则进一步提供用于供应计算***的操作电压的电池3350。虽然没在图中示出,对于本领域技术人员显而易见的是,本发明的计算***可进一步包括应用芯片组、照相机图像处理器(CIS)、或者移动DRAM。存储器控制器3310和闪存设备3360,例如,可进一步包括使用非易失性存储器的固态驱动器/盘(SSD)来存储数据。在美国专利No.2006-0152981中描述的SSD的实例,在此领域作为引用加以包括。同样,存储器控制器3310和闪存设备3360可包括存储卡中的非易失性存储器,以便存储数据。
图42是示出了根据本发明的其它示范性实施例的基于存储器的存储设备的框图。
在图42中描述的基于存储器的存储设备3400被配置以便存储器3420和存储器控制器3410组成存储卡。基于存储器的存储设备3400可以是例如闪存卡的存储卡。换句话说,基于存储器的存储设备3400可以是符合工业标准的存储卡,以便使用例如个人计算机的电子设备。存储器控制器3410可基于从另一个设备(例如外部设备)接收的控制信号通过基于存储器的存储设备3400来控制存储器3420。
根据本发明的第三实施例的闪存***通过微代码可获得加速。另外,根据本发明的第三实施例的闪存***通过温度传感器和微代码可获得高的数据可靠性。包括温度传感器的闪存***将在第四实施例中详细描述。
根据本发明的第三实施例的闪存***通过保证LSB数据的可靠性和通过微代码可获得高性能。保证LSB数据可靠性的闪存***将在第五实施例中详细描述。
根据本发明的第三实施例的闪存***通过读计数数据或读历史的方式以及通过微代码可获得高的数据可靠性。在第六和第七实施例中分别详细描述了通过读计数数据或读历史的方式获得高的数据可靠性的闪存***。
根据本发明的第三实施例的闪存***通过微代码可获得加速,通过各种方式可获得高的数据可靠性,这将在下面详细描述。通过加速和高的数据可靠性的获得,可提高根据本发明的第三实施例的闪存***的性能。
II闪存***的数据可靠性
[实施例4]包括温度传感器的闪存***
通常,存储器***包括用于存储数据的半导体存储器和用于控制半导体存储器操作的存储器控制器。半导体存储器设备被分为例如DRAM、SRAM等等的易失性存储器以及例如EEPROM、FRAM、PRAM、MRAM、闪存等等的非易失性存储器。当断电时易失性存储器丢失其数据,但是非易失性存储器即使在断电时也保存其数据。在非易失性存储器中,由于具有了高的编程速度、低功率消耗、大容量数据存储等等的优点,闪存被广泛用做数据存储介质。
闪存具有多个用于存储数据的存储器单元。每个存储器单元存储一个位的数据或多个位的数据。存储单个位数据的存储器单元通过阈值电压分布有两个电平(或状态)。存储多个位数据的存储器单元通过阈值电压分布有四个或多个电平(或状态)。
闪存通过电平(或状态)之间的预定的余量对其中的数据进行编程。这是为了在外部环境改变了存储器单元的阈值电压分布时防止读数据失败。通常,存储器单元的阈值电压会被例如温度、湿度、压力、电磁力的外部环境改变。例如,当在高温或低温下编程闪存单元或者在高温或低温下读取闪存单元时,阈值电压可能改变。
同样,闪存的存储器单元的特点是阈值电压随外部温度而改变。当在存储器单元中存储多位数据时,闪存单元的温度特性会更加有问题。存储在存储单元中的位数量越多,读余量变得更小了。由于更小的读余量,如果存储单元的阈值电压被改变,则其进一步增加了产生读失败的机率。
图43是示范性示出根据本发明的存储器***的框图。参考图43,存储器***4100包括闪存4110和存储器控制器4120。根据本发明的存储器***4100可以修整受温度的改变影响的闪存4110的偏置电压(例如写或校验电压)的电平。
闪存4110根据存储器控制器4120的控制进行擦除、写或者读操作。闪存4110包括多个能够存储数据的存储器单元。闪存4110的存储器单元的阈值电压是通过温度可变的。换句话说,当在低温和高温下编程同样的数据时,存储器单元的阈值电压是可变的。如果存储器单元的阈值电压被温度改变,则在读操作中,将不经意地发生位错误。
闪存4110能够存储用于补偿存储器单元的阈值电压的改变的数据(在下文中,被称为“补偿数据”)。补偿数据4105在制造闪存4110期间可被存储在存储器单元的特定区域中。存储器单元可以存储单一位数据或多位数据。
存储单一位数据的存储器单元通过阈值电压分布具有两个电平。该存储器单元称为单一电平单元(SLC)。存储多位数据的存储器单元通过阈值电压分布有四个或更多电平。该存储器单元称为多电平单元(MLC)。图43中所示的闪存4110包括单一电平单元或多电平单元,或包括它们的全部。
表1示范性示出SLC闪存的补偿数据。
[表1]
温度(℃) | Vrd0(V) | Vvf(V) |
80~90 | R0 | F0 |
60~80 | R0+0.05 | F0+0.05 |
40~60 | R0+0.10 | F0+0.10 |
20~40 | R0+0.15 | F0+0.15 |
0~20 | R0+0.20 | F0+0.20 |
-20~0 | R0+0.25 | F0+0.25 |
在表1中,Vrd0是读操作期间施加到选择的字线的读电压,Vvf0是编程校验操作期间施加到选择的字线的校验电压。在80~90℃,读电压是R0,校验电压是F0。存储器单元的阈值电压被温度改变。为了补偿温度变化引起的阈值电压改变,如表1中所示的读或校验电压依照温度进行不同的设置。
例如,如表1中所示,在温度范围为60~80℃,读电压被设置为R0+0.05,校验电压设置为F0+0.05。在温度边界为40~60℃时,读电压被设置为R0+0.10,校验电压被设置为F0+0.10。在表1中,温度范围的范围被设置到20℃,通过温度边界,读和校验电压的范围被设置为0.05V。但是,可以理解的是,温度边界、读电压和校验电压的范围可不同于表1而被设置。
表2中示例地示出了MLC闪存的补偿数据。
[表2]
温度(℃) | Vrd1(V) | Vrd2(V) | Vrd3(V) | Vvf1(V) | Vvf2(V) | Vvf3(V) |
80~90 | R1 | R2 | R3 | F1 | F2 | F3 |
60~80 | R0+0.05 | R0+0.05 | R0+0.05 | F0+0.05 | F0+0.05 | F0+0.05 |
40~60 | R0+0.10 | R0+0.10 | R0+0.10 | F0+0.10 | F0+0.10 | F0+0.10 |
20~40 | R0+0.15 | R0+0.15 | R0+0.15 | F0+0.15 | F0+0.15 | F0+0.15 |
0~20 | R0+0.20 | R0+0.20 | R0+0.20 | F0+0.20 | F0+0.20 | F0+0.20 |
-20~0 | R0+0.25 | R0+0.25 | R0+0.25 | F0+0.25 | F0+0.25 | F0+0.25 |
在表2中,Vrd1、Vrd2和Vrd3是在读操作期间施加到选择的字线的读电压,Vvf1、Vvf2以及Vvf3是在编程校验操作期间施加到选择的字线的校验电压。在80~90℃中,读电压被设置到R1、R2和R3,校验电压被设置为F1、F2和F3。为了补偿温度变化所引起的阈值电压改变,如表2中所示的读或校验电压依照温度被不同地设置。可以理解的是,温度边界的范围、读电压和校验电压可不同于表2而被不同地设置。
根据本发明的存储器***4100存储如表1和2中的补偿数据,并依照补偿数据修整闪存的阈值电压补偿值。例如,如果现在的温度是25℃,则存储器***4100依照补偿数据设置闪存的读电压为R0+0.15、R1+0.15、R2+0.15、R3+0.15,并设置校验电压为F0+0.15、F1+0.15、F2+0.15、F3+0.15。如图43所示,这些补偿数据可被存储在闪存4110、存储器控制器4120的ROM或者另一个存储介质中。
继续参照图43,存储器控制器4120包括存储器接口4121、主机接口412、ECC电路4123、中央处理单元(CPU)4124、随机存取存储器(RAM)4125和温度传感器4126。存储器控制器4120感测闪存4110的温度变化,并依照存储在闪存4110中的补偿数据修整闪存4110的阈值电压。
存储器接口4121被直接连接到闪存4110并用于与闪存4110直接交换命令、地址和控制信号。即,存储器接口4121在读操作中提供读命令和地址,并在写操作中提供写命令、地址和数据。主机接口4122用于与主机(未示出)交换数据。
ECC电路4123用于分析或校正存储在闪存4100中的数据的位错误。中央处理单元4124进行用于存储器控制器4120的数据交换的整个控制操作。RAM 4125作为工作存储器使用。虽然没有示出,存储器***4100可进一步包括存储用于与主机接口的代码数据的ROM(未示出)。
温度传感器4126通过感测闪存4110的温度改变来补偿存储器单元的阈值电压改变。为此,温度传感器4126测量当前温度并参考测量的温度设定温度边界。例如,假设当前温度是25℃,温度边界的范围是20℃。温度传感器4126参照当前温度25℃设定温度边界,其中较低的界限是15℃,较高的界限是35℃。
如果在闪存4110的编程或读取操作中测量的温度超过了15℃~35℃的温度边界,则温度传感器4126产生事件信号。并且,温度传感器根据测量的温度设定新的温度边界。例如,如果在闪存4110的编程操作期间,测量的温度是10℃,则温度传感器4126产生事件信号并设置新的温度边界,低的界限是0℃,高的界限是20℃。
存储器控制器4120响应于温度传感器4126产生的事件信号,补偿闪存4110的阈值电压改变。温度传感器4126在测量当前温度时耗费数十毫秒。因此,在闪存4110的编程或读取操作每个操作中测量闪存4110的温度会导致功能退化。为了解决这样的问题,本发明的温度传感器4126初步设定温度边界。
如果测量的温度是15℃,则温度传感器4126设置温度边界,低的界限是5℃,高的界限是25℃。并且,仅在测量的温度超过预定的温度边界5℃~25℃时,温度传感器4126产生事件信号。同样,温度传感器4126基于当前温度(例如40℃),设置新的温度边界30℃~50℃。在此时,依照表1或2示出的补偿数据,闪存4110的读取和校验电压被设置为R0+0.15、R1+0.15、R2+0.15、R3+0.15、F0+0.15、F1+0.15、F2+0.15以及F3+0.15。
根据本发明的存储器***4100通过温度变化可以减少由存储器单元的阈值电压改变所引起的位错误。即,在闪存4110的操作(读或编程)之前,根据本发明的存储器***4100通过温度变化初步补偿阈值电压改变。在下文中将详细描述闪存4110的内部结构和用于补偿阈值电压的方法。
图44是示范性示出图43中所示的闪存的框图。闪存4110包括存储器单元阵列4111、数据输入/输出电路4112、行译码器4113以及控制逻辑和高电压产生器4114。
存储器单元阵列4111包括多个存储块。每个存储器块由多个页形成。每个页由多个存储单元形成。每个存储单元可以存储单一位数据或者多位数据。闪存4110以存储器块为单位进行擦除操作,而以页为单位进行写或读操作。
图44示出了存储器块。参考图44,存储器块包括连接到串选择线SSL的串选择晶体管、耦合到多个字线WL0~WL31的存储单元、以及连接到地选择线GSL的地选择晶体管。串选择晶体管连接到位线BL0~BLm,地选择晶体管是公共的源极线CSL。
数据输入/输出电路4112经由多个位线BL0~BLm连接到存储器单元阵列4111。数据输入/输出电路4112通过数据输入/输出线(未示出)输入数据DATA。输入数据被存储在相应的存储单元中。同时,数据输入/输出电路4112通过位线BL从存储器单元中读取数据。读取的数据通过数据输入/输出线被输出到外部。
行译码器4113通过多个字线WL0~WL31连接到存储器单元。行译码器4113输入地址ADDR并选择存储器块或页。此处,用于选择存储器块的地址称为块地址,用于选择页的地址称为页地址。
控制逻辑和高电压产生器4114响应于命令CMD和控制信号CTRL控制数据输入/输出电路4112和行译码器4113。此处,从存储器接口4121(参照图43)提供控制信号CTRL。此时,控制逻辑和高电压产生器4114产生提供给字线的偏置电压,例如编程电压、读电压、擦除电压等等。
同时,控制逻辑和高电压产生器4114包括用于响应于外部感测信号修整例如读取电压或编程校验电压的偏置电压的修整电路。当存储器单元的阈值电压由于温度的变化而改变时,修整电路(未示出)修整阈值电压的变化。
图45是示范性示出图44中所示的存储器单元的阈值电压分布的图。图45示出了具有四个电平的多电平单元的阈值电压分布。存储器单元具有四个状态E、P1、P2和P3之一。
在读操作期间,选择的读电压Vrd1、Vrd2或Vrd3被提供给选择的字线WL0(参照图44),并且去选择读电压Vread被提供给未经选择的字线WL0~WL31(参照图44)。第一选择读电压Vrd1具有在擦除状态E和第一编程状态P1之间的电压电平。第二选择读电压Vrd2具有在第一编程状态P1和第二编程状态P2之间的电压电平。第三选择读电压Vrd3具有在第二和第三编程状态P2和P3之间的电压电平。
其间,在编程校验操作期间,编程校验电压Vvf1、Vvf2或Vvf3提供给被选择的字线。第一编程校验电压Vvf1是用于将存储器单元编程到第一编程状态P1的电压。第二编程校验电压Vvf2是用于将存储器单元编程到第二编程状态P2的电压。第三编程校验电压Vvf3是用于将存储器单元编程到第三编程状态P3的电压。
图46是用于示出由于温度改变的存储器单元的阈值电压改变的图。参考图46,存储器单元在室温具有如图46实线所示的分布。
但是如果存储器单元在低于室温的冷温度下被编程,则可看到它们的阈值电压移动到左边。换句话说,当在冷的温度下编程存储器单元时,其降低产生存储器单元的FN隧穿影响的势垒。并且,沟道电子更多地移向存储器单元的浮置栅极。在此情况下,即使存储器单元的栅极电压在读取操作中是较低的,沟道仍可在其中容易地建立。由于此原因,可看到存储单元的阈值电压移动到左边。同样,如果存储器单元在高于室温的热温度下被编程,则可看到它们的阈值电压移动到右边。
在冷温度下编程存储器单元,接着在室温进行读取操作,其减少了闪存的读取余量。在图46中,假设选择读电压Vrd1、Vrd2和Vrd3恒定,如果存储器单元的阈值电压移动到左边,则读取余量同样减少那么多。同样,在热温度下编程存储器单元,接着在室温进行读取操作,其减少了闪存的读取余量。
另外,如果在热温度下编程存储器单元而在冷温度读取,或者在冷温度下编程存储器单元而在热温度读取,其使读取余量减少更多。当闪存单元没有足够安全的读取余量时,产生ECC位错误的概率增加了。本发明通过感测闪存4110的温度改变并依照补偿数据修整编程校验电压或读取电压来补偿阈值电压改变。即,依照温度改变,本发明通过改变编程校验电压或读取电压来移动存储器单元的阈值电压电平。
图47是示出用于初始化图43中所示的温度传感器的过程的流程图。图47示出了当存储器***4100(参照图43)加电时初始化温度的过程。在步骤S4110,存储器***4100被加电。在步骤S4120,当存储器***4100被加电时,温度传感器4126(参照图43)被初始化。在步骤S4140中,其测量初始化过程的当前温度。在步骤S4140中,其参考测量的温度设置温度边界。此处,设置温度边界为了依照温度改变来产生事件信号。
图48是示出图43中的所示的存储器***的校验电压修整方法的流程图。图48示出了在编程操作期间,依照温度改变来修整校验电压的过程。
在步骤S4210,编程命令被提供给闪存4110。闪存4110响应于编程命令开始编程操作。在内部执行编程操作之前,闪存4110确定温度传感器4126(参照图43)是否产生事件信号。
在步骤S4220,确定是否产生事件信号。没有产生事件信号的条件是意味着闪存4110的温度改变在温度边界范围内。除非温度传感器产生事件信号,否则闪存4110正常进行编程操作而不修整校验电压。相反,如果产生事件信号,意味着温度改变超出了初步设定的温度边界。在此过程中,为了减少由于温度改变带来的ECC位错误,有必要修整编程校验电压。
在步骤S4230,温度传感器4126测量当前温度。此处,温度传感器4126不在整个编程操作期间测量当前温度,而仅在产生事件信号时测量。这是为了防止存储器***由于频繁的温度感测而引起的功能降低。
在步骤S4240,闪存4110修整编程校验电压。存储器***4100根据步骤S4230中测量的当前温度读取补偿数据。此处,补偿数据被存储在随机存取存储器4125(参照图43)中。补偿数据从闪存4110中被载入随机存取存储器4125中。闪存4110依照补偿数据修整编程校验电压。
在步骤S4250,温度传感器4126根据步骤S4230中测量的温度设置新的温度边界。在步骤S4260中,闪存4110通过使用修整的校验电压进行编程操作。响应于温度传感器产生的事件信号,根据本发明的存储器***的校验电压修整方法补偿由于温度改变引起的存储器单元的阈值电压改变。
图49是示出图43中所示的存储器***的读电压修整方法的流程图。图49示出了在读取操作过程中,依照温度改变来修整读取电压的过程。
在步骤S4310,读取命令提供给闪存4110。响应于读取命令,闪存4110开始读取操作。在内部执行读取操作之前,闪存4110确定温度传感器4126(参照图43)是否产生事件信号。
在步骤S4320,确定是否产生事件信号。除非温度传感器产生事件信号,否则闪存4110正常进行读取操作而不修整读取电压。相反,如果产生了事件信号,为了减少温度改变引起的ECC位错误,需要修整读取电压。
在步骤S4330,温度传感器4126测量当前温度。此处,温度传感器4126不在读取操作的整个过程中测量当前温度,而是仅在产生事件信号时测量。这是为了防止由于频繁的温度感测引起的功能退化。
在步骤S4340,闪存4110修整读取电压。存储器***4100根据步骤S4330测量的当前温度读取补偿数据。闪存4110依照补偿数据修整读取电压。
在步骤S4350,温度传感器4126参考步骤S4330测量的温度设置新的温度边界。在步骤S4360中,闪存4110通过使用修整的校验电压进行读操作。响应于温度传感器产生的事件信号,根据本发明的存储器***的校验电压修整方法补偿由温度改变引起的存储器单元的阈值电压改变。
图50到54是示出根据本发明的存储器***的各种实施例的框图。参考图50,存储器***4200与主机4201通信。存储器***4200包括闪存4210和存储器控制器4220。存储器控制器4220包括温度传感器4230。温度传感器4230感测闪存4210的温度变化。
存储器控制器4220分析温度传感器4230感测的温度变化,并向闪存4210提供感测信号SENS。此处,感测信号SENS可为存储器控制器4220提供给闪存4210的命令、数据或控制信号。闪存4210响应于感测信号SENS修整编程校验电压或读取电压。
参考图51,存储器***4300与主机4301通信。存储器***4300包括闪存4310、存储器控制器4320、以及温度传感器4330。温度传感器位于存储器控制器4320之外。温度传感器4330感测闪存4310的温度改变。存储器控制器4320分析温度传感器4330感测的温度改变,向闪存4310提供感测信号SENS。闪存4310响应于感测信号SENS修整编程电压或读取电压。
参考图52,存储器***4400与主机4401通信。存储器***4400包括闪存4410、存储器控制器4420以及缓冲器存储器4450。缓冲器存储器4450包括温度传感器4430。此处,缓冲器存储器4450包括例如DRAM、移动DRAM或者SRAM的易失性存储器、或者例如闪存、PRAM、MRAM或者EEPROM的非易失性存储器。
温度传感器4430感测闪存4410的温度变化。存储器控制器4420分析温度传感器4430感测的温度变化并向闪存4410提供感测信号SENS。闪存4410响应于感测信号SENS修整编程电压或读取电压。
参考图53,存储器***4500与主机4501通信。存储器***4500包括闪存4510和存储器控制器4520。非易失性存储器NVM包括闪存、PRAM、MRAM或者EEPROM。存储器控制器4520包括温度传感器4530。温度传感器4530感测非易失性存储器4510的温度变化。存储器控制器4520分析温度传感器4530感测的温度变化,并向非易失性存储器4510提供感测信号SENS。非易失性存储器4510响应于感测信号SENS修整编程电压或读取电压。
图54是示出用于保证闪存数据可靠性的方法的流程图。图54示出了纠正温度改变导致的位错误的方法但是存储器单元的阈值电压会改变。除了由于温度改变导致的位错误之外,对于编程或读干扰所产生的位错误可调节闪存。
闪存使用ECC电路纠正这样的位错误。但是能够纠正位错误的范围不超过预定的位数。例如,如果ECC电路可以纠正4位错误,那么不能进一步实行纠正超过4位的更多位。图54示出了在上述例子中修复这样的位错误的方法。
在步骤S4410中,确定是否可以纠正位错误。从上面的例子,如果错误位的数量大于四位,它们就是不可纠正的错误。如果错误位的数量小于四位,则它们是可纠正的错误。如果可以纠正位错误,则使用ECC电路纠正位错误。如果不能纠正位错误,其改变读取电压Vrd的电平,并进行错误检测和纠正操作。
在步骤S4420,闪存改变第一读取电压Vrd1并进行错误检测和校正操作。在闪存单元中,由于在单元串结构上的编程或读取干扰,将会形成被擦除的存储器单元的过编程。此时,如图45中所示的,如果参考第一读取电压Vrd1实施读取操作,则过编程的存储单元可作为截止单元(off-cell)被部分地读取。如果超出了ECC校正能力之外调节过编程的存储单元,则通过常规的方法没有办法修复。本发明通过以预定电压电平为单位增加第一读取电压Vrd1,进行错误检测和校正操作,以便使过编程的存储器单元作为接通单元(on-cell)读取。
在步骤S4430,在改变第一读取电压Vrd1之后,确定是否存在位错误。除非存在位错误,否则纠正位错误的过程被终止。但是如果存在位错误,则第一读取电压Vrd1被再一次改变。在步骤S4440,确定ECC循环的数量是否是M(M是自然数)。
在步骤S4450,如果ECC循环被重复M次,其改变第一到第三读取电压Vrd1、Vrd2和Vrd3,并进行错误检测和校正操作。此处,第一到第三读取电压Vrd1、Vrd2和Vrd3的电平可被交替地改变,如+a,-a,+b以及-b(a,b是自然数)。这是因为不可能知道存储器单元的阈值电压是已移动到左边还是右边。
在步骤S4460,在改变第一到第三读取电压Vrd1、Vrd2和Vrd3之后,确定是否存在位错误。除非存在位错误,否则纠正位错误的过程被终止。但是如果存在位错误,则第一到第三读取电压Vrd1、Vrd2和Vrd3被再次改变。在步骤S4470,确定ECC循环的数量是否是M(M是自然数)。根据本发明的存储器***可以纠正除了温度改变之外由于其它原因引起的位错误。
在修复数据过程之后,本发明使得读电压电平回到最初状态。在步骤S4480,确定上述的温度传感器是否正被使用。如果温度传感器正被使用,实施步骤S4490。除非传感器正被使用,否则实施步骤S4495。
步骤S4490包括通过温度传感器测量当前温度的步骤(S4491)、根据测量的温度依照补偿数据修整读取电压的步骤(S4492)、以及在测量的温度上设置用于下一事件的新的温度边界的步骤(S4493)。在之前的步骤被改变的第一到第三读取电压Vrd1、Vrd2和Vrd3被重置。
根据本发明的存储器***可以在闪存、ONE-NAND闪存(OneNANDTM)、半导体盘驱动(SSD)、存储卡等等单位产品来实施。如果本发明被实施到存储卡,则闪存和存储器控制器被集成在单一的卡上。该存储器卡包括多媒体卡(MMC)、SD卡、XD卡、CF卡、SIM卡等等。根据本发明的存储器***可用于计算机、笔记本、移动电话、MP3播放器、PMP、应用芯片组、照相机图像处理器等等。
根据本发明的第四实施例的闪存***通过温度传感器和多线程函数可获得高的数据可靠性。另外,根据本发明的第四实施例的闪存***通过在第一实施例中描述的多线程函数、在第二实施例中描述的自由页、在第三实施例中描述的微代码、以及温度传感器可获得加速。通过高的数据可靠性和加速的获得,可提高根据本发明的第一实施例的闪存的性能。
[实施例5]闪存***修复LSB数据
近年来越来越多的使用具有非易失存储器的设备。例如,使用非易失性存储器作为存储设备的MP3播放器、数字照相机、便携电话、可携式摄像机、闪存卡以及固态驱动器(SSD)。
存在做为非易失性存储器设备类型的闪存设备。通常,闪存设备作为电可编程和可擦除非易失性存储器为人们所公知。最近,在例如用于移动设备的大规模存储器单元或者代码存储器的应用中,需要大容量或高频率的特性,他们在闪存方面更有兴趣。闪存设备可被分为NAND和NOR类型。
NAND闪存包括由浮置栅极晶体管组成的存储器单元的阵列。存储器单元陈列包括多个存储器块。每个存储器块包括浮置栅极晶体管的串(或称为“NAND串”)。每个串由串选择晶体管、地选择晶体管、以及多个连接在串和地选择晶体管之间的存储器单元构成。多个字线被排列在单元阵列上,与串交叉。每个字线被连接到每个串的相应单元晶体管的控制栅极上。
NOR闪存设备的单元阵列具有多个存储器单元与位线并行排列的结构。与NAND闪存相比,由于NOR闪存在编程和读取操作中以高频率操作,所以其被广泛使用于需要高速度的领域。但是NOR闪存设备与NAND闪存相比,在集成度上是劣势的。
作为克服存储器容量限制的建议,通常采取多电平单元(下文中称为“MLC”)。MLC结构通过在单位存储器单元中存储多位来克服集成的物理限制。
图55是示出每个存储2位(MSB和LSB)的多电平单元的阈值电压分布、以及与存储器(例如NAND闪存)中的分布相应的数据值的图。参考图55,多电平单元的数据值对应于“11”、“01”、“10”以及“00”,以从阈值电压的最低状态开始的顺序。通常,状态“11”是擦除状态。编程操作从擦除状态“11”开始。
存储器单元被编程为具有与阈值电压分布相一致的四个状态“11”、“01”、“10”以及“00”中的其中一个。首先,描述编程最低有效字符(LSB)的过程。根据LSB数据,存储器单元的阈值电压保持擦除状态或者改变到状态“10”。例如,如果LSB是“1”,则存储器单元的阈值电压保持擦除状态。如果LSB是“0”,则存储器单元的阈值电压提高到状态“10”。
接着,最高有效位(MSB)被编程。根据MSB,状态为“10”的存储器单元被编程为处于状态“00”,或者被编程为处于状态“10”。例如,如果MSB是“0”,则状态为“10”的存储器单元被编程到状态“00”,或者如果MSB是“1”,则被编程到状态“10”。在另一方面,根据MSB,状态为“11”的存储器单元保持状态“11”,或者被编程到状态“01”。例如,如果MSB是“0”,则状态为“11”的存储器单元被编程为处于状态“01”,或者如果MSB是“1”,则保持状态“11”。通过这样的方式,多位数据被编程在一存储器单元中。换句话说,LSB首先在存储器单元中被编程,接着MSB被编程到存储器单元中,此时LSB在该存储器单元中已经被编程。
然而,当MSB被编程到存储器单元中时,LSB已经在其中被编程,这就将产生编程失败。例如,如果当编程MSB时存在电力故障,则发生编程失败。或者存储器单元的缺陷可引发编程失败。如果当编程MSB时存在编程失败,则已经被编程的LSB将受到影响。该问题称为“位耦合”。
图56是示出根据本发明的实施例的存储器***的图。参考图56,根据本发明的存储器***5000由主机5010、存储器控制5020、以及闪存5030组成。
存储器控制器5020包括缓冲器存储器5021。闪存5030包括单元阵列5031和页缓冲器5032。虽然没有在图56中示出,闪存5030也包括译码器、数据缓冲器以及控制单元。
存储器控制器5020接收从主机5010输入的写命令和数据,并控制闪存5030向单元阵列5031中写入数据。另外,存储器控制器5020遵照从主机5010输入的读取命令控制闪存5030从单元阵列5031中读取数据。
缓冲器存储器5021暂时存储将被写入闪存5030中的数据或从闪存5030中读取的数据。通过存储器控制器5020的控制,缓冲器存储器5021从其向主机5010或闪存5030传输临时数据。
闪存5030的单元阵列5031由多个存储器单元形成。存储器单元是非易失性的,在其中存储数据之后,即使断电,数据也不丢失。页缓冲器5032是缓冲器,用于存储待写入单元阵列5031的选择的页中的数据、或从单元阵列5031的选择的页中读取的数据。
闪存5030进行以页为单位的编程操作。在编程操作期间,存储器控制器5020通过内部缓冲器存储器5021以页为单位向闪存5030传输数据。页缓冲器5032临时存储从缓存器存储器5021载入的数据,并同时将载入的数据编程到被选择的页中。在编程之后,实施编程校验操作以检查是否数据已被正确地编程。
从编程校验的结果看,如果存在编程失败,则编程和编程校验操作通过提高编程电压重新开始。在此方式完成带有一个页容量的数据的编程之后,通过接收下次的数据进行编程操作。
图57是示出根据本发明的第五实施例的编程方法的流程图。在该实施例中,依照需要的可靠性实施不同的MSB编程方法。如果当在前被编程的数据稍后被编程时该在前被编程的数据丢失了,则存在可靠性的问题。由于此原因,术语“可靠性”可被用于作为保护在前数据的含意。
参考图57,在步骤S5110从外部(例如主机)输入编程请求。如果存在编程请求的输入,在步骤S5120,找到将被编程的存储器单元的LSB数据。在步骤S5130,检测LSB数据是否需要具有高的可靠性。例如,例如个人信息或者口令的数据需要具有高的可靠性。如果LSB不需要具有高的可靠性,在步骤S5140中通过第一编程方法对其编程。相反,如果LSB数据需要具有高的可靠性,则在步骤S5150由第二编程方法编程该数据。
如前所述,在根据本发明的实施例中,依照从其需要可靠性的等级来交替使用第一和第二编程方法。可由存储器控制器5020确定采用第一和第二编程方法的哪一个。例如,如果存储在存储器单元中的待编程的LSB数据需要具有高的可靠性,则存储器控制器5020可控制闪存5030采用第二编程方法。
另外,闪存5030可确定采用第一和第二编程方法的哪一个。例如,参考将被存储于其中的数据的地址,闪存5030可以确定其上将应用的一种编程方法。如果将被存储的地址与存储器单元阵列的特定区域相一致,则采用第一编程方法。如果将被存储的地址与存储器单元阵列的另一个区域相一致,则可采用第二编程方法。这样,可不修改地使用常规的存储器控制器5020。以下,稍后将结合附图描述第一和第二编程方法。
图58A到58C示出了根据本发明的第一编程方法的图。图58A示出了当编程LSB数据时的阈值电压改变。图58B示出了当编程具有状态“00”的数据时的阈值电压变化。图58C示出了编程具有状态“01”和“10”的数据时的阈值电压变化。
首先,将参考图58A描述编程LSB的过程。依照LSB数据,具有状态“11”(擦除状态)的存储器单元被编程为具有状态“10”。例如,如果LSB数据是“1”,则存储器单元保持状态“11”。如果LSB数据是“0”,则存储器单元转换到状态“10”。在此期间,校验读取操作通过使用校验电压Va来实施。如果所有具有LSB为“0”的存储器单元的阈值电压高于校验电压,则完成编程操作。
接着,为了编程MSB,存储器控制器将一页容量的数据从缓冲器存储器传输到闪存。参考图58B,如果MSB数据是“0”,则具有状态“10”的存储器单元被编程到具有状态“00”。在此过程中,校验读取操作通过使用校验电压V3进行。如果具有MSB为“0”的所有存储器单元的阈值电压高于校验电压V3,则完成编程操作。
参考图58C,MSB数据是“1”,具有状态“11”的存储器单元被编程为具有状态“01”,具有状态“10”的存储器单元被编程为具有状态“10”。在此过程中,通过校验电压V1和V2,检测编程的通过成功与否。但是,如前所述,当MSB被编程到其中的LSB已经被编程过的存储器单元中时,将可能存在编程失败。如果当编程MSB时,存在错误,将影响已经在存储器单元中被编程的LSB。
因此,在本发明的实施例中,当不需要高的可靠性时对其采用前述的第一编程方法,当需要高的可靠性时,对其采用稍后描述的第二编程方法。采用稍后描述的第二编程方法,即使当编程MSB时存在编程失败,也不会丢失LSB数据。结果是,提高了非易失性存储器设备的可靠性。
图59A到59D是示出根据本发明的第二编程方法的图。图59A到59D示出了将LSB和MSB(即2位数据)编程到存储器单元的过程。与第一编程方法不同,按照从状态“10”到状态“10”,从状态“11”到状态“01”的顺序实施第二编程方式。
参考图59A,首先将描述编程LSB的方法。根据LSB数据,具有状态“11”的存储器单元被编程为具有状态“11”或“10”。例如,如果LSB数据是“1”,则存储器单元保持状态“11”。如果LSB数据是“0”,则存储器单元进入状态“10”。在此过程中,通过使用校验电压Va进行校验读取操作。如果具有MSB为“0”的所有存储器单元的阈值电压高于校验电压Va,则完成编程操作。
接着,为了编程MSB,存储器控制器从缓冲器存储器向闪存传输一页容量数据。参考图59B,如果MSB数据是“0”,则具有状态“10”的存储器单元被编程为具有状态“00”。在此过程中,通过校验电压V3,检测编程的通过。如果具有MSB为“0”的所有存储器单元的阈值电压都高于校验电压V3,则完成编程操作。
参考图59C,如果MSB数据是“1”,则具有状态“10”的存储器单元被编程为具有状态“10”。在此过程中,通过校验电压V2检测编程的通过。如果具有MSB为“1”的所有存储器单元的阈值电压都高于校验电压V2,则完成编程操作。
参考图59D,如果MSB数据是“0”,则具有状态“11”的存储器单元被编程为具有状态“01”。在此过程中,通过校验电压V1检测编程的通过。如果具有MSB为“0”的所有存储器单元的阈值电压都高于校验电压V1,则完成编程操作。
参考图59A到59D,顺序地实施了与各状态对应的编程阶段。因此,可以检测何处产生编程失败。另外,如稍后描述的,如果发现编程失败产生的阶段,则可以恢复LSB数据。
可通过各种方式检测产生编程失败的编程阶段。相关于使用错误纠正电路的方法和使用标记存储器单元或者标记寄存器的方法,来描述本发明的实施例。但是,本发明不限于此。在检测编程失败阶段中,使用其它各种方式也是可以的。
图60是示出依照本发明的检测编程失败阶段的方法的框图。参考图60,根据本发明的存储器***5100包括主机5110、存储器控制器5120以及闪存5130。此处,闪存5130可以在存储器单元中存储多位数据。
在图60中,存储器控制器5120和闪存5130可被包括在存储卡中。该存储卡包括MMC(多媒体卡)、SD卡、XD卡或者SIM卡。另外,该存储卡被用于与例如数码照相机、移动电话、MP3播放器或者PMP的主机5110的连接。
存储器控制器5120从主机5110输入命令并遵照输入的命令,控制闪存5130的整个操作(例如,写和读取操作)。参考图60,存储器控制器5120包括缓冲器存储器5121和错误校正电路5122。
缓冲器存储器5121用于暂时存储将写入闪存5130中的数据、或者从闪存5130读取的数据。通过存储器控制器5120的控制,存储在缓冲器存储器5130中的数据被传输到闪存5130或者主机5110。缓冲器存储器5121可被在例如SRAM或者DRAM的随机存取存储器(RAM)中来实现。
根据本发明的存储器***5100包括在存储器控制器5120中的错误校正电路5122。即使错误部分地从数据产生,以预定的规则,通过向要存储的数据中添加检验码,错误可被检测并被校正。
错误校正的概念性操作是在输入操作中从输入数据生成校验码,并存储所有的输入数据和检验码。同时,在输出操作中,通过比较存储的检验码和从数据产生的检验码,检测并校正错误。
接着参照图60,闪存5130由单元阵列5131、译码器5132、页缓冲器5133、位线选择电路5134、数据缓冲器5135以及控制单元5136构成。在图60中,NAND闪存作为例子被示出。
单元阵列5131由多个存储器块(未示出)形成。每个存储器块由多个页(例如128个页)形成。每个页由多个共享字线WL的存储器单元形成。在NAND闪存的情况下,以块为单位进行擦除操作,以页为单位进行读和写操作。
同时,如前所述,每个存储器单元可以存储多位数据(例如2位数据)。2位存储器单元依照阈值电压分布具有四个状态或电平。
译码器5132通过字线WL1~WLn连接到单元阵列5131,并被控制单元5136控制。译码器5132从存储器控制器5120输入地址ADDR,并选择字线(例如WL1)或产生选择信号Yi以选择位线BL。页缓冲器5133通过位线BL1~BLm连接到单元阵列5131。
页缓冲器5133存储从缓冲器存储器5121载入的数据。在页缓冲器5133,数据被载入一页的容量中。在编程操作中,载入的数据同时在被选择的页(例如页0)中被编程。另一方面,页缓冲器5133在读取操作中从页(页0)读取数据,并暂时存储读取的数据。响应于读取使能信号(nRE,未示出)存储在页缓冲器5133中的数据被传输到缓冲器存储器5121中。
位线选择电路5134是响应于选择信号Yi选择位线的电路。数据缓冲器5155是用于在存储器控制器5155和闪存5130之间数据传输的输入/输出缓冲器。作为控制闪存5130的内部操作的电路,控制单元5136从存储器控制器5120输入控制信号。
存储器***5100由存储器控制器5120中的错误校正电路5122组成。错误校正电路5122检测失败从哪个编程阶段产生。稍后,将结合附图详细描述检测编程失败的方法。
图61是用于示出通过图60中所示的错误校正电路检测编程失败的方法的图。在该实施例中,错误校正电路通过确定产生的错误是否处于无法补救的程度,来检测编程失败。
参考图61,首先,通过使用读取电压R2进行读取操作。错误校正电路参考读取数据来检测错误的产生。如果产生的错误处于无法补救的程度,则这意味着当编程MSB数据时存在着失败。
例如,假设在从状态“10”到状态“10”转变时,产生编程失败。由于编程失败,在必须被编程到状态“10”的存储器单元中,一组存储器单元的阈值电压低于读取电压R2并且其它组的存储器单元的阈值电压高于读取电压R2。这意味着编程失败在从状态“10”到状态“10”的转变期间产生。因此,错误校正电路检测到错误。
因此,通过使用读取电压V2进行读取操作可正确地读取LSB数据。例如,如果存储器单元在读取电压R1施加于此时被接通,则这意味着LSB数据是“1”。相反,如果存储器单元当读取电压R1施加于此时被关断,则意味着LSB数据是“0”。
如上所述,错误较正电路可检测编程失败阶段的原因是由于由第二编程方法顺序处理的从状态“10”到状态“10”以及从状态“11”到“01”的转变。如果像第一种编程方法,从状态“10”到状态“10”以及从状态“11”到“01”的转变被同时处理,则错误校正单元不能正确地检测编程失败阶段。这是因为,如果当向其施加读取电压R2时产生错误,则不能发现是否当存储器单元从状态“11”到状态“01”或者从状态“10”到“10”编程时产生错误。
结果是,通过根据本发明的第二编程操作,可以正确地检测编程失败阶段。通过此方法,即使存在MSB编程错误,也可正确读取LSB数据。尽管NAND闪存在实施例中作为示例时,本发明也可应用于NOR闪存。
图62是示出根据本发明的NOR闪存设备的优选实施例的框图。参考图62,根据本发明的存储器***5200包括主机5210、存储器控制器5220以及NOR闪存5230。此处,NOR闪存5230可以在存储器单元中存储多位数据。
根据本发明的NOR闪存5230包括单元阵列5231、行选择器5234以及列选择器5235。单元阵列5231包括放置在多个字和位线交叉点的存储器单元(未示出)。行选择器5234响应于行地址XA选择字线。列选择器5235响应于列地址YA选择位线。
根据本发明的NOR闪存5230更包括数据输入缓冲器5232、编程驱动器5233以及控制电路5237。数据输入缓冲器5232通过数据线并行地输入编程数据。输入的编程数据被存储在输入缓冲器IB1、IB2和IB3中。另外,当编程选择信号Psel为高时,数据输入缓冲器5232从输入缓冲器IB1、IB2和IB3向编程驱动器5233输出数据。
控制电路5237提供编程选择信号Psel和数据锁存信号DLj(j=1~n)。编程驱动器5233响应于编程数据DB1i、DB2i、DBni(i=1~16)同时施加编程电压BL1i、BL12i、BLni(i=1~16)。编程驱动器5233包括与输入缓冲器IB1、IB2和IB3相应的驱动器PD1、PD2和PD3。
图63是示出依照本发明的检测编程失败阶段的另一个方法的框图。参考图63,根据本发明的存储器***5300包括主机5310、存储器控制器5320以及闪存5330。此处,闪存5330可以在存储器单元中存储多位数据。
为了检测编程失败阶段,存储器单元阵列5330的存储器单元部分地作为标志存储器单元被使用。标志存储器单元的阈值电压在完成编程阶段的任何时候都改变。将结合稍后示出的图,描述通过完成编程阶段来改变标志存储器单元的阈值电压的方法。
图64是示出通过编程改变标志存储器单元的阈值电压的方法的流程图。参考图64,第一到第三MSB编程操作被顺序实施。第一MSB编程操作意味着存储器单元的阈值电压从状态“10”到状态“00”的转换。第二MSB编程操作意味着存储器单元的阈值电压从状态“10”到状态“10”的转换。第三MSB编程操作意味着存储器单元的阈值电压从状态“11”到状态“01”的转换。
首先在步骤S5210中,执行第一MSB编程操作。通过第一MSB编程操作,存储器单元的阈值电压部分地从状态“10”到状态“00”转换。由于其余存储器单元在编程中被禁止,所以其阈值电压不改变。在步骤S5220,确定第一MSB编程操作通过与否。可通过例如Y扫描检查或者线或(wired-OR)检查的方式之类的公知的方法确定编程通过与否。因此,将详细描述通过/失败检查方法。
除非第一MSB编程操作已通过,否则重新开始第一MSB编程操作。如果第一MSB编程操作已经通过,则进行步骤S5230。在步骤S5230中,编程标志存储器单元。通过编程,标志存储器单元的阈值电压被改变。例如,如果第一MSB编程操作已经通过,则标志存储器单元的阈值电压可升至状态“01”。因此,如果标志存储器单元的阈值电压处于状态“01”,则可见第一MSB编程操作已经完成。
在编程标志存储器单元之后,在步骤S5240实施第二MSB编程操作。通过第二MSB编程操作,存储器单元的阈值电压部分地从状态“10”到状态“10”转换。由于其余存储器单元在编程中被禁止,所以其阈值电压不改变。在步骤S5250,确定第二MSB编程操作已经通过与否。除非第二MSB编程操作已通过,否则重新开始第二MSB编程操作。如果第二MSB编程操作已经通过,则进行步骤S5260。
在步骤S5260中,编程标志存储器单元。通过编程,标志存储器单元的阈值电压被改变。例如,如果第二MSB编程操作已经通过,则标志存储器单元的阈值电压可升至状态“10”。因此,如果标志存储器单元的阈值电压处于状态“10”,则可见第二MSB编程操作已经完成。
在编程标志存储器单元之后,在步骤S5270实施第三MSB编程操作。通过第三MSB编程操作,存储器单元的阈值电压部分地从状态“11”到状态“01”转换。由于其余存储器单元在编程中被禁止,所以其阈值电压不改变。在步骤S5280,确定第三MSB编程操作已经通过与否。除非第三MSB编程操作已通过,否则重新开始第三MSB编程操作。如果第三MSB编程操作已经通过,则终止MSB编程操作。
如前所述,在每个编程阶段被完成的任何时候,存储器单元的阈值电压都被改变。因此,通过参照标志存储器单元的阈值电压,可以检测到直到哪个阶段才完成编程操作。例如,如果由于在第二MSB编程操作期间的断电而产生编程失败,则标志存储器单元的阈值电压处于“01”的状态。
此处假设标志存储器单元是多位单元,但是本领域的技术人员所公知的是,标志存储器单元可为多个单一电平单元。前述的方法甚至可应用到NOR闪存设备。在这种情况中,标志存储器单元可被包括在NOR闪存设备中的存储器单元阵列中。
图65是示出了检测根据本发明的存储器***中的编程失败的另一个方法的框图。参考图65,根据本发明的存储器***5400包括主机5410、存储器控制器5420以及闪存5430。
在该实施例中,存储器控制器5420由用于检测编程失败的标志寄存器5422组成。每当完成编程阶段时,更新存储在标志寄存器5422中的数据。标志寄存器5422可由非易失性存储器设备形成,非易失性存储器设备不会由于电力故障等引起数据的丢失。因此,参考存储在标志寄存器5422中的数据,可以发现直到哪个阶段编程操作才被完成。通过完成编程阶段更新标志寄存器5422的方法将结合稍后示出的附图加以描述。
图66是用于示出通过完成编程阶段来改变存储在标志寄存器中的数据的方法的流程图。参考图66,第一到第三MSB编程操作被顺序进行。第一MSB编程操作意味着存储器单元的阈值电压从状态“10”到状态“00”的转换。第二MSB编程操作意味着存储器单元的阈值电压从状态“10”到状态“10”的转换。而第三MSB编程操作意味着存储器单元的阈值电压从状态“11”到状态“01”的转换。
首先在步骤S5310中,进行第一MSB编程操作。通过第一MSB编程操作,存储器单元的阈值电压部分地从状态“10”到状态“00”转换。由于其余存储器单元在编程中被禁止,所以阈值电压不改变。在步骤S5320,确定第一MSB编程操作已经通过与否。可通过例如Y扫描检查或者线或检查的方式之类的公知的方法来确定编程通过或不能执行。因此,将详细描述通过/失败检查方法。除非第一MSB编程操作已通过,否则重新开始第一MSB编程操作。如果第一MSB编程操作已经通过,则进行步骤S5330。
在步骤S5330中,更新存储在标志寄存器中的数据。通过更新,标志寄存器具有指示第一MSB编程操作已经通过的数据。因此,参考存储在标志寄存器中的数据,就可以发现直到哪个阶段才完成了编程操作。
在更新标志寄存器之后,在步骤S5340实施第二MSB编程操作。通过第二MSB编程操作,存储器单元的阈值电压部分地从状态“10”到状态“10”转换。由于其余存储器单元在编程中被禁止,所以阈值电压不改变。在步骤S5350,确定第二MSB编程操作通过与否。除非第二MSB编程操作已通过,否则重新开始第二MSB编程操作。如果第二MSB编程操作已经通过,则进行步骤S5360。
在步骤S5360中,更新存储在标志寄存器中的数据。通过更新,标志存储器具有指示第二MSB编程操作已经通过的数据。因此,参考存储在标志寄存器中的数据,可以发现直到哪个阶段才完成了编程操作。
在更新标志寄存器之后,在步骤S5370实施第三MSB编程操作。通过第三MSB编程操作,存储器单元的阈值电压部分地从状态“11”到状态“01”转换。由于其余存储器单元在编程中被禁止,所以阈值电压不改变。在步骤S5380,确定第三MSB编程操作已经通过与否。除非第三MSB编程操作已通过,否则重新开始第三MSB编程操作。如果第三MSB编程操作已经通过,则终止MSB编程操作。
如前所述,每当编程阶段完成时,标志寄存器中存储的数据被改变。因此,通过参考存储在标志寄存器中的数据,可以检测直到哪个阶段才完成编程操作。例如,如果由于在第二MSB编程操作期间的电力故障而产生编程失败,则标志寄存器存储告知第一MSB编程操作已经通过的数据。
标志寄存器可由非易失性存储器形成,非易失性存储器不受电力故障等引起的影响。前述方法甚至可应用到NOR闪存设备。既然这样,标志寄存器可被包括在NOR闪存设备中的存储器控制器中。
图67A到67C示出了根据本发明的LSB读方法的图。如前所述,在检测哪个阶段产生编程失败之后,根据检测的结果,LSB读取方法被不同的应用到其中。
图67A是示出在第一MSB编程操作过程中由于电力故障等等产生了编程失败的情况下的LSB读方法的图。参考图67A,如果在从状态“10”到状态“00”的转变过程中产生编程失败,则通过向选择的存储器单元的栅极施加读电压R1,就可以读LSB数据。例如,在施加读电压R1的时候,如果存储器单元被接通,则意味着LSB数据是“1”。相反,如果存储器单元被关断,则意味着LSB数据是“0”。
图67B是示出在第二MSB编程操作过程中由于电力故障等等产生了编程失败的情况下的LSB读方法的图。参考图67B,如果在从状态“10”到状态“10”的转变过程中产生编程失败,则通过施加读电压R1,就可以读LSB数据。例如,在施加读电压R1的时候,如果存储器单元被接通,则意味着LSB数据是“1”。相反,如果存储器单元被关断,则意味着LSB数据是“0”。
图67C是示出在第三MSB编程操作过程中由于电力故障等等产生了编程失败的情况下的LSB读方法的图。参考图67C,如果在从状态“11”到状态“01”的转变过程中产生编程失败,则通过施加读电压R2,就可以读LSB数据。例如,在施加读电压R2的时候,如果存储器单元被接通,则意味着LSB数据是“1”。相反,如果存储器单元被关断,则意味着LSB数据是“0”。
通过前述方法,即使在编程MSB数据时由于电力故障产生编程失败,也可以稳定地恢复LSB数据。因此,提高了半导体存储器设备的稳定性。
如图57所示,依照需要的可靠性的级别第一和第二编程方法被交替地选择。第一和第二编程方法可以在各种实施例中实施。以下将依照本发明的另一个实施例参考图68和69详细描述第一和第二编程方法。
图68A到68C示出了根据本发明的第一编程方法。图68A示出了当编程LSB数据时阈值电压的变化。图68B示出了当被编程具有状态“00”时阈值电压的变化。图68C示出了当被编程具有状态“01”和“10”时阈值电压的改变。
参考图68A,首先描述编程LSB的过程。具有状态“11”的存储器单元依照LSB数据被编程为具有状态“10”。例如,如果LSB数据是1,则存储器单元保持状态“11”。如果LSB数据是“0”,则存储器单元转变到状态“10”。在此过程中,通过校验电压Va检测是否编程已被通过。
接着,为了编程MSB,存储器控制器5020从缓冲器存储器5021向闪存5030传输一页容量的数据。参考图68B,如果MSB数据是“0”,则具有“10”状态的存储器单元依照MSB被编程为具有状态“00”。在此过程中,通过校验电压V3检测是否编程已被通过。
参考图68C,如果MSB数据是“1”,则具有状态“11”的存储器单元被编程为具有状态“01”,具有状态“10”的存储器单元被编程为具有状态“10”。在此过程中,通过校验电压V1和V2检测是否编程已被通过。
同时,如前所述,当将编程MSB到存储器单元中时存在产生编程失败的可能,其中LSB在该存储器单元中被编程。如果当编程MSB时产生错误,则可能影响已经在其中编程的LSB。
因此,在本发明的实施例中,当不需要高的可靠性时,采用前述的第一编程方法,而当需要高的可靠性时,采用稍后描述的第二编程方法。采用第二编程方法,即使在编程MSB数据时存在编程失败,LSB数据也不会丢失。结果是,提高了非易失性存储器设备的可靠性。
图69A到69C示出了根据本发明的第二编程方法。图69A到69C示出了将LSB和MSB(即2位数据)编程到存储器单元的过程。
参考图69A,首先将描述编程LSB的过程。具有状态“11”的存储器单元依照LSB数据被编程为具有状态“10”。例如,如果LSB数据是“1”,则存储器单元保持状态“11”。如果LSB数据是“0”,则存储器单元转到状态“10”。在此过程中,通过校验电压Va检测是否编程已被通过。
接着,为了编程MSB,存储器控制器将一页容量的数据从缓冲器存储器传输到闪存。参考图69B,如果MSB数据是“0”,则具有状态“10”的存储器单元被编程为具有状态“00”。在此过程中,通过校验电压V3检测编程通过。相反,如果MSB数据是“1”,则存储器单元在阈值电压中保持状态“10”。
参考图69C,如果MSB数据是“0”,则具有状态“11”的存储器单元被编程为具有状态“01”。在此过程中,通过校验电压V1检测编程通过。相反,如果MSB数据是“1”,则存储器单元在阈值电压中保持状态“11”。
如前所述,当编程LSB数据时,存储器单元的阈值电压升至状态“10”。因此状态“11”和“01”与状态“10”和“00”被清楚地区分开。因此,能够恢复LSB数据。在该实施例中,无论编程失败产生在哪个阶段,都可恢复LSB数据。如稍后所描述的,这是因为无论编程失败产生在哪个阶段,通过相同的读取电压R2都能进行LSB读取操作。
图70A和70B是示出根据本发明的LSB读方法的图。在该方法中,无论编程失败产生在哪个阶段,通过相同的读取电压R2都能进行读取操作。
图70A是示出在从状态“10”转变到状态“00”的过程中,由于电力故障而产生编程失败的情况下的LSB读方法的图。参考图70A,如果从状态“10”到状态“00”的转变过程中产生编程失败,则通过施加读取电压R2可读取LSB数据。例如,在施加读取电压R2时,如果存储器单元被接通,则意味着LSB数据是“1”。相反,如果存储器单元被关断,意味着LSB数据是“0”。
图70B是示出在从状态“11”转变到状态“01”的过程中,由于电力故障而产生编程失败的情况下的LSB读方法的图。参考图70B,如果状态从“11”到状态“01”的转变过程中产生编程失败,则通过施加读取电压R2可读取LSB数据。例如,在施加读取电压R2时,如果存储器单元被接通,则意味着LSB数据是“1”。相反,如果存储器单元被关断,意味着LSB数据是“0”。
通过以上描述的方法,当编程MSB数据时,即使由于电力故障产生编程失败,也可以稳定地恢复LSB数据。因此,半导体存储器设备在可靠性方面得到提高。
图71是示出本发明的另一个应用的框图。参考图71,存储器单元阵列的页被分为数据区域和保留区域。
存储器块的页可被分割用于随机存取。由于闪存设备不支持覆写功能,为了校正存储在被使用的页中的数据,需要准备新页。在此过程中,如果在存储器块中没有可用的页,则导致额外开销,例如必须分配新的存储器块。因此,其初步提供带有可用页的存储器块,这些可用页用于校正被使用的页。因此,可降低这样的额外开销。在该实施例中,这些页形成保留区域。
同时,在向存储器单元阵列的字线编程MSB数据之后,如果LSB数据被编程到下一字线,则存储在耦合到前一字线的存储器单元中的数据会被干扰改变。为了防止此问题,使用地址加扰技术。
地址加扰技术是在将MSB数据编程到耦合到第一字线的存储器单元之前,将LSB数据编程到耦合到下一字线的存储器单元的技术。因此,耦合到前一字线的存储器单元不受编程到下一字线的LSB数据的干扰。地址加扰技术将结合稍后示出的附图详细描述。
图72A和72B是用于说明地址加扰技术的图。图72A示出了存储块的页。示范性地,存储器块包括128个页(页0~页127)。但是,对本领域技术人员显而易见的是本发明不限于此。存储器块可包括任意数量的页。
参考图72A,页0~页123形成数据区域。其余的页124~127形成保留区域。数据被顺序写入数据区域的页中。在此包括保留区域的页,用于随机存取。例如,在页0到123中存储数据之后,数据被存储在下一存储器块的页中。为了校正页0~123,随后使用保留区域的页。
图72B是用于解释将每个数据存储到存储器单元的顺序的图。字线与偶数和奇数位线相交。连接到偶数位线的存储器单元和连接到奇数位线的存储器单元形成不同的页。另外,存储器单元存储LSB和MSB数据。因此,一字线可以完整地存储四个页。例如,在字线0中,页0、1、4、5被存储器。
通过地址加扰,页以预定规则存储。页0被存储在存储器单元中,该存储器单元位于在字线WL0和LSB数据形式的偶数位线的交叉点。页1被存储在存储器单元中,该存储器单元位于在字线WL0和LSB数据形式的奇数位线的交叉点。页2被存储在存储器单元中,该存储器单元位于在字线WL1和LSB数据形式的偶数位线的交叉点。页3被存储在存储器单元中,该存储器单元位于在字线WL1和LSB数据形式的奇数位线的交叉点。
页4被存储在存储器单元中,该存储器单元位于在字线WL0和LSB数据形式的偶数位线的交叉点。页5被存储在存储器单元中,该存储器单元位于在字线WL0和LSB数据形式的奇数位线的交叉点。页6被存储在存储器单元中,该存储器单元位于在字线WL2和LSB数据形式的偶数位线的交叉点。页7被存储在存储器单元中,该存储器单元位于在字线WL2和LSB数据形式的奇数位线的交叉点。以此种方式,通过LSB数据编程可以最小化干扰。
现在再参照图72A,保留区域由页124到127形成。如前所述,保留数据用于校正存储在数据区域中的数据。然而,当在保留区域中存储数据时,如果由于电力故障等等产生编程失败,则存储在数据区域中的数据将被损坏。例如,当在保留区域编程页126时,如果产生编程失败,则存储在数据区域的页122中的数据将被损坏。这是因为页122和126以LSB和MSB数据的形式被存储在相同的存储器单元中。因此,即使当编程MSB数据时产生编程失败,也需要恢复LSB数据。通过根据本发明的编程方法可解决这样的问题。
在该实施例中,尽管2位MLC作为实例被示出,但是本发明不限于该范围。本发明可应用于n位MLC(n是整数)。将结合稍后示出的附图描述4位MLC。
图73A和73B是用于说明当4个位被存储在存储器单元中时的编程顺序的图。图73A示出了存储器块中的页。示范性地,存储器块包括256个页。但是,对于本领域的技术人员显而易见的是,本发明可不限于此范围。存储器块可包括任意数量的页。
参考图73A,页0~247形成数据区域。其余页248~255形成保留区域。数据被顺序写入数据区域的页中。包括保留区域的页以便稍后用于随机存取。例如,在存储页0~247的数据之后,数据被存储在下一存储块的页中。
图73B是用于解释将每个数据存储到存储器单元中的顺序的图。字线与偶数和奇数位线相交叉。连接到偶数位线的存储器单元和连接到奇数位线的存储器单元形成不同的页。另外存储器单元存储4个位(第一到四位)。因此,一字线可以完整地存储八个页。例如,在字线0中,页0~3和8~11被存储。
通过地址加扰,页以预定规则存储。页0被存储在存储器单元中,该存储器单元位于在字线WL0和第一位数据形式的偶数位线的交叉点。页1被存储在存储器单元中,该存储器单元位于在字线WL0和第一位数据形式的奇数位线的交叉点。页2被存储在存储器单元中,该存储器单元位于在字线WL0和第二位数据形式的偶数位线的交叉点。页3被存储在存储器单元中,该存储器单元位于在字线WL0和第二位数据形式的奇数位线的交叉点。
页4被存储在存储器单元中,该存储器单元位于在字线WL1和第一位数据形式的偶数位线的交叉点。页5被存储在存储器单元中,该存储器单元位于在字线WL1和第一位数据形式的奇数位线的交叉点。页6被存储在存储器单元中,该存储器单元位于在字线WL1和第二位数据形式的偶数位线的交叉点。页7被存储在存储器单元中,该存储器单元位于在字线WL1和第二位数据形式的奇数位线的交叉点。
页8被存储在存储器单元中,该存储器单元位于在字线WL0和第三位数据形式的偶数位线的交叉点。页9被存储在存储器单元中,该存储器单元位于在字线WL0和第三位数据形式的奇数位线的交叉点。页10被存储在存储器单元中,该存储器单元位于在字线WL0和第四位数据形式的偶数位线的交叉点。页11被存储在存储器单元中,该存储器单元位于在字线WL0和第四位数据形式的奇数位线的交叉点。在此种方式中,通过LSB数据编程可以最小化干扰。
现在再参照图73A,页248到255形成保留区域。如前所述,保留区域用于校正存储在数据区域的数据。然而,当在保留区域存储数据时,如果由于电力故障等产生编程失败,则存储在数据区域的数据将被损坏。例如,如果当在保留区域编程页252时产生编程失败,则存储在数据区域的页244中的数据将被损坏。这是因为页252和244以第二和第三位数据的形式被存储在相同的存储器单元中。因此,即使当编程MSB数据时产生编程失败,也需要恢复LSB数据。通过根据本发明编程方法可解决这样的问题。
图74是简单示出根据本发明的带有闪存设备的计算***5600的框图。参考图74,计算***5600包括处理器5610、存储器控制器5620、输入单元5630、输出单元5640、闪存5650、以及主存储器单元5660。在图中,实线指***总线,通过该***总线传输数据或命令。
存储器控制器5620和闪存设备5650可形成存储卡。并且,处理器5610、输入单元5630、输出单元5640和主存储单元5660可形成使用存储卡作为存储单元的主机。
根据本发明的计算***5600通过输入单元5630(例如键盘或照相机)从外部输入数据。输入数据可为用户的命令或多媒体数据,例如通过照相机获得的图像数据。输入数据被存储在闪存5650或主存储器单元5660中。
处理器5610处理的结果被存储在闪存5650或主存储器单元5660中。输出单元5640从闪存5650或主存储器单元5660输出数据。例如,输出单元5640以人类可视的形式输出数据。例如,输出单元5640包括显示设备或扬声器。
根据本发明的字线驱动方法可被应用到闪存5650。随着闪存5650可靠性的提高,计算***5600的可靠性也被相应地提高。
闪存5650和/或存储器控制器5620可以各种类型的封装被安置。例如,闪存5650和/或存储器控制器5620可以各种封装类型被放置在其上,这些封装例如层叠封装(PoP)、球栅阵列(BGA)、芯片尺寸封装(CSP)、塑料引线芯片载体(PLCC)、塑料双列直插式封装(PDIP)、晶片中管芯封装(Diein Waffle Pack)、晶圆中管芯形式(Die in Wafer Form)、板上芯片(COB)、陶瓷双列直插式封装(CERDIP)、塑料四方扁平封装(MQFP)、薄型四方扁平封装(TQFP)、小外形集成电路(SOIC)、收缩型小外形封装(SSOP)、薄型小外形封装(TSOP)、***级封装(SIP)、多芯片封装(MCP)、晶圆级制作封装(WFP)、晶圆级堆叠封装(WSP)等。非易失性存储器5650和控制器5620可构成存储卡。
虽然未在图中示出,但是可被本领域技术人员理解的是,需要电源向计算***5600供电。并且,如果计算***5600是移动设备,可能进一步需要向其供电的电池。
图75是简单示出根据本发明实施例的SSD***的框图。参考图75,SSD***5700包括SSD控制器5710和闪存5720到5723。
根据本发明的半导体存储器***可应用于SSD(固态驱动器)。最近,希望用于替代硬盘驱动器(HDD)的SSD产品变得引人注目,并在下一代市场中处于显著地位。SSD是使用存储器芯片(例如存储数据的闪存)的存储单元,而不是用于HDD中的可旋转叠片(plate)。与机械操作的HDD相比SSD在操作速度、外部影响和功耗中更有优势。
参考图75,中央处理单元5711接受来自主机的命令,控制并确定在闪存中存储来自主机的数据或向主机传输来自闪存的数据。ATA接口5712按照中央处理单元5711的控制与主机交换数据。ATA接口5712从主机取得命令和地址并通过CPU总线将该命令和地址传输到中央处理单元5711。根据中央处理单元5711,从主机输入的数据或者将被传递到主机的数据通过ATA接口5712传递到SRAM高速缓存5713,而不通过CPU总线。
SRAM高速缓存5713暂时存储在主机和闪存5720~5723之间移动的数据。另外,SRAM高速缓存5713也用于存储将被中央处理单元5711使用的程序。SRAM高速缓存5713可被作为一种缓冲器存储器,但其并不总是组织为SRAM。闪存接口5714与用作存储单元的非易失性存储器交换数据。可配置闪存接口5714以支持NAND闪存、one-NAND闪存、或者多电平闪存。
根据本发明的半导体存储器***可作为便携式存储设备使用。因此,其可作为MP3播放器、数字照相机、个人数字助理(PDA)、电子书等的存储设备使用。另外,其可作为数字电视或者计算机的存储单元使用。
图76是示出根据本发明的另一个示范性实施例存储器***的框图。在图76示出的存储器***中,存储器5810和存储器控制器5820形成卡5830。例如,卡5830可为存储器卡(例如闪存卡)。即,卡5830可为满足例如数码照相机、个人计算机等电设备的特定工业标准的卡。可以理解的是存储器控制器5820基于卡5830从其它(例如,外部)***接收的控制信号控制存储器5810。
图77是示出根据本发明的另一个示范性实施例的存储器***的框图。图77所示的***表示便携式***5900。便携式***5900可为MP3播放器、视频播放器、以及视频和音频播放器的组合等。如所示的,便携式***5900包括存储器5910和存储器控制器5920。便携式***5900可进一步包括编码器和解码器5930、显示组件5940以及接口5950。
编码器和解码器(EDC)5930处理的数据(视频、音频等)通过存储器控制器5920输入到存储器5910中,并从存储器5910输出。如图77的虚线所示的,数据可直接从EDC5930输入到存储器5910,和/或直接从存储器5910中输出到EDC 5930。
EDC 5930可编码数据以将它们存储在存储器5910中。例如,EDC 5930可以对音频数据执行MP3解码操作,从而在存储器5910中存储数据。在另一个方法中,EDC 5930可进行视频数据的MPEG编码(例如MPEG2,MPEG4等)操作从而将数据存储在存储器5910中。另外,EDC 5930可包括多个基于其它数据格式编码其它类型数据的编码器。例如,EDC 5930可包括用于音频数据的MP3编码器和用于视频数据的MPEG编码器。
EDC 5930可以解码存储器5910的输出。例如,EDC 5930可对存储器5910输出的音频数据进行MP3解码操作。在另一个方法中,EDC 5930可对存储器5910输出的视频数据进行MPEG解码(例如MPEG2、MPEG4等)操作。此外,EDC 5930可包括多个根据其它数据格式解码其它类型数据的解码器。例如,EDC 5930可包括用于音频数据的MP3解码器和用于视频数据的MPEG解码器。
可以理解的是EDC 5930只包括解码器。例如,在先编码的数据可被EDC5930接收并可通过存储器控制器5920和/或存储器5910。
EDC 5930通过接口5950接收用于编码的数据或者接收在先编码的数据。接口5950可遵循公知的标准(例如固件、USB等)。接口5950可进一步包括多于一个的接口单元。例如,接口5950可包括固件接口,USB接口等。来自存储器5910的数据甚至可通过接口5950输出。
显示组件5940可显示从存储器输出和/或由EDC 5930解码的数据。例如,显示组件5940可包括用于输出音频数据的扬声器插口、用于输出视频数据的显示屏等等。
图78示出了主机***5840耦合到图76的卡5830的实施例。在该实施例中,主机***5840可向卡5830施加控制信号,以使得存储器控制器5820控制存储器5810的操作。
根据本发明的第五实施例的闪存***通过修复LSB数据可获得高的数据可靠性。另外,根据本发明的第五实施例的闪存***通过第一实施例描述的多线程函数、第二实施例描述的自由页、以及第三实施例描述的微代码的方式、以及通过修复LSB数据可获得加速。通过高的数据可靠性和加速的获得,可提高根据本发明的第五实施例的闪存***的性能。
[实施例6]保存读计数数据的闪存设备
半导体存储器设备被分为例如DRAM、SRAM等等的易失性存储器以及例如EEPROM、FRAM、PRAM、闪存等等的非易失性存储器。当断电时易失性存储器丢失其中存储的数据,但是非易失性存储器即使在断电时仍保存其中存储的数据。特别地,由于闪存具有高编程速度、低电力消耗、大容量数据存储等优点,它们被广泛使用于计算机***中,例如作为存储介质。
闪存包括存储数据的存储器单元阵列。存储器单元阵列由多个存储器块组成。每个存储器块由多个页形成。每个页由多个存储器单元形成。闪存以存储器块为单位进行擦除操作,以页为单位进行写或读操作。
闪存的每个存储器单元被区分为接通单元或关断单元。接通单元中存储数据“1”,其甚至也被称为“擦除单元”。关断单元存储数据“0”,其甚至也被称为“编程单元”。接通单元具有-3V到-1V之间的阈值电压,关断单元具有+1V到+3V之间的阈值电压。
闪存具有单元串(参照图80)。单元串包括连接到串选择线(SSL)的串选择晶体管、连接到多个字线(WL0~WL31)的存储器单元、以及连接到地选择线(GSL)的地选择晶体管。串选择晶体管连接到位线(BL),地选择晶体管连接到公共源极线(CSL)。
在读操作的过程中,大约0V的选择读电压(Vrd)被施加到闪存的被选择字线,大约4.5V的取消选择读电压(Vread)被施加到未选择字线。此处,取消选择读电压(Vread)是足够接通连接到未选择的字线的存储单元的电压。
同时,由于在闪存读操作中的各种原因,可引起读失败。此处,读失败意味着已编程为接通单元(或数据“1”)的存储器单元被读为关断单元(或数据“0”),或者已编程为关断单元的存储器单元被读为接通单元。读失败存在几个原因。
由于软编程发生典型的读失败。由于软编程的读失败大多发生在接通单元的阈值电压增长时。如果存在读失败,则通常的闪存通过重编程的方式修复读失败。然而,由于需要找出原因,所以在读失败发生之后修复读失败的通常方法是不方便的。
图79是示出根据本发明示范性的存储器***的框图。参考图79,存储器***6010包括闪存6100和存储器控制器6200。
闪存6100是非易失性存储器,遵照存储器控制器6200的控制进行写、读和擦除操作。闪存6100存储读计数数据6105。读计数数据6105甚至也可被存储在闪存6100的元块中或闪存6100的用户数据字段中。读计数数据6105意味着闪存6100的读操作次数。以下将详细描述读计数数据6105。
存储器控制器6200在读取操作中向闪存6100提供读取命令RD_CMD、地址ADDR以及控制信号CTRL。闪存6100从存储器控制器6200输入读取命令和地址,并向相应的字线提供读取电压。
存储器控制器6200包括存储器接口6210、主机接口6220、ECC电路6230、中央处理单元(CPU)6240以及缓冲器存储器6250。缓冲器存储器6250作为CPU 6240的工作存储器被使用。缓冲器存储器6250可用随机存取存储器(RAM)来实现。主机接口6220包括与主机交换数据所需要的协议。
ECC电路6230用于分析或校正存储在闪存6100中的数据的位错误。存储器接口6210直接连接到闪存6100并被用于交换命令、地址和控制信号。CPU 6240进行用于存储器控制器6200的数据交换的整个控制操作。虽然没有示出,本领域技术人员可以理解的是,半导体存储器设备100可进一步包括存储用于与主机接口的代码数据的ROM(未示出)。
根据本发明的存储器***6100为了防止闪存6100的读失败,将读计数数据6105存储到闪存6100中。对于每个读操作,存储器控制器6200通过缓冲器存储器6250增加并周期性地更新读计数数据6105。如果读计数数据6105达到读失败的许可范围,则根据本发明的存储器***6010刷新闪存6100的相应存储器块。根据本发明,可以初步防止读失败。
另外,根据本发明的存储器***6010可以提高读计数数据的可靠性,该读计数数据用作闪速编程和刷新周期的参考。下文将详细描述闪速编程和刷新周期。特别的,闪存***6010在正常操作中周期性地更新对闪存6100的读计数数据,并在突然断电模式中补偿读计数数据,增强读计数数据6105的可靠性。
图80是示出在图79中所示的闪存的框图。参考图80,闪存6100包括存储器单元阵列6110、数据输入/输出电路6120、地址译码器6130以及控制逻辑电路6140。
存储器单元阵列6100包括多个存储器块,例如BLK1~BLK1024。每个存储器块由多个页形成,每个页由多个存储器单元形成。每个存储器单元存储单个位数据或多个位数据。闪存以存储器块为单位进行擦除操作,并进行以页为单位的读或写操作。
参考图80,存储器单元阵列6100可被分为多个部分。每个部分由多个存储器块形成。例如,第一部分由第一到第四存储器块BLK1~BLK4组成,第256部分由第1021到1024存储器块BLK1021~BLK1024组成。在本发明中,在补偿读计数数据时,将存储器单元阵列6110分割为各部分的原因是为了防止存储器***6010在性能方面的降低。
同时,虽然没有在图80中示出,每个存储器块包括连接到串选择线(SSL)的串选择晶体管、连接到多个字线WL的存储器单元、以及连接到地选择字线(GSL)的地选择晶体管。串选择晶体管连接到位线BL,地选择晶体管连接到公共源极线(CSL)。
在读取操作中,闪存6100向串选择线(SSL)和地选择线(GSL)施加电源电压(Vcc)。选择读取电压(Vrd)被施加到被选择的字线,取消选择读取电压(Vread)被施加到未选择的字线。此处,取消选择读取电压(Vread)是足以接通连接到未选择字线的存储器单元的电压。
数据输入/输出电路6120通过多个位线BL连接到存储器单元阵列6110。数据输入/输出电路6120通过数据输入/输出线(未示出)输入数据DATA。输入数据被存储在相应的存储器单元中。同时,数据输入/输出电路6120通过位线BL从存储器单元中读数据。读取的数据通过数据输入/输出线输出到外部。
地址译码器6130通过多个字线WL连接到存储器单元阵列6110。地址译码器6130输入地址ADDR并选择存储器块或页。此处,用于选择存储器块的地址被称为为块地址,用于选择页的地址被称为为页地址。
控制逻辑电路6140响应于命令CMD和控制信号CTRL控制数据输入/输出电路6120和地址译码器6130。此处控制信号CTRL从存储器接口6210提供(参照图79)。同时,控制逻辑电路6140产生在写、读和擦除操作中提供给字线的偏置电压。
在读取操作期间,控制逻辑电路6140产生提供给被选择的字线的选择读取电压(Vrd),以及提供给未选择字线的取消选择读取电压(Vread)。通常,取消选择读取电压(Vread)高于选择读取电压(Vrd)。
图81是示出图80中所示的闪存的单元串和读取失败的图。参考图81,在公共源极线CSL和位线BLK之间顺序的连接着地选择晶体管、多个存储器单元以及串选择晶体管。地选择晶体管被连接到地选择线GSL,多个存储器单元被连接到多个字线WL0~WL31,串选择晶体管连接到串选择线SSL。
在读取操作的过程中,选择读取电压Vrd(大约0V)被施加被选择的字线(例如WL8),取消选择读取电压Vread(大约4.5V)是未选择字线WL0~WL7和WL9~WL31。此处,取消选择读取电压Vread是足以接通连接到未选择字线WL0~WL7和WL9~WL31的存储器单元的电压。
如果被选择的存储器单元M8被软编程,则从被选择的存储器单元M8发生读取失败。此处,软编程意味着由于读取干扰,在擦除状态E中调节的存储器单元M8的阈值电压增加。在图81中,阴影区域表示擦除状态E的存储器单元被软编程。如果由于软编程,被选择的存储器单元M8的阈值电压高于选择读取电压Vrd,则发生读取失败。即,擦除状态E的存储器单元被读或处于编程状态P中时。该位错误被称为由于软编程的读失败。
图82和83示出了被选择的存储器单元被软编程的实例。参考图82,擦除状态E的存储器单元具有-3V和-1V之间的阈值电压,编程状态P的存储器单元具有+1V和+3V之间的阈值电压。提供给选择字线WL8的选择读电压Vrd(参照图81)大约为0V。提供给未选择字线WL0~WL7和WL9~WL31的取消选择读取电压Vread(参照图81)大约是4.5V。
同时,闪存以页为单位进行读取操作。假设对存储器块的所有页(例如32个页)实施读取操作。在此期间,一次的选择读取电压Vrd和31次的取消选择读取电压Vread被施加到每个字线。如果高于电源电压(Vcc)的取消选择读取电压Vread被反复地施加到存储器单元的栅极上,则存储器单元被加强。
如图83所示,如果取消选择读取电压Vread被反复施加到存储器单元的控制栅极CG,则电子从沟道流到浮置栅极。此时,擦除状态E的存储器单元(接通单元)阈值电压提高。如果擦除状态E的存储器单元的阈值电压提高超过-1V,则存储器单元没有充足的读余量。存储器单元的阈值电压变得高于选择读取电压Vrd,其可被读取为编程状态P的存储器单元。
这样,如果通过重复地施加取消选择读取电压Vread提高了存储器单元的阈值电压,则会由于软编程产生读取失败。图82的阴影区域示出了提高的存储器单元的阈值电压的结果。如果由于软编程所产生的读取失败提高了存储器单元的阈值电压,则存储器单元丢失其数据存储能力。
另一方面,在扩展数据存储能力、增加读和写速度以及安全保护重要数据中,总是需要闪存6100(参照附图79)。对于此需要,闪存一致地被设计为在存储器单元阵列中具有存储多个位数据的存储器块(下文称为MLC块)和存储单个位数据的存储器块(下文称为SLC块)。
图84是示出根据本发明的防止存储器***的读失败的方法的流程图。根据本发明的读失败的防止方法,存储器***6010(参照图79)基本防止由于软编程、闪速编程和刷新周期引起的读失败。
在步骤S6110,对存储器模块BLKn实施读取操作。此处,读取操作被进行到存储器块BLKn的被选择页。选择读取电压Vrd被提供到被选择页的字线,取消选择读取电压Vread被提供到其余未选择页的字线。
在步骤S6120,存储器模块BLKn的读计数数据增加。虽然没有在图84中示出,但是在供电时间,存储在闪存6100(参照图79)中的读计数数据6105被载入缓冲器存储器6250(参照图79)中。每当对存储器块BLKn进行读操作的时候,存储器控制器6130(参照图79)增加读计数数据。
在步骤S6130,确定读计数数据是否对应于闪速编程周期。此处,闪速编程周期意味着用于周期性将读计数数据编程到闪存6100的周期,其中该读计数数据在缓冲器存储器6250中被恢复。例如,如果闪速编程周期是100,则每当读计数数据达到100、200、300......等的时候,存储器***6010将读计数数据更新到闪存6100中。如果闪速编程周期是1000,则每当读计数数据达到1000、2000、3000......等的时候,存储器***6010将读计数数据更新到闪存6100中。
在步骤S6140,读计数数据被编程到闪存6100中。换句话说,在步骤S6130,如果读计数数据达到闪速编程周期,则在步骤S6140,存储器***6010将存储在缓冲器存储器6250中的读计数数据编程到闪存6100中。
在步骤S6150,确定读计数数据是否对应于刷新周期。此处,刷新周期意味着用于重编程存储器块BLKn的周期。刷新周期通过编程擦除(PE)周期是可变的。表3示范性示出对PE周期的刷新周期。
[表3]
PE周期 | 刷新周期 |
0.1K | 500k |
0.5K | 300K |
1.0K | 100K |
5.0K | 30K |
少于5.0K | 10K |
从表3,如果PE周期是0.1K(K=1000),则刷新周期是500K。如果PE周期是0.5K,则刷新周期是300K。如果PE周期是1.0K,则刷新周期是100K。如果PE周期是5.0K,则刷新周期是30K。如果PE周期小于5.0K,则刷新周期是10K。同时,刷新周期依照SLC或MLC闪存是可变的。通常,由于SLC闪存在位错误的安全方面高于MLC闪存,所以刷新周期被设置得较高。
在步骤S6160中,如果读计数数据达到刷新周期,则其刷新存储器块BLKn,并启动读计数数据。存在几种刷新存储器块BLKn的方式。一种方式是将存储器块BLKn编程为另一个存储器块。另一个方式是在暂时将数据从存储器块BLKn移动到另一个存储器块之后,通过擦除存储器块BLKn,接着用暂时移动的数据重编程存储器块BLKn来实现。任何刷新方法对基本防止由于软编程引起的读失败都可能是有帮助的。
在步骤S6170,读计数数据被编程到闪存6100中。即,在步骤S6150的过程中,初始化的读计数数据被编程到闪存6100中。步骤S6170是用于初始化存储在闪存6100中的在先的读计数数据的操作。
根据本发明的读失败防止方法可以通过周期性地更新读计数数据和根据刷新周期刷新闪存6100,来基本防止由于软编程引起的读失败。
图85是示出根据本发明的用于存储器***的读失败防止方法的另一个实施例的流程图。存储器***6010(参照图79)可运行于各种模式中,例如睡眠模式、空闲模式、备用模式、激活模式等等。
如果存在模式的改变(S6210),则存储器***6010编程读计数数据到缓冲器存储器6250中(参照图79)(步骤S6220)。此处,编程读计数数据到闪存6100中的操作可能仅出现在改变为特定模式的时候。例如,可仅在从激活模式转变为空闲、睡眠或备用模式时,实施编程读计数数据到闪存6100的操作。
图86是示出如果发生突然断电时补偿读计数数据的方法的流程图。此处,突然断电意味着由于例如在存储器6010(参照图79)操作期间的疏忽之类的各种原因而突然中断电源。通过在突然断电时以适当的值来补偿读计数数据,根据本发明的存储器***6010(参照图79)可有效地防止由于软编程引起的读失败。
在步骤S6310,假设在存储器***6010(参照图79)的操作期间,存储器***6010发生突然断电。如果发生突然断电,则闪存6100(参照图79)保持数据,而缓冲器存储器6250(参照图79)丢失存储在其中的数据。因此,当发生突然断电时,存储在缓冲器存储器6250中的读计数数据被丢失,而存储在闪存6100中的读计数数据被保持。
在存储器***6010的初始化操作中,存储在闪存6100中的读计数数据被载入缓冲器存储器6250中。每当对闪存6100进行读操作的时候,存储在缓冲器存储器6250中的读计数数据增加。
另外,存储在闪存6100中的读计数数据仅被额外的闪速编程操作更新。因此,由于如果发生突然断电,存储在缓冲器存储器6250中的读计数数据被丢失,所以没有方法知道与突然断电的时间相应的读计数数据。根据本发明的存储器***6010提供在发生突然断电时可以补偿读计数数据的方法。
在步骤S6320,存储器***6010再次被供电。此处,供电操作是在突然断电之后被激活的初始化操作。在步骤S6330,读计数数据从闪存6100中载入缓冲器存储器6250中。
在步骤S6340,对存储器块BLKn实施读操作。在步骤S6350,其检测包括存储器块BLKn的部分。此处,如图80所示的,该部分包括多个存储器块BLK1~BLK4。
在步骤S6360,存储器***6010补偿包括在被检测部分中的所有存储器块的读计数数据。例如,假设读计数数据的闪速编程周期是100,则被检测的部分是部分1(参照图80),在补偿存储器块BLK1~BLK4之前的读计数数据如表4所示。
[表4]
在表4中,读计数数据的补偿值被设定为50,这是闪速编程周期100的中间值。在补偿之后的读计数数据分别被设为170、369、468和552。但是读计数数据的补偿值可设为在闪存编程周期范围内的另一个值。
从表4,如果对存储器块BLK1实施读操作,其向包括在第一部分中的存储器块BLK1~BLK4补偿读计数数据。接着,如果向存储器块BLK1021实施读操作,其向包括在第256部分中的存储器块BLK1021~BLK1024补偿读计数数据。
根据本发明的存储器***6010在突然断电时不补偿用于所有数据块BLK1~BLK1024(参照图80)的读计数数据。而是,为包括在其中实施读操作的存储器块的部分补偿读计数数据。根据本发明,可以防止由于补偿所有存储器块的读计数数据引起的存储器***的性能降低。
同时,根据本发明的存储器***6010可包括为突然断电所准备的辅助电池。如果发生突然断电,则存储器***6010通过辅助电池更新读计数数据到闪存6100中。
根据本发明的存储器***6010适用于MLC闪存。图87示范性示出了MLC闪存的单元阈值电压分布的图。图87示出了带有四个电平的多电平单元阈值电压分布。存储器单元具有四个状态E、P1、P2和P3之一。
在读取操作的过程中,选择读电压Vrd1、Vrd2和Vrd3被施加于被选择的字线WL8(参照图81),取消选择读电压Vread被施加到未选择字线WL0~WL7和WL9~WL31(参照图81)。第一选择读电压Vrd1具有在擦除状态E和第一编程状态P1之间的电压电平。第二选择读电压Vrd2具有在第一和第二编程状态P1和P2之间的电压电平。第三选择读电压Vrd3具有在第二和第三编程状态P2和P3之间的电压电平。
同时,在编程校验操作期间,编程校验电压Vvf1、Vvf2和Vvf3被提供给被选择的字线。第一编程校验电压Vvf1是在第一编程操作状态P1中用于编程存储器单元的电压。第二编程校验电压Vvf2是在第二编程状态P2中用于编程存储器单元的电压。第三编程校验电压Vvf3是在第三编程状态P3中用于编程存储器单元的电压。
图88是示出保证闪存数据可靠性的方法的流程图。图88示出了修复位错误而不是修复软编程期间产生的读失败的方法。在闪存中,由于各种原因可发生位错误,这些原因例如是编程干扰或读干扰,但不包括如前所述的软编程。
闪存使用ECC电路修复这样的位错误。然而通过ECC电路修复位错误的范围仅限制于预定数量的位。例如,如果ECC电路可以修复4位错误,它就不能修复多于4位的位错误。图88示出了用于此种情况的位错误修复方法。
在步骤S6410,确定位错误是否是可修正的。从前述情况可知,多于4位的错误位是不可修正的,少于4位的错误位是可修正的。如果可以纠正位错误,则使用ECC电路修复位错误。但是如果通过ECC电路不能纠正位错误,则在移动读电压Vrd的电平后实施错误检测和纠正操作。
在步骤S6420,闪存移动第一读电压Vrd1,并进行错误检测和纠正操作。由于结构属性上的编程干扰和读干扰,尽管闪存单元已经处于被擦除状态,但是闪存单元仍可能是过编程的。对于该情况,如图88所示,参照第一读电压Vrd1的读操作可引起过编程的存储器单元被部分地作为关断单元被读取。如果过编程的存储器单元超出ECC校正的范围,则常规方法不能修复位错误。本发明通过以预定电压为单位提高第一读电压Vrd1来提供错误检测和校正操作,从而使得过编程的存储器单元作为接通单元被读取。
在步骤S6430,在移动第一读电压Vrd1后,确定是否存在位错误。如果不存在位错误,则修复位错误的过程被停止。如果存在位错误,则第一读电压Vrd1被再次移动。在步骤S6440,确定是否ECC循环计数是M(M是自然数)。
在步骤S6450,如果ECC循环计数被重复M次,则其移动第一到第三读电压Vrd1、Vrd2和Vrd3,并接着进行错误检测和校正操作。此处,第一到第三读电压Vrd1、Vrd2和Vrd3的电平可被交替移动如+a、-a、+b和-b(a和b是自然数)。这是因为难于知道存储器单元的阈值电压是否已经被向左或向右移动。
在步骤S6460,在移动第一到第三读电压Vrd1、Vrd2和Vrd3之后,确定是否存在位错误。如果不存在位错误,修复位错误的过程被停止。如果存在位错误,第一到第三读电压Vrd1、Vrd2和Vrd3被再次移动。在步骤S6470,确定是否ECC循环计数是M(M是自然数)。根据本发明的存储器***可以纠正由于另一个原因引起的位错误,但除了由于温度改变引起的位错误。
图89是示出包括根据本发明的存储器***的计算机***的框图。参考图89,计算机***6700包括存储器***6710、供电单元6720、CPU 6730、缓冲器存储器6740、用户接口6750以及***总线6760。
存储器***6710包括闪存6711和存储器控制器6712。可使用闪存或集成电路的单元产品(例如one NANDTM存储器)设计存储器***6710。闪存6711从存储器控制器6712输入读取命令和地址,分析纠错码(ECC),并控制选择读电压Vrd和取消选择读电压Vread。
存储器***6710通过***总线6760电连接到供电单元6720、CPU6730、缓冲器存储器6740和用户接口6750。在闪存6711中是被存储的数据,通过存储器控制器6712,被存储的数据经由用户接口6750提供或被CPU6730所处理。
如果存储器***6710是内置在半导体固态盘(SSD)中的,则可极大地增加计算机***6700的引导速度。虽然未示出,但是图89中所示的计算机***可用于应用芯片组、照相机图像处理器等等。
存储器***可以各种类型的封装被安置。例如,闪存设备和/或存储器控制器可以任何类型的封装而放置在其上,这些封装例如层叠封装(PoP)、球栅阵列(BGA)、芯片尺寸封装(CSP)、塑料引线芯片载体(PLCC)、塑料双列直插式封装(PDIP)、晶片中管芯封装(Die in Waffle Pack)、晶圆中管芯形式(Die in Wafer Form)、板上芯片(COB)、陶瓷双列直插式封装(CERDIP)、塑料四方扁平封装(MQFP)、薄型四方扁平封装(TQFP)、小外形集成电路(SOIC)、收缩型小外形封装(SSOP)、薄型小外形封装(TSOP)、***级封装(SIP)、多芯片封装(MCP)、晶圆级制作封装(WFP)或者晶圆级堆叠封装(WSP)等。
根据本发明的第六实施例的闪存***通过保存读计数数据可获得高的数据可靠性。另外,根据本发明的第六实施例的闪存***通过第一实施例中描述的多线程函数、第二实施例中描述的自由页以及第三实施例中描述的微代码的方式以及通过保存读计数数据可获得加速。通过高数据可靠性和加速的获得,可提高根据本发明的第六个实施例的闪存***的性能。
[实施例7]管理读历史的闪存设备
错误检测和纠正技术有效地恢复由各种因素损坏的数据。例如,当在存储器中存储数据时由于各种因素,在从源到目的地传输数据的过程中也由于数据传输通道的混乱,可损坏数据。
建议了各种用于检测和纠正被损坏的数据的方法。众所周知的错误检测技术是里德-所罗门(RS)码、汉明码、bose-chaudhuri-hocquenghem(BCH)码、循环冗余码(CRC)等。通过以上码可以检测并纠正被损坏的数据。
在大多数使用非易失性存储器设备的应用领域,数据和纠错码(ECC)值(下文称为ECC数据)被一起存储在闪存设备中。在闪存设备读操作的过程中,ECC数据被用于纠正错误,并且使用ECC数据可纠正的位错误的数量受到限制。
可通过错误检测和纠正技术而不需例如众所周知的块置换的额外修复过程,就可纠正在读操作过程中发生的位错误。相反,如果在读过程中发生的位错误是不可纠正的,那么具有位错误的存储在存储器块中的数据将会丢失。
图90是根据本发明的示范性实施例的计算***的框图。图91是根据本发明的示范性实施例的图90的存储器控制器的框图。
参考图90,计算***包括主机7100和基于存储器的存储设备7200。基于存储器的存储设备7200响应于主机7100的请求存储数据或者输出它的存储的数据。基于存储器的存储设备7200通过串联ATA(SATA)接口、并行ATA(PATA)接口、小计算机***接口(SCSI)、增强的小盘接口(ESDI)、集成驱动电(IDE)接口、多媒体卡(MMC)接口、SD接口或者类似接口连接到主机7100。然而,对于本领域的技术人员显而易见的是主机7100和基于存储器的存储设备7200之间的接口不限于以上接口。例如,主机7100和基于存储器的存储设备7200可通过至少两个上面提及的接口彼此连接。
基于存储器的存储设备7200包括控制器7220和存储介质7240。根据本发明的示范性实施例,存储介质7240由闪存形成。然而,对于本领域的技术人员显而易见的是存储介质7240不限于闪存。例如,例如相变存储器、磁放大电阻存储器(magnetroresistive)等非易失性存储器可被用做存储介质7240。为了解释的方便,存储介质7240仅由如图90所示的一个闪存来构成。如图91所示,控制器7220包括主机接口7222、闪存接口7223、处理单元7224、缓冲器存储器7225以及错误检查和纠正(ECC)电路7226。这些部件对本领域技术人员是众所周知的。
在基于存储器的存储设备7200中,控制器7220被配置为管理闪存7240。例如,为了提高基于存储器的存储设备7200的可靠性,控制器7220管理闪存7240的读历史。读历史包括错误位数量、错误位位置、明文(plain)信息、管芯信息、刷新信息等。控制器7220基于读历史管理闪存7240的存储器块。例如,控制器7220根据读取历史管理将作为坏块被处理的闪存7240的存储器块或者目的受限的存储器块。
基于存储器的存储设备7200记录在读操作过程中可被观测的典型的读历史信息(例如错误位数量、错误位位置、明文(plain)信息、管芯信息、刷新信息等),也可基于读历史信息指定具有发生错误高可能性的存储器块作为危险块。因此,当基于存储器的存储设备7200通过将危险模块管理作为与一般模块不同的模块而工作时,基于存储器的存储设备7200限制危险块的可用使用。通过该管理方法,可提高基于存储器的存储设备7200的可靠性。
根据典型存储器管理方法,基于通过编程或擦除操作的结果值而被请求的操作是否成功,用于将被请求操作的块确定为缺陷块的方法目前已被使用。即,基于编程或擦除操作的结果值,确定存储器块是否作为坏块被处理。当存储器设备的最小特征尺寸微型化并且其容量增加时,存储器设备的可靠性被损坏。因此,当在编程或擦除操作的结果是成功的存储器块上执行读操作时,数据错误发生的可能性逐渐增加。而且,当由于存储器的连续使用致使存储器设备逐渐老化时,电路缺陷(即物理缺陷)将增加。即,过程中的缺陷将增加。在此情况中,从具有这些电路缺陷的存储器块(例如危险块)中读出的数据也很可能不能进行错误纠正。
因此,基于存储器的存储设备7200管理存储器块的读历史,以便能够防止危险块损坏的可靠性。下面将更详细地对其进行讨论。
图92是示出根据本发明的示范性实施例的基于存储器的存储设备的读处理的流程图。在下文中,将结合附图更详细地描述基于存储器的存储设备的读过程。
在操作S7100,一旦从主机7100请求读操作,就从作为存储介质的闪存7240读取数据。众所周知的,读取的数据被暂时存储在控制器7220的缓冲器存储器7225中。同时,在操作S7110通过ECC电路7226,控制器7220确定在数据读取中是否产生错误。如果在读取的数据中不存在错误,则进入操作S7130。相反,如果在读取的数据中存在错误,则进入操作S7120。在操作S7120中,控制器7220通过ECC电路7226纠正数据读取的错误。另外,控制器7220更新与从中读取数据的存储器块相关的读历史(即,错误历史)。其后,进入操作S7130。在操作S7130,读取的数据被传输到外部设备,即主机7100。
此处,如图90所示,基于存储器的存储设备7200的控制器7220包括用于管理读历史的表7221(下文中称为读历史表)。读历史表7221存储错误历史,例如错误位的数量、错误位的位置、明文信息等。该读历史表7221被存储在闪存7240中。在加电的过程中,读历史表7221从闪存7240中被载入缓冲器存储器7225中,并且,如果需要,被备份/恢复到闪存7240中。
图93是示出根据本发明的示范性实施例的基于存储器的存储设备7200的块管理方法的流程图。图94是示出根据本发明的示范性实施例的刷新操作的视图。
解释之前,基于存储器的存储设备7200将被配置以基于读历史刷新存储块。例如,控制器7220分析表7221的读历史信息(例如错误位数量)以便控制存储器块的刷新操作。更详细的,在操作S7200中,控制器7220取得读历史表7221的读历史。接着,在操作S7210中,控制器7220基于读历史确定在任意存储器块中的错误位的数量是否超过预定数量的错误位(或指定数量的错误位)。即,控制器7220根据测试结果确定是否存在待刷新的存储块。如果不存在待刷新的存储器块,其处理将被停止。如果存在待刷新的存储器块,进入操作S7220。
在操作S7220,控制器7220控制闪存7240以便刷新被检查的存储器块。将参考图94进行更详细的描述。如图94所示,在操作7001中,待刷新的存储器块的数据被复制到自由块中。接着在操作7002擦除待刷新的存储器块。最后,在操作7003中,存储在自由块中的数据被复制到存储器块。通过上述操作刷新了存储器块。接着,擦除自由块。
当错误位的数量增加时,读错误发生的可能性变得更高。如果发生读错误,则数据将丢失。由于此,根据存储器块的错误位的数量是否超过错误位的指定数量,通过刷新存储器块可以防止数据丢失。因为由于重复的读取操作使得存储器单元被加压(stressed),所以错误位的数量可能增加。即,读/编程/擦除操作性压力可引起读取错误。以下,由于该压力导致的读取错误将被称为基于压力的缺陷。因此,通过刷新存储器模块可防止基于压力的缺陷。结果是,通过减少由于基于压力引起的缺陷所导致的读错误,可以提高基于存储器的存储设备7200的可靠性。
图95是示出根据本发明的另一示范性实施例的基于存储器的存储设备的块管理方法的流程图。下文中,将参照附图更详细地描述块管理方法。
在操作S7300,控制器7220从缓冲器存储器7225的读历史表7221取回读历史。在操作S7310,控制器7220基于读历史确定是否存在被刷新的存储器块。如果不存在被刷新的存储器块,则操作被停止。如果存在被刷新的存储器块,进入操作S7320。
在操作S7320中,控制器7220基于读历史确定在前发生的存储器块错误是由物理缺陷还是由基于压力的缺陷所引起。如上提及的通过刷新操作可以解决基于压力的缺陷。相反,如果在前发生的被刷新的存储器块的错误是由于物理缺陷(例如渐进的缺陷)所引起的,则进入操作S7330。在操作S7330,控制器7220管理历史以限制具有物理缺陷的存储器块的使用。
在该示范性实施例中,可基于被刷新次数的数量,确定被刷新的存储器块是否有物理缺陷。例如,被刷新超过一次的存储器块可被确定为是具有物理缺陷的存储器块。
如上所提及的,在假定由于基于压力的缺陷连续发生错误之下,存储器块被刷新。然而,如果考虑读历史信息中的错误历史,则由于渐进的缺陷,而非基于压力的缺陷,可能连续地发生错误。即使当错误由渐进缺陷,而非基于压力的缺陷引起时,如果存储器块被刷新,则存储在存储器块中的所有数据都会丢失。即,不可能恢复存储在存储器块中的数据。因此,根据本发明的块管理方法,确定具有物理缺陷的存储器块预先被分为危险块。该危险块作为坏块或者作为其它不同于正常块的目的而被处理。例如,如果假定基于存储器的存储设备7200存储M位数据,该类型的危险块可被用于存储N位数据(M<N)。另外,对于此种类型的危险块的读、擦除和编程操作将被限制。根据错误历史,物理或间接的涉及到特定块的存储块也可作为危险块被处理。
图96是示出根据本发明的另一个示范性实施例的基于存储器的存储设备的块管理方法的流程图。图96的块管理方法除了确定操作S7310被省略之外,与图95的块管理方法基本上相同,因此为了简明省略掉重复的描述。确定操作S7310被省略的事实是危险块不基于刷新的存储器块而被分类。即,参考读/错误历史,根据在前发生的存储器块的错误是渐进缺陷(即物理缺陷)还是基于压力的缺陷,就可以分类危险块。
在本发明的示范性实施例中,根据闪存的测试结果基于准备的错误模式可确定渐进的缺陷(即物理缺陷)。另外,基于错误历史可确定渐进缺陷,该错误历史包括在被刷新的存储器块中错误反复的发生的现象。
在本发明的示范性实施例中,基于读取历史可以确定存储块为危险块(即具有物理缺陷的存储块)。例如,参考图96,在操作S7400,控制器7220从缓冲器存储器7225的读历史表7221中取出读历史,并且在操作S7410中,基于读历史,确定存储器块是否有物理缺陷。在操作S7420,根据确定的结果,具有物理缺陷的存储器块将作为危险块被处理。
根据本发明的块管理方法,可不进行用于存储器块的刷新操作。
闪存设备是一种即使在供电被切断时也能保存其存储的数据的非易失性存储器设备。由于例如蜂窝电话、个人数字助理(PDA)、数字照相机、便携式游戏控制台以及MP3播放器的移动设备被广泛使用,闪存设备作为数据存储器和代码存储器也被广泛的应用。另外,闪存设备可用于家电,例如高清晰度电视(HDTV)、数字化多功能光盘或数字化视频光盘(DVD)、路由器以及全球定位***(GPS)。图97是包括根据本发明的存储器***的计算***7300的框图。计算***7300包括通过总线7301连接的微处理器7310、用户接口7320、例如基带芯片组的调制解调器7330、控制器7340和闪存7350。控制器7340与图90中的对应,闪存7350基本上与图90中的相同。微处理器7310处理的或将处理的N位数据(N是等于或大于1的整数)通过控制器7340被存储在闪存7350中。如果计算***是移动设备,则电池7360被额外提供以便向计算***提供操作电压。虽然没有在图中示出,但是对于本领域技术人员显而易见的是,在计算***中可进一步提供应用芯片组、照相机图片处理器(CIS)、移动DRAM等。例如,控制器7340和闪存7350可组成使用非易失性存储器来存储数据的固态驱动器/盘(SSD)。示范性的SSD在美国专利No.2006-0152981中公开,其通过引用加以合并。另外,控制器7340和闪存7350可组成带有用于存储数据的非易失性存储器的存储卡。
图98是根据本发明的另一个示范性实施例的基于存储器的存储设备的框图。
图98的基于存储器的存储设备使用包括存储器7410和存储控制器7420的卡7400来实现。例如,卡7400可以是诸如闪存卡的存储卡。也就是,卡7400可为满足将被用于例如数字照相机、个人计算机等的电子设备中的特定工业标准的卡。可以理解的是基于从其它设备(例如外部设备)接收的控制信号通过存储器控制器7420,卡7400控制存储器7410。
图99是示出包括根据本发明的另一个示范性实施例的基于存储器的设备的存储器***的框图。
图99的存储器***代表便携式设备7500。便携式设备7500可为MP3播放器、视频播放器、视频和音频播放器的组和等。如所示出的,便携式设备7500包括存储器7510和存储器控制器7520。便携式设备7500可包括编码器和解码器(EDC)7530、显示组件7540、以及接口7550。
EDC 7530处理的数据(视频、音频等)通过存储器控制器7520输入存储器7510,或者从存储器7510输出。如图99使用虚线示出的,数据直接从EDC 7530输入到存储器7510中,和/或数据直接从存储器7510输出到EDC7530中。
EDC 7530可编码数据以便将它们存储在存储器7510中。例如,EDC7530可执行关于音频数据的MP3编码操作,以便将它们存储在存储器7510中。在另一个方法中,EDC 7530可执行关于视频数据的MPEG编码操作(例如MPEG2、MPEG4等),以便将它们存储在存储器7510中。另外,EDC 7530可包括多个编码器,以便根据不同的格式编码各种类型数据。例如,EDC 7530可包括用于音频数据的MP3编码器和用于视频数据的MPEG编码器。
EDC 7530可解码存储器7530的输出。例如,EDC 7530可执行关于从存储器7510输出的音频数据的MP3解码操作。在另一个方法中,EDC 7530可对从存储器7510输出的视频数据执行MPEG解码操作(例如MPEG2、MPEG4等)。此外,EDC 7530可包括多个解码器,以便根据不同的格式解码各种类型数据。例如,EDC 7530可包括用于音频数据的MP3解码器和用于视频数据的MPEG解码器。
同样可以理解的是,EDC 7530仅包括解码器。例如,EDC 7530可接收已经编码的数据或者将其传输到存储器控制器7520和/或存储器7510。
EDC 7530可通过接口7550接收用于编码的数据或者已经编码的数据。接口7550可满足众所周知的工业标准(例如固件、USB等)。接口7550可包括至少一个接口。例如,接口7550可包括固件接口、USB接口等。来自存储器7510的数据通过接口7550可被输出。
显示组件7540可向用户显示从存储器输出和/或被EDC 7530解码的数据。例如,显示组件7540包括用于输出音频数据的扬声器插口或者包括用于输出视频数据的显示屏。
根据本发明的第七实施例的闪存***通过管理读历史可获得高的数据可靠性。另外,根据本发明的第七实施例的闪存***通过第一实施例描述的多线程函数、第二实施例描述的自由页、第三实施例描述的微代码的方式以及通过管理读历史而获得加速。通过获得高的数据可靠性和加速,可提高根据本发明的第七实施例的闪存***的性能。
以上公开的主题将被认为是说明性的而非限制性的,所附权利要求试图覆盖所有落入本发明的精神和领域内的这样的修改、增强和其它实施例。因此,为了达到法律允许的最大范围,本发明的范围由下述权利要求和它们的等同物的所能允许的最宽的解释来确定,并且不应被前述详细的说明所约束或限制。
Claims (20)
1、一种非易失性存储器设备,包括:
存储器单元阵列,包括多个多电平单元;以及
控制单元,被配置为确定将要存储在存储器单元阵列中的数据的特性,
其中,控制单元被配置为基于该确定选择多个多位编程方法之一,
其中,根据所选择的多位编程方法将数据存储在存储器单元阵列中,并且当存在最高有效位(MSB)数据的编程失败时,多个多位编程方法的至少之一包含最低有效位(LSB)数据。
2、如权利要求1的非易失性存储器设备,其中
多个多位编程方法包括第一多位编程方法和第二多位编程方法,
如果将要存储的数据的地址对应于存储器单元阵列的第一区域,则控制单元被配置为选择第一多位编程方法作为所选择的多位编程方法,并且如果将要存储的数据的地址对应于存储器单元阵列的第二区域,则控制单元被配置为选择第二多位编程方法作为所选择的多位编程方法。
3、如权利要求2的非易失性存储器设备,其中第一区域是数据区,第二区域是用于校正数据区的保留区。
4、如权利要求2的非易失性存储器设备,其中通过第二多位编程方法编程MSB数据,在针对数据状态编程之后,针对另一个数据状态执行编程。
5、如权利要求4的非易失性存储器设备,其中在通过第二多位编程方法进行编程操作中,在编程LSB数据之后编程第一数据状态;在编程第一数据状态之后编程第二数据状态;并且在编程第二数据状态之后编程第三数据状态。
6、如权利要求5的非易失性存储器设备,其中第一数据状态对应于最高阈值电压状态,第二数据状态对应于比第一数据状态低的阈值电压状态,并且第三数据状态对应于比第二数据状态低的阈值电压状态。
7、如权利要求4的非易失性存储器设备,其中
存储器单元阵列包括用于存储编程执行信息的标志存储器单元,
每当针对每一数据状态完成编程时更新编程执行信息。
8、如权利要求7的非易失性存储器设备,其中
如果分别针对数据状态的多个编程阶段之一中产生编程失败,则控制单元通过参考存储在标志存储器单元中的编程执行信息检测其中产生编程失败的阶段。
9、如权利要求4的非易失性存储器设备,还包括:
错误校正电路,用于检测存储器单元阵列中存储的数据是否存在错误;
其中如果分别针对数据状态的多个编程阶段之一中产生编程失败,则控制单元通过参考错误校正单元是否可校正读数据的错误来检测其中产生编程失败的阶段。
10、如权利要求4的非易失性存储器设备,还包括:
存储器控制器,包括用于存储编程执行信息的标志寄存器,
其中,每当针对每一数据状态完成编程时更新编程执行信息。
11、如权利要求10的非易失性存储器设备,其中
如果分别针对数据状态的多个编程阶段之一中产生编程失败,则控制单元通过参考存储在标志寄存器中的编程执行信息来检测其中产生编程失败的阶段。
12、如权利要求11的非易失性存储器设备,其中控制单元基于编程失败阶段的检测结果确定用于读LSB数据的读电压。
13、如权利要求12的非易失性存储器设备,其中如果在编程第一数据状态和第二数据状态时产生编程失败,则控制单元将地电压确定为读电压。
14、如权利要求12的非易失性存储器设备,其中如果在编程第三数据状态时产生编程失败,则控制单元将第二数据状态和第三数据状态之间的电压确定为读电压。
15、如权利要求2的非易失性存储器设备,其中第二多位编程方法编程LSB和MSB数据以使得每个阈值电压对应于一个数据状态。
16、一种非易失性存储器设备,包括:
闪存设备,包括存储器单元阵列,存储单元阵列包括多个多电平单元;以及
存储器控制器,被配置为控制闪存设备参考将要存储的数据的特性通过多个多位编程方法之一编程多电平单元,
其中,当存在通过最高有效位(MSB)数据的编程失败时,多个多位编程方法的至少之一包含最低有效位(LSB)数据。
17、如权利要求16的非易失性存储器设备,其中
多个多位编程方法包括第一多位编程方法和第二多位编程方法,
如果将要存储的数据不需要具有高可靠性,则存储器控制器被配置为控制闪存设备通过第一多位编程方法进行编程操作,并且如果将要存储的数据需要具有高可靠性,则存储器控制器被配置为控制闪存设备通过第二多位编程方法进行编程操作。
18、如权利要求17的非易失性存储器设备,其中
在通过第二多位编程方法编程MSB数据中,在针对数据状态编程之后,针对另一个数据状态执行编程。
19、如权利要求17的非易失性存储器设备,其中第二多位编程方法编程LSB和MSB数据以使得每个阈值电压对应于一个数据状态。
20、一种非易失性存储器设备的编程方法,包括:
参考将要存储的数据的特性选择多个多位编程方法之一;以及
使用所选择的多位编程方法将数据存储在存储器单元阵列中,当存在最高有效位(MSB)数据的编程失败时,多个多位编程方法的至少之一包含最低有效位(LSB)数据,
其中多个多位编程方法包括第一多位编程方法和第二多位编程方法,如果将要存储的数据的地址对应于存储器单元阵列的第一区域,则选择第一多位编程方法,并且如果将要存储的数据的地址对应于存储器单元阵列的第二区域,则选择第二多位编程方法。
Applications Claiming Priority (14)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR55637/08 | 2008-06-13 | ||
KR20080055642A KR101495795B1 (ko) | 2008-06-13 | 2008-06-13 | 불휘발성 메모리 장치 및 그것의 프로그램 방법 |
KR55642/08 | 2008-06-13 | ||
KR1020080055637A KR101521995B1 (ko) | 2008-06-13 | 2008-06-13 | 불휘발성 메모리 시스템 및 불휘발성 메모리 장치의 액세스방법 |
KR1020080055639A KR101464256B1 (ko) | 2008-06-13 | 2008-06-13 | 온도 센서를 포함하는 메모리 시스템 |
KR1020080055643A KR101460240B1 (ko) | 2008-06-13 | 2008-06-13 | 메모리 기반 저장 장치 및 그것의 블록 관리 기법 |
KR1020080055641A KR20090129624A (ko) | 2008-06-13 | 2008-06-13 | 메모리 시스템 및 그것의 읽기 페일 방지 방법 |
KR55639/08 | 2008-06-13 | ||
KR55641/08 | 2008-06-13 | ||
KR55643/08 | 2008-06-13 | ||
KR1020080056871A KR101437091B1 (ko) | 2008-06-17 | 2008-06-17 | 비대칭 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법 |
KR56871/08 | 2008-06-17 | ||
KR1020080061001A KR101504337B1 (ko) | 2008-06-26 | 2008-06-26 | 메모리 시스템 및 그 구동방법 |
KR61001/08 | 2008-06-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101673581A true CN101673581A (zh) | 2010-03-17 |
CN101673581B CN101673581B (zh) | 2015-05-20 |
Family
ID=41414627
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910205766.2A Active CN101673581B (zh) | 2008-06-13 | 2009-06-15 | 存取半导体存储设备的存储***和方法 |
Country Status (2)
Country | Link |
---|---|
US (7) | US8027194B2 (zh) |
CN (1) | CN101673581B (zh) |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833510A (zh) * | 2010-03-29 | 2010-09-15 | 清华大学 | 闪存ftl的地址转换方法 |
CN103019616A (zh) * | 2012-11-23 | 2013-04-03 | 记忆科技(深圳)有限公司 | 一种固态硬盘及闪存芯片的充放电控制方法 |
CN103294406A (zh) * | 2012-03-05 | 2013-09-11 | 联想(北京)有限公司 | 控制方法、控制装置、存储设备和电子设备 |
CN105051703A (zh) * | 2012-11-13 | 2015-11-11 | 西部数据技术公司 | 用于避免数据存储设备中较低页讹误的方法和设备 |
CN105654988A (zh) * | 2014-11-28 | 2016-06-08 | 爱思开海力士有限公司 | 存储器***及其操作方法 |
CN106021120A (zh) * | 2015-03-24 | 2016-10-12 | 爱思开海力士有限公司 | 存储***及其操作方法 |
CN106201901A (zh) * | 2014-12-10 | 2016-12-07 | 爱思开海力士有限公司 | 包括映射表的控制器、包括半导体存储器件的存储***及其操作方法 |
CN106205698A (zh) * | 2015-04-17 | 2016-12-07 | 旺宏电子股份有限公司 | 改良非易失性存储器的数据保留与读取性能的方法与装置 |
CN106340321A (zh) * | 2015-07-10 | 2017-01-18 | 爱思开海力士有限公司 | 半导体存储器件及其操作方法 |
CN106453730A (zh) * | 2016-12-22 | 2017-02-22 | 珠海市魅族科技有限公司 | 一种智能卡及终端设备 |
CN108073528A (zh) * | 2016-11-16 | 2018-05-25 | 意法半导体(鲁塞)公司 | 非易失性存储器中的存储 |
CN108255418A (zh) * | 2017-12-17 | 2018-07-06 | 天津津航计算技术研究所 | 一种具有操作***的固态硬盘 |
US10116746B2 (en) | 2014-06-20 | 2018-10-30 | Huawei Technologies Co., Ltd. | Data storage method and network interface card |
CN109493911A (zh) * | 2017-09-13 | 2019-03-19 | 三星电子株式会社 | 存储器控制器的操作方法、以及存储器件及其操作方法 |
CN109840214A (zh) * | 2017-11-28 | 2019-06-04 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
TWI664531B (zh) * | 2018-01-25 | 2019-07-01 | 矽創電子股份有限公司 | 快閃記憶體之控制器及控制方法 |
CN110297596A (zh) * | 2018-03-21 | 2019-10-01 | 北京忆恒创源科技有限公司 | 具有宽工作温度范围的存储设备 |
CN110347530A (zh) * | 2018-04-06 | 2019-10-18 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
CN110491435A (zh) * | 2013-06-12 | 2019-11-22 | 三星电子株式会社 | 包括非易失性存储器设备的存储器***及其动态存取方法 |
CN110660442A (zh) * | 2019-05-23 | 2020-01-07 | 深圳市芯天下技术有限公司 | 一种nor flash的高温应用方法及*** |
CN110879789A (zh) * | 2018-09-05 | 2020-03-13 | 爱思开海力士有限公司 | 存储器***及操作该存储器***的方法 |
CN111435333A (zh) * | 2019-01-11 | 2020-07-21 | 爱思开海力士有限公司 | 存储装置及其操作方法 |
CN112711377A (zh) * | 2019-10-25 | 2021-04-27 | 爱思开海力士有限公司 | 分布式存储***的存储节点及其操作方法 |
CN113806254A (zh) * | 2020-06-15 | 2021-12-17 | 爱思开海力士有限公司 | 存储器***、存储器控制器及存储器***的操作方法 |
Families Citing this family (205)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8027194B2 (en) * | 1988-06-13 | 2011-09-27 | Samsung Electronics Co., Ltd. | Memory system and method of accessing a semiconductor memory device |
JP4268605B2 (ja) * | 2005-09-07 | 2009-05-27 | パナソニック株式会社 | 無線通信装置および通信制御方法 |
US8077516B2 (en) * | 2006-05-08 | 2011-12-13 | Macronix International Co., Ltd. | Method and apparatus for accessing memory with read error by changing comparison |
KR20090014036A (ko) * | 2007-08-03 | 2009-02-06 | 삼성전자주식회사 | 읽기 디스터번스로 인한 에러를 방지하는 메모리 시스템 및그 방법 |
KR100967001B1 (ko) * | 2008-05-29 | 2010-06-30 | 주식회사 하이닉스반도체 | 불휘발성 메모리 소자의 프로그램 방법 |
US9720616B2 (en) * | 2008-06-18 | 2017-08-01 | Super Talent Technology, Corp. | Data-retention controller/driver for stand-alone or hosted card reader, solid-state-drive (SSD), or super-enhanced-endurance SSD (SEED) |
US7755965B2 (en) * | 2008-10-13 | 2010-07-13 | Seagate Technology Llc | Temperature dependent system for reading ST-RAM |
WO2010077414A1 (en) * | 2008-12-09 | 2010-07-08 | Rambus Inc. | Non-volatile memory device for concurrent and pipelined memory operations |
US8271855B2 (en) * | 2008-12-22 | 2012-09-18 | Unity Semiconductor Corporation | Memory scrubbing in third dimension memory |
KR20100096616A (ko) * | 2009-02-25 | 2010-09-02 | 삼성전자주식회사 | 저항성 메모리 장치 및 저항성 메모리 장치에서의 입출력 제어 방법 |
KR101565974B1 (ko) * | 2009-03-02 | 2015-11-04 | 삼성전자주식회사 | 불휘발성 메모리 장치, 그것의 프로그램 방법, 그리고 그것을 포함하는 메모리 시스템 |
WO2010143209A1 (en) * | 2009-06-10 | 2010-12-16 | Francesco Falanga | Suspension of memory operations for reduced read latency in memory arrays |
KR101010468B1 (ko) * | 2009-06-29 | 2011-01-21 | 주식회사 하이닉스반도체 | 불휘발성 메모리 소자의 프로그램 방법 |
US8364931B2 (en) * | 2009-06-29 | 2013-01-29 | Mediatek Inc. | Memory system and mapping methods using a random write page mapping table |
US20110002169A1 (en) | 2009-07-06 | 2011-01-06 | Yan Li | Bad Column Management with Bit Information in Non-Volatile Memory Systems |
US8407564B2 (en) * | 2009-07-15 | 2013-03-26 | Intel Corporation | Prediction and cancellation of systematic noise sources in non-volatile memory |
KR20110024832A (ko) * | 2009-09-03 | 2011-03-09 | 주식회사 하이닉스반도체 | 데이터 머지 효율이 향상된 반도체 스토리지 시스템 및 그 제어 방법 |
US8352813B2 (en) * | 2009-09-30 | 2013-01-08 | Freescale Semiconductor, Inc. | Transition fault testing for a non-volatile memory |
US8243525B1 (en) * | 2009-09-30 | 2012-08-14 | Western Digital Technologies, Inc. | Refreshing non-volatile semiconductor memory by reading without rewriting |
US8255661B2 (en) * | 2009-11-13 | 2012-08-28 | Western Digital Technologies, Inc. | Data storage system comprising a mapping bridge for aligning host block size with physical block size of a data storage device |
US8543863B2 (en) * | 2009-11-18 | 2013-09-24 | Microsoft Corporation | Efficiency of hardware memory access using dynamically replicated memory |
US8468294B2 (en) * | 2009-12-18 | 2013-06-18 | Sandisk Technologies Inc. | Non-volatile memory with multi-gear control using on-chip folding of data |
US20110153912A1 (en) * | 2009-12-18 | 2011-06-23 | Sergey Anatolievich Gorobets | Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory |
US8725935B2 (en) | 2009-12-18 | 2014-05-13 | Sandisk Technologies Inc. | Balanced performance for on-chip folding of non-volatile memories |
TWI417889B (zh) * | 2009-12-30 | 2013-12-01 | Silicon Motion Inc | 快閃記憶體之寫入逾時控制方法及其記憶裝置 |
CN102122267A (zh) * | 2010-01-07 | 2011-07-13 | 上海华虹集成电路有限责任公司 | 一种可同时进行数据传输及FTL管理的多通道NANDflash控制器 |
JP5550386B2 (ja) * | 2010-03-03 | 2014-07-16 | 株式会社東芝 | 不揮発性半導体記憶装置及びメモリシステム |
JP5646633B2 (ja) * | 2010-04-12 | 2014-12-24 | 株式会社日立製作所 | ストレージ装置 |
KR101649357B1 (ko) * | 2010-05-10 | 2016-08-19 | 삼성전자주식회사 | 데이터 저장 장치, 그것의 동작 방법, 그리고 그것을 포함한 스토리지 서버 |
KR101662827B1 (ko) * | 2010-07-02 | 2016-10-06 | 삼성전자주식회사 | 쓰기 패턴에 따라 데이터 블록의 쓰기 모드를 선택하는 메모리 시스템 및 그것의 데이터 쓰기 방법 |
KR101077904B1 (ko) * | 2010-07-12 | 2011-10-31 | (주)이더블유비엠코리아 | 페이지 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법 |
KR101205628B1 (ko) * | 2010-08-04 | 2012-11-27 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 이의 독출 방법 |
WO2012021379A2 (en) | 2010-08-10 | 2012-02-16 | Rambus Inc. | Verify before program resume for memory devices |
US9164886B1 (en) * | 2010-09-21 | 2015-10-20 | Western Digital Technologies, Inc. | System and method for multistage processing in a memory storage subsystem |
KR101739556B1 (ko) * | 2010-11-15 | 2017-05-24 | 삼성전자주식회사 | 데이터 저장 장치, 사용자 장치 및 그것의 주소 맵핑 방법 |
US8452914B2 (en) | 2010-11-26 | 2013-05-28 | Htc Corporation | Electronic devices with improved flash memory compatibility and methods corresponding thereto |
KR101734200B1 (ko) * | 2010-12-03 | 2017-05-11 | 삼성전자주식회사 | 적응적 머지를 수행하는 메모리 시스템 및 그것의 데이터 쓰기 방법 |
US8798366B1 (en) * | 2010-12-28 | 2014-08-05 | Amazon Technologies, Inc. | Electronic book pagination |
US9069767B1 (en) | 2010-12-28 | 2015-06-30 | Amazon Technologies, Inc. | Aligning content items to identify differences |
US9846688B1 (en) | 2010-12-28 | 2017-12-19 | Amazon Technologies, Inc. | Book version mapping |
US10049040B2 (en) | 2011-01-21 | 2018-08-14 | Seagate Technology Llc | Just in time garbage collection |
US8874872B2 (en) | 2011-01-21 | 2014-10-28 | Seagate Technology Llc | Garbage collection management in memories |
US8547746B2 (en) | 2011-02-24 | 2013-10-01 | Micron Technology, Inc. | Voltage generation and adjustment in a memory device |
US9881009B1 (en) | 2011-03-15 | 2018-01-30 | Amazon Technologies, Inc. | Identifying book title sets |
US8756474B2 (en) * | 2011-03-21 | 2014-06-17 | Denso International America, Inc. | Method for initiating a refresh operation in a solid-state nonvolatile memory device |
US9342446B2 (en) | 2011-03-29 | 2016-05-17 | SanDisk Technologies, Inc. | Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache |
US8542537B2 (en) * | 2011-04-29 | 2013-09-24 | Spansion Llc | Method and apparatus for temperature compensation for programming and erase distributions in a flash memory |
GB2493340A (en) * | 2011-07-28 | 2013-02-06 | St Microelectronics Res & Dev | Address mapping of boot transactions between dies in a system in package |
US9449692B2 (en) | 2011-08-03 | 2016-09-20 | Micron Technology, Inc. | Functional data programming and reading in a memory |
US9361986B2 (en) * | 2011-09-19 | 2016-06-07 | Sandisk Technologies Inc. | High endurance non-volatile storage |
JP2013089272A (ja) * | 2011-10-19 | 2013-05-13 | Toshiba Corp | 不揮発性半導体記憶装置 |
US8839083B2 (en) * | 2011-10-25 | 2014-09-16 | Taejin Info Tech Co., Ltd. | Secure error detection and synchronous data tagging for high-speed data transfer |
CN102411548B (zh) * | 2011-10-27 | 2014-09-10 | 忆正存储技术(武汉)有限公司 | 闪存控制器以及闪存间数据传输方法 |
KR101889298B1 (ko) * | 2011-11-08 | 2018-08-20 | 삼성전자주식회사 | 불휘발성 메모리를 포함하는 메모리 장치 및 불휘발성 메모리의 제어 방법 |
KR20130059007A (ko) * | 2011-11-28 | 2013-06-05 | 삼성전자주식회사 | 불휘발성 메모리 및 그것을 포함하는 메모리 장치 |
US9064071B2 (en) * | 2011-11-29 | 2015-06-23 | International Business Machines Corporation | Usage-based temporal degradation estimation for memory elements |
US9489133B2 (en) * | 2011-11-30 | 2016-11-08 | International Business Machines Corporation | Optimizing migration/copy of de-duplicated data |
US9544148B2 (en) * | 2011-12-02 | 2017-01-10 | Blackberry Limited | Method of sending a self-signed certificate from a communication device |
KR101893145B1 (ko) | 2011-12-06 | 2018-10-05 | 삼성전자주식회사 | 메모리 시스템들 및 그것들의 블록 복사 방법들 |
DE102012111829A1 (de) | 2011-12-06 | 2013-06-06 | Samsung Electronics Co., Ltd. | Speichersysteme und Blockkopierverfahren davon |
KR101859646B1 (ko) | 2011-12-16 | 2018-05-18 | 삼성전자주식회사 | 보안 데이터를 보호하는 메모리 장치 및 보안 데이터를 이용한 데이터 보호 방법 |
KR101391352B1 (ko) * | 2011-12-19 | 2014-05-07 | 삼성전자주식회사 | 메모리 시스템 및 그것의 프로그램 방법 |
US8611157B2 (en) * | 2011-12-22 | 2013-12-17 | Sandisk Technologies Inc. | Program temperature dependent read |
US9619174B2 (en) * | 2011-12-30 | 2017-04-11 | Intel Corporation | Write mechanism for storage class memory |
DE102013100596B4 (de) | 2012-01-27 | 2023-09-07 | Samsung Electronics Co. Ltd. | Nichtflüchtiges Speichersystem mit Programmier- und Löschverfahren und Blockverwaltungsverfahren |
KR101903440B1 (ko) | 2012-02-21 | 2018-10-02 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 그것의 접지 선택 트랜지스터의 문턱전압 조절 방법 |
KR101965686B1 (ko) | 2012-02-27 | 2019-04-04 | 삼성전자주식회사 | 수직형 저항 메모리 장치의 읽기 방법 |
US20130290606A1 (en) * | 2012-04-30 | 2013-10-31 | Apple Inc. | Power management for a system having non-volatile memory |
US8681548B2 (en) | 2012-05-03 | 2014-03-25 | Sandisk Technologies Inc. | Column redundancy circuitry for non-volatile memory |
US9256545B2 (en) * | 2012-05-15 | 2016-02-09 | Mellanox Technologies Ltd. | Shared memory access using independent memory maps |
KR101925868B1 (ko) | 2012-05-17 | 2018-12-06 | 삼성전자주식회사 | 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템 |
KR101929984B1 (ko) | 2012-05-17 | 2018-12-18 | 삼성전자주식회사 | 모듈러 곱셈기 및 그것의 모듈러 곱셈 방법 |
KR101979392B1 (ko) | 2012-05-17 | 2019-05-16 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 프로그램 방법 |
US9116792B2 (en) * | 2012-05-18 | 2015-08-25 | Silicon Motion, Inc. | Data storage device and method for flash block management |
KR101996004B1 (ko) | 2012-05-29 | 2019-07-03 | 삼성전자주식회사 | 비휘발성 메모리 장치의 프로그램 방법 및 그것의 메모리 시스템 |
DE102013105356A1 (de) | 2012-05-29 | 2013-12-05 | Samsung Electronics Co., Ltd. | Verfahren zum Betreiben von nichtflüchtigen Speichervorrichtungen, die effiziente Fehlererkennung unterstützen |
US8867271B2 (en) | 2012-05-30 | 2014-10-21 | Sandisk Technologies Inc. | Threshold voltage adjustment for a select gate transistor in a stacked non-volatile memory device |
KR101997572B1 (ko) * | 2012-06-01 | 2019-07-09 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 쓰기 방법 |
KR102000634B1 (ko) | 2012-06-07 | 2019-07-16 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 그것의 소거 방법 |
KR101975406B1 (ko) | 2012-07-11 | 2019-05-07 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 그것을 포함하는 메모리 시스템 및 그것의 메모리 블록 관리, 소거, 및 프로그램 방법들 |
KR101939234B1 (ko) | 2012-07-23 | 2019-01-16 | 삼성전자 주식회사 | 메모리 장치, 메모리 시스템 및 상기 메모리 장치의 독출 전압의 제어 방법 |
US20140032820A1 (en) * | 2012-07-25 | 2014-01-30 | Akinori Harasawa | Data storage apparatus, memory control method and electronic device with data storage apparatus |
KR102083490B1 (ko) * | 2012-08-08 | 2020-03-03 | 삼성전자 주식회사 | 비휘발성 메모리 장치, 이를 포함하는 메모리 시스템 및 비휘발성 메모리 장치의 커맨드 실행 제어 방법 |
US8873323B2 (en) * | 2012-08-16 | 2014-10-28 | Transcend Information, Inc. | Method of executing wear leveling in a flash memory device according to ambient temperature information and related flash memory device |
US9471484B2 (en) | 2012-09-19 | 2016-10-18 | Novachips Canada Inc. | Flash memory controller having dual mode pin-out |
US8922928B2 (en) | 2012-09-20 | 2014-12-30 | Dell Products L.P. | Method and system for preventing unreliable data operations at cold temperatures |
US9318154B2 (en) * | 2012-09-20 | 2016-04-19 | Dell Products L.P. | Method and system for preventing unreliable data operations at cold temperatures |
US8897080B2 (en) | 2012-09-28 | 2014-11-25 | Sandisk Technologies Inc. | Variable rate serial to parallel shift register |
US9053011B2 (en) | 2012-09-28 | 2015-06-09 | Sandisk Technologies Inc. | Selective protection of lower page data during upper page write |
US9076506B2 (en) | 2012-09-28 | 2015-07-07 | Sandisk Technologies Inc. | Variable rate parallel to serial shift register |
US9490035B2 (en) | 2012-09-28 | 2016-11-08 | SanDisk Technologies, Inc. | Centralized variable rate serializer and deserializer for bad column management |
KR102016041B1 (ko) | 2012-10-11 | 2019-08-30 | 삼성전자주식회사 | 비휘발성 메모리 장치의 프로그램 방법 |
KR20140056657A (ko) * | 2012-10-30 | 2014-05-12 | 삼성전자주식회사 | 메인 메모리를 구비한 컴퓨터 시스템 및 그것의 제어 방법 |
US9298642B2 (en) | 2012-11-01 | 2016-03-29 | Mellanox Technologies Ltd. | Sharing address translation between CPU and peripheral devices |
JP2014098978A (ja) * | 2012-11-13 | 2014-05-29 | Sony Corp | メモリ制御装置、メモリシステム、情報処理システムおよびメモリ制御方法 |
US9081712B2 (en) * | 2012-12-21 | 2015-07-14 | Dell Products, L.P. | System and method for using solid state storage systems as a cache for the storage of temporary data |
KR102014083B1 (ko) * | 2012-12-31 | 2019-08-27 | 삼성전자주식회사 | 단말기의 메모리 관리방법 및 장치 |
US9760149B2 (en) * | 2013-01-08 | 2017-09-12 | Qualcomm Incorporated | Enhanced dynamic memory management with intelligent current/power consumption minimization |
US9001584B2 (en) * | 2013-02-28 | 2015-04-07 | Micron Technology, Inc. | Sub-block decoding in 3D memory |
US9224478B2 (en) * | 2013-03-06 | 2015-12-29 | Freescale Semiconductor, Inc. | Temperature-based adaptive erase or program parallelism |
US10372551B2 (en) * | 2013-03-15 | 2019-08-06 | Netlist, Inc. | Hybrid memory system with configurable error thresholds and failure analysis capability |
US20140359202A1 (en) * | 2013-05-31 | 2014-12-04 | Western Digital Technologies, Inc. | Reading voltage calculation in solid-state storage devices |
KR20140144989A (ko) * | 2013-06-12 | 2014-12-22 | 에스케이하이닉스 주식회사 | 메모리 시스템, 반도체 메모리 장치 및 그것들의 동작 방법 |
TWI509622B (zh) * | 2013-07-09 | 2015-11-21 | Univ Nat Taiwan Science Tech | 具分散錯誤功能的記憶體及其分散錯誤位元的方法 |
KR20150020385A (ko) * | 2013-08-13 | 2015-02-26 | 에스케이하이닉스 주식회사 | 데이터 저장 장치, 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템 |
US9626288B2 (en) * | 2013-08-14 | 2017-04-18 | Skyera, Llc | Address translation for a non-volatile memory storage device |
US10763752B1 (en) * | 2019-06-25 | 2020-09-01 | Chengdu Monolithic Power Systems Co., Ltd. | Zero-voltage-switching flyback converter |
KR102116983B1 (ko) | 2013-08-14 | 2020-05-29 | 삼성전자 주식회사 | 메모리 장치 및 메모리 시스템의 동작 방법. |
US9355689B2 (en) * | 2013-08-20 | 2016-05-31 | Oracle International Corporation | Detection of multiple accesses to a row address of a dynamic memory within a refresh period |
US9123414B2 (en) * | 2013-11-22 | 2015-09-01 | Micron Technology, Inc. | Memory systems and memory programming methods |
US9336875B2 (en) | 2013-12-16 | 2016-05-10 | Micron Technology, Inc. | Memory systems and memory programming methods |
TWI523025B (zh) * | 2013-12-27 | 2016-02-21 | 慧榮科技股份有限公司 | 資料儲存裝置及其錯誤校正方法 |
KR102244618B1 (ko) * | 2014-02-21 | 2021-04-26 | 삼성전자 주식회사 | 플래시 메모리 시스템 및 플래시 메모리 시스템의 제어 방법 |
US9201833B2 (en) * | 2014-02-26 | 2015-12-01 | American Megatrends, Inc. | Backplane controller capable of transferring and receiving data through USB interface |
US9256569B2 (en) * | 2014-02-26 | 2016-02-09 | American Megatrends, Inc. | Monitoring and managing storage drives and performing backplane controller firmware using a USB interface |
WO2015162758A1 (ja) * | 2014-04-24 | 2015-10-29 | 株式会社日立製作所 | ストレージシステム |
KR102272228B1 (ko) | 2014-05-13 | 2021-07-06 | 삼성전자주식회사 | 불휘발성 메모리 장치, 그것을 포함하는 저장 장치 및 그것의 동작 방법 |
US9110857B1 (en) * | 2014-05-28 | 2015-08-18 | Sandisk Technologies Inc. | Systems and methods for identifying and compressing rarely used data |
KR102249810B1 (ko) * | 2014-07-23 | 2021-05-11 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
US10474618B2 (en) | 2014-09-04 | 2019-11-12 | Western Digital Technologies, Inc. | Debug data saving in host memory on PCIE solid state drive |
US9423961B2 (en) | 2014-09-08 | 2016-08-23 | Apple Inc. | Method to enhance programming performance in multilevel NVM devices |
US9275741B1 (en) * | 2014-09-10 | 2016-03-01 | Western Digital Technologies, Inc. | Temperature compensation management in solid-state memory |
KR102251810B1 (ko) | 2014-09-30 | 2021-05-13 | 삼성전자주식회사 | 메모리 장치, 메모리 시스템 및 메모리 장치에 대한 제어 방법 |
US10078546B2 (en) * | 2014-10-24 | 2018-09-18 | Micron Technology, Inc. | Temperature related error management |
US9934872B2 (en) | 2014-10-30 | 2018-04-03 | Sandisk Technologies Llc | Erase stress and delta erase loop count methods for various fail modes in non-volatile memory |
KR20160071948A (ko) * | 2014-12-12 | 2016-06-22 | 에스케이하이닉스 주식회사 | 반도체 장치 |
US9778848B2 (en) | 2014-12-23 | 2017-10-03 | Intel Corporation | Method and apparatus for improving read performance of a solid state drive |
US9224502B1 (en) | 2015-01-14 | 2015-12-29 | Sandisk Technologies Inc. | Techniques for detection and treating memory hole to local interconnect marginality defects |
US10032524B2 (en) | 2015-02-09 | 2018-07-24 | Sandisk Technologies Llc | Techniques for determining local interconnect defects |
US9972392B2 (en) | 2015-03-21 | 2018-05-15 | NEO Semiconductor, Inc. | SONOS byte-erasable EEPROM |
US10008250B2 (en) * | 2015-03-27 | 2018-06-26 | Intel Corporation | Single level cell write buffering for multiple level cell non-volatile memory |
US9269446B1 (en) | 2015-04-08 | 2016-02-23 | Sandisk Technologies Inc. | Methods to improve programming of slow cells |
US9564219B2 (en) | 2015-04-08 | 2017-02-07 | Sandisk Technologies Llc | Current based detection and recording of memory hole-interconnect spacing defects |
US9772901B2 (en) * | 2015-05-08 | 2017-09-26 | Nxp Usa, Inc. | Memory reliability using error-correcting code |
CN106326134B (zh) * | 2015-06-30 | 2019-10-01 | 华为技术有限公司 | Ftl地址映射的方法及装置 |
KR102491624B1 (ko) * | 2015-07-27 | 2023-01-25 | 삼성전자주식회사 | 데이터 저장 장치의 작동 방법과 상기 데이터 저장 장치를 포함하는 시스템의 작동 방법 |
TWI575374B (zh) * | 2015-08-04 | 2017-03-21 | 群聯電子股份有限公司 | 映射表格更新方法、記憶體儲存裝置及記憶體控制電路單元 |
US10437666B2 (en) * | 2015-08-06 | 2019-10-08 | Nxp B.V. | Integrated circuit device and method for reading data from an SRAM memory |
US10223197B2 (en) | 2015-08-06 | 2019-03-05 | Nxp B.V. | Integrated circuit device and method for applying error correction to SRAM memory |
US9778983B2 (en) | 2015-08-06 | 2017-10-03 | Nxp B.V. | Integrated circuit device and method for reducing SRAM leakage |
US9668337B2 (en) * | 2015-09-08 | 2017-05-30 | Western Digital Technologies, Inc. | Temperature management in data storage devices |
US9715938B2 (en) | 2015-09-21 | 2017-07-25 | Sandisk Technologies Llc | Non-volatile memory with supplemental select gates |
US20170109072A1 (en) * | 2015-10-16 | 2017-04-20 | SK Hynix Inc. | Memory system |
KR102314137B1 (ko) * | 2015-11-04 | 2021-10-18 | 삼성전자 주식회사 | 리커버리 동작을 선택적으로 수행하는 불휘발성 메모리 장치 및 그 동작방법 |
KR102517129B1 (ko) * | 2015-11-19 | 2023-04-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작방법 |
CN108369818B (zh) * | 2016-03-09 | 2024-01-30 | 华为技术有限公司 | 一种闪存设备的刷新方法和装置 |
KR102512448B1 (ko) * | 2016-03-28 | 2023-03-22 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작 방법 |
KR101923661B1 (ko) * | 2016-04-04 | 2018-11-29 | 주식회사 맴레이 | 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스 |
KR102548599B1 (ko) | 2016-06-17 | 2023-06-29 | 삼성전자주식회사 | 버퍼메모리를 포함하는 메모리 장치 및 이를 포함하는 메모리 모듈 |
KR102624606B1 (ko) * | 2016-07-04 | 2024-01-15 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 그 동작 방법 |
US10853125B2 (en) * | 2016-08-19 | 2020-12-01 | Oracle International Corporation | Resource efficient acceleration of datastream analytics processing using an analytics accelerator |
KR102659596B1 (ko) * | 2016-08-26 | 2024-04-19 | 삼성전자주식회사 | 비휘발성 메모리 장치 |
JP6652470B2 (ja) * | 2016-09-07 | 2020-02-26 | キオクシア株式会社 | 半導体記憶装置 |
TWI621129B (zh) | 2016-10-25 | 2018-04-11 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料寫入方法 |
RU2636107C1 (ru) * | 2016-10-28 | 2017-11-20 | Общество с ограниченной ответственностью "Лаборатория информационно-измерительной и преобразовательной техники" | Способ записи данных на накопитель цифровой информации на базе flash-памяти типа nand |
US10489313B2 (en) | 2016-10-31 | 2019-11-26 | Alibaba Group Holding Limited | Flash storage failure rate reduction and hyperscale infrastructure robustness enhancement through the MRAM-NOR flash based cache architecture |
US10649896B2 (en) * | 2016-11-04 | 2020-05-12 | Samsung Electronics Co., Ltd. | Storage device and data processing system including the same |
KR102530587B1 (ko) * | 2017-09-20 | 2023-05-08 | 삼성전자주식회사 | 데이터 저장 장치 및 이의 제조 방법 |
KR102208058B1 (ko) * | 2016-11-04 | 2021-01-27 | 삼성전자주식회사 | 저장 장치 및 이를 포함하는 데이터 처리 시스템 |
TWI718317B (zh) * | 2016-11-04 | 2021-02-11 | 南韓商三星電子股份有限公司 | 資料儲存裝置及資料處理系統 |
CN108021471A (zh) * | 2016-11-04 | 2018-05-11 | 三星电子株式会社 | 数据存储装置、数据处理***及制造数据存储装置的方法 |
US9977627B1 (en) * | 2016-11-09 | 2018-05-22 | Macronix International Co., Ltd. | Memory device and memory controlling method |
CN109891396A (zh) * | 2017-01-27 | 2019-06-14 | 惠普发展公司,有限责任合伙企业 | 读取操作重定向 |
US9933963B1 (en) | 2017-03-01 | 2018-04-03 | Seagate Technology | Open block handling to reduce write errors |
US10678633B2 (en) * | 2017-11-30 | 2020-06-09 | SK Hynix Inc. | Memory system and operating method thereof |
KR20180100984A (ko) * | 2017-03-03 | 2018-09-12 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
JP2018156696A (ja) * | 2017-03-15 | 2018-10-04 | 東芝メモリ株式会社 | 半導体記憶装置及びメモリシステム |
TWI615849B (zh) * | 2017-03-16 | 2018-02-21 | 宇瞻科技股份有限公司 | 在非揮發性儲存裝置上提升資料耐久性之控制方法 |
KR102267046B1 (ko) | 2017-03-29 | 2021-06-22 | 삼성전자주식회사 | 스토리지 장치 및 배드 블록 지정 방법 |
TWI611296B (zh) | 2017-04-13 | 2018-01-11 | 慧榮科技股份有限公司 | 記憶體控制器與資料儲存裝置 |
US10541032B2 (en) * | 2017-05-10 | 2020-01-21 | Micron Technology, Inc. | Responding to power loss |
CN109213436B (zh) | 2017-06-30 | 2021-08-24 | 慧荣科技股份有限公司 | 降低快闪储存介面中传收数据错误方法及装置 |
US10637509B2 (en) * | 2017-06-30 | 2020-04-28 | Silicon Motion, Inc. | Methods for reducing data errors in transceiving of a flash storage interface and apparatuses using the same |
US10630424B2 (en) | 2017-06-30 | 2020-04-21 | Silicon Motion, Inc. | Methods for reducing data errors in transceiving of a flash storage interface and apparatuses using the same |
US10848263B2 (en) | 2017-06-30 | 2020-11-24 | Silicon Motion, Inc. | Methods for reducing data errors in transceiving of a flash storage interface and apparatuses using the same |
US10423335B2 (en) | 2017-06-30 | 2019-09-24 | Seagate Technology Llc | Enhancing quality of service of a storage device |
JP2019057194A (ja) | 2017-09-22 | 2019-04-11 | 東芝メモリ株式会社 | メモリシステム、及び不揮発性メモリの制御方法 |
KR20190064033A (ko) * | 2017-11-30 | 2019-06-10 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
KR102420161B1 (ko) * | 2017-12-01 | 2022-07-12 | 삼성전자주식회사 | 메모리 컨트롤러 및 그것의 제어 방법 |
CN111868697A (zh) * | 2017-12-12 | 2020-10-30 | 华为技术有限公司 | 存储级存储***的磨损均衡方案及其实现方式 |
KR20190078133A (ko) * | 2017-12-26 | 2019-07-04 | 에스케이하이닉스 주식회사 | 컨트롤러 및 그것의 동작방법 |
US10339983B1 (en) * | 2017-12-29 | 2019-07-02 | Micron Technology, Inc. | Temperature-based memory operations |
KR20190095825A (ko) * | 2018-02-07 | 2019-08-16 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR102468751B1 (ko) * | 2018-05-09 | 2022-11-21 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US10585795B2 (en) * | 2018-05-31 | 2020-03-10 | Micron Technology, Inc. | Data relocation in memory having two portions of data |
US10908824B2 (en) * | 2018-11-08 | 2021-02-02 | Winbond Electronics Corp. | Flash memory storage device and method thereof |
JP7309349B2 (ja) * | 2018-11-30 | 2023-07-18 | キヤノン株式会社 | 情報処理装置、およびその制御方法、プログラム |
EP3903312A4 (en) * | 2018-12-28 | 2022-08-24 | Micron Technology, Inc. | MEMORY WITH ENHANCED TEMPERATURE RELIABILITY AND CROSS READ PERFORMANCE |
TWI797408B (zh) * | 2018-12-28 | 2023-04-01 | 美商美光科技公司 | 具有改善之跨溫度可靠度與讀取性能之記憶體 |
CN113661665B (zh) | 2019-04-16 | 2023-12-19 | 三菱电机株式会社 | 安全通信装置、安全通信***、安全通信方法及计算机可读取的记录介质 |
US11257543B2 (en) * | 2019-06-25 | 2022-02-22 | Stmicroelectronics International N.V. | Memory management device, system and method |
US11094394B2 (en) * | 2019-09-24 | 2021-08-17 | Micron Technology, Inc. | Imprint management for memory |
US11145336B2 (en) * | 2019-10-30 | 2021-10-12 | Micron Technology, Inc. | Program pulse control using environmental parameters |
US11892956B2 (en) * | 2019-12-31 | 2024-02-06 | Micron Technology, Inc. | Performance of memory system background operations |
JP2022046887A (ja) * | 2020-09-11 | 2022-03-24 | キオクシア株式会社 | 半導体記憶装置 |
KR20220035577A (ko) * | 2020-09-14 | 2022-03-22 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US11940933B2 (en) | 2021-03-02 | 2024-03-26 | Mellanox Technologies, Ltd. | Cross address-space bridging |
JP2023002294A (ja) * | 2021-06-22 | 2023-01-10 | キオクシア株式会社 | メモリシステムおよびリフレッシュ制御方法 |
TWI821965B (zh) * | 2021-09-29 | 2023-11-11 | 慧榮科技股份有限公司 | 編碼歷程資訊的存取方法及電腦程式產品及裝置 |
US11972150B2 (en) | 2021-09-29 | 2024-04-30 | Silicon Motion, Inc. | Method and non-transitory computer-readable storage medium and apparatus for programming data into flash memory through dedicated acceleration hardware |
US11860775B2 (en) | 2021-09-29 | 2024-01-02 | Silicon Motion, Inc. | Method and apparatus for programming data into flash memory incorporating with dedicated acceleration hardware |
US11907580B2 (en) * | 2021-12-22 | 2024-02-20 | Micron Technology, Inc. | Corrective read of a memory device with reduced latency |
US11983431B2 (en) * | 2022-01-20 | 2024-05-14 | Dell Products L.P. | Read-disturb-based read temperature time-based attenuation system |
US11928354B2 (en) * | 2022-01-21 | 2024-03-12 | Dell Products L.P. | Read-disturb-based read temperature determination system |
US11922035B2 (en) | 2022-01-21 | 2024-03-05 | Dell Products L.P. | Read-disturb-based read temperature adjustment system |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010037694A (ko) * | 1999-10-19 | 2001-05-15 | 박종섭 | 플레시 메모리 회로 및 시스템 |
US20080094893A1 (en) * | 2006-10-19 | 2008-04-24 | Choi Jin-Hyeok | Nonvolatile memory system and associated programming methods |
CN101197189A (zh) * | 2006-09-15 | 2008-06-11 | 三星电子株式会社 | 闪存装置和用于该闪存装置的编程方法 |
Family Cites Families (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8027194B2 (en) * | 1988-06-13 | 2011-09-27 | Samsung Electronics Co., Ltd. | Memory system and method of accessing a semiconductor memory device |
DE69024086T2 (de) * | 1989-04-13 | 1996-06-20 | Sundisk Corp | EEprom-System mit Blocklöschung |
US6347051B2 (en) * | 1991-11-26 | 2002-02-12 | Hitachi, Ltd. | Storage device employing a flash memory |
JPH05181779A (ja) | 1992-01-07 | 1993-07-23 | Hitachi Ltd | 外部記憶制御装置 |
JP3328321B2 (ja) | 1992-06-22 | 2002-09-24 | 株式会社日立製作所 | 半導体記憶装置 |
US5537358A (en) | 1994-12-06 | 1996-07-16 | National Semiconductor Corporation | Flash memory having adaptive sensing and method |
JP3176019B2 (ja) | 1995-04-05 | 2001-06-11 | 株式会社東芝 | 不揮発性半導体記憶部を含む記憶システム |
JPH08339693A (ja) | 1995-06-15 | 1996-12-24 | Nippondenso Co Ltd | 不揮発性半導体記憶装置 |
DE19606629A1 (de) | 1996-02-22 | 1997-08-28 | Siemens Nixdorf Inf Syst | Mehrprozessor-Zentraleinheit |
US6335878B1 (en) * | 1998-07-28 | 2002-01-01 | Hitachi, Ltd. | Non-volatile multi-level semiconductor flash memory device and method of driving same |
KR100303217B1 (ko) | 1996-08-28 | 2001-09-28 | 박종섭 | 피드백루프를이용하여기록캐시환경에서캐시플러시입출력속도를제어하기위한방법및장치 |
JPH10154101A (ja) | 1996-11-26 | 1998-06-09 | Toshiba Corp | データ記憶システム及び同システムに適用するキャッシュ制御方法 |
US5909449A (en) * | 1997-09-08 | 1999-06-01 | Invox Technology | Multibit-per-cell non-volatile memory with error detection and correction |
JP3270367B2 (ja) | 1997-09-29 | 2002-04-02 | エヌイーシーフィールディング株式会社 | 半導体記憶装置 |
JP3078530B2 (ja) | 1998-10-12 | 2000-08-21 | ローム株式会社 | 不揮発性半導体メモリic及びそのバーンインテスト方法 |
US6209078B1 (en) | 1999-03-25 | 2001-03-27 | Lsi Logic Corporation | Accelerated multimedia processor |
WO2001022232A1 (fr) * | 1999-09-17 | 2001-03-29 | Hitachi, Ltd. | Memoire dans laquelle le nombre de corrections d'erreurs est enregistre |
JP4601119B2 (ja) | 2000-05-02 | 2010-12-22 | 株式会社アドバンテスト | メモリ試験方法・メモリ試験装置 |
US6675289B1 (en) | 2000-06-30 | 2004-01-06 | Broadcom Corporation | System and method for executing hybridized code on a dynamically configurable hardware environment |
DE10040890C1 (de) | 2000-08-18 | 2002-01-31 | Trw Automotive Electron & Comp | System und Verfahren zum sicheren Hochtemperaturbetrieb eines Flash-Speichers |
US6725342B1 (en) | 2000-09-26 | 2004-04-20 | Intel Corporation | Non-volatile mass storage cache coherency apparatus |
JP2002108716A (ja) | 2000-09-27 | 2002-04-12 | Toshiba Microelectronics Corp | 不揮発性半導体記憶装置及びその制御方法 |
JP2002278828A (ja) | 2001-03-21 | 2002-09-27 | Sony Corp | ガーベージコレクション実行方法、コンピュータプログラム、プログラム格納媒体、および情報処理装置 |
US6810495B2 (en) | 2001-03-30 | 2004-10-26 | International Business Machines Corporation | Method and system for software rejuvenation via flexible resource exhaustion prediction |
JP2003022687A (ja) * | 2001-07-09 | 2003-01-24 | Mitsubishi Electric Corp | 半導体記憶装置 |
JP4113423B2 (ja) | 2002-12-04 | 2008-07-09 | シャープ株式会社 | 半導体記憶装置及びリファレンスセルの補正方法 |
US7073029B2 (en) | 2003-01-27 | 2006-07-04 | Hewlett-Packard Development Company, L.P. | Storage system using fast storage and log-structured storage |
JP4073799B2 (ja) * | 2003-02-07 | 2008-04-09 | 株式会社ルネサステクノロジ | メモリシステム |
KR100577988B1 (ko) | 2003-12-24 | 2006-05-11 | 주식회사 포인칩스 | 오류 검출 능력이 강화된 플래시 메모리 및 다비트 오류검출 방법 |
US20050144516A1 (en) | 2003-12-30 | 2005-06-30 | Gonzalez Carlos J. | Adaptive deterministic grouping of blocks into multi-block units |
US7139864B2 (en) | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
KR100541642B1 (ko) | 2004-03-11 | 2006-01-10 | 삼성전자주식회사 | 플래시 메모리의 데이터 관리 장치 및 방법 |
JP4051359B2 (ja) | 2004-07-26 | 2008-02-20 | 株式会社アプリックス | 世代別ガベージコレクション方法及び世代別ガベージコレクションプログラム |
EP3422583B1 (en) | 2004-08-30 | 2020-07-08 | Google LLC | Systems and methods for providing nonvolatile memory management in wireless phones |
JP4261462B2 (ja) | 2004-11-05 | 2009-04-30 | 株式会社東芝 | 不揮発性メモリシステム |
JP4746326B2 (ja) | 2005-01-13 | 2011-08-10 | 株式会社東芝 | 不揮発性半導体記憶装置 |
KR20050027233A (ko) | 2005-02-03 | 2005-03-18 | 주식회사 퍼스터 | 파일 시스템이 운용되는 장치에서의 낸드 플래시 메모리 액세스 방법 |
KR100722658B1 (ko) | 2005-02-14 | 2007-05-28 | 최명렬 | 메모리 장치 및 그 제어 방법 |
JP4874566B2 (ja) | 2005-04-11 | 2012-02-15 | 株式会社東芝 | 半導体記憶装置 |
KR101257848B1 (ko) | 2005-07-13 | 2013-04-24 | 삼성전자주식회사 | 복합 메모리를 구비하는 데이터 저장 시스템 및 그 동작방법 |
JP4991131B2 (ja) | 2005-08-12 | 2012-08-01 | 株式会社東芝 | 半導体記憶装置 |
KR100756711B1 (ko) | 2005-08-12 | 2007-09-07 | 가부시끼가이샤 도시바 | 데이터의 파괴를 방지하는 반도체 메모리 장치 |
JP2007059024A (ja) | 2005-08-26 | 2007-03-08 | Micron Technol Inc | 温度補償された読み出し・検証動作をフラッシュ・メモリにおいて生成するための方法及び装置 |
KR20070031647A (ko) | 2005-09-15 | 2007-03-20 | 삼성전자주식회사 | 플래시 메모리 장치에 압축 데이터를 기록하는 방법 및상기 기록된 데이터를 읽는 방법, 그리고 상기 방법을이용하는 플래시 메모리 장치 |
US7405988B2 (en) | 2005-09-26 | 2008-07-29 | Silicon Storage Technology, Inc. | Method and apparatus for systematic and random variation and mismatch compensation for multilevel flash memory operation |
US7529905B2 (en) | 2005-10-13 | 2009-05-05 | Sandisk Corporation | Method of storing transformed units of data in a memory system having fixed sized storage blocks |
JP2007233753A (ja) | 2006-03-01 | 2007-09-13 | Fujitsu Ltd | 加速度センサを備えた情報処理装置 |
JP4866117B2 (ja) | 2006-03-22 | 2012-02-01 | パナソニック株式会社 | 不揮発性記憶装置、そのデータ書き込み方法、不揮発性記憶システム及びメモリコントローラ |
US7778077B2 (en) * | 2006-05-15 | 2010-08-17 | Sandisk Corporation | Non-volatile memory system with end of life calculation |
JP2008010046A (ja) | 2006-06-28 | 2008-01-17 | Toshiba Corp | 不揮発性半導体記憶装置 |
KR100771883B1 (ko) * | 2006-09-06 | 2007-11-01 | 삼성전자주식회사 | 멀티-레벨 불휘발성 메모리 장치 및 프로그램 방법 |
TWI306255B (en) | 2006-09-26 | 2009-02-11 | Ite Tech Inc | Control device for accelerating memory to execute iterant command |
KR100806343B1 (ko) | 2006-10-19 | 2008-02-27 | 삼성전자주식회사 | 플래시 메모리를 포함한 메모리 시스템 및 그것의 맵핑테이블 관리 방법 |
KR100771521B1 (ko) | 2006-10-30 | 2007-10-30 | 삼성전자주식회사 | 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법 |
KR100799688B1 (ko) | 2007-01-03 | 2008-02-01 | 삼성전자주식회사 | 백업 회로를 갖는 메모리 시스템 및 그것의 프로그램 방법 |
KR100850515B1 (ko) * | 2007-01-24 | 2008-08-05 | 삼성전자주식회사 | 멀티레벨 셀 플래시 메모리를 갖는 메모리 시스템 및그것의 프로그램 방법 |
JP5051514B2 (ja) * | 2007-02-23 | 2012-10-17 | 日本電気株式会社 | メモリエラーパターン記録システム、メモリエラーパターン記録方法 |
KR100875979B1 (ko) * | 2007-04-19 | 2008-12-24 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것을 포함한 메모리 시스템 및그것의 엘에스비 읽기 방법 |
US7856576B2 (en) | 2007-04-25 | 2010-12-21 | Hewlett-Packard Development Company, L.P. | Method and system for managing memory transactions for memory repair |
US7743203B2 (en) * | 2007-05-11 | 2010-06-22 | Spansion Llc | Managing flash memory based upon usage history |
JP2008287404A (ja) | 2007-05-16 | 2008-11-27 | Hitachi Ltd | 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法 |
KR101393622B1 (ko) * | 2007-08-30 | 2014-05-13 | 삼성전자주식회사 | 멀티 비트 플래시 메모리 장치를 포함하는 시스템 및그것의 데이터 처리 방법 |
KR20090026941A (ko) | 2007-09-11 | 2009-03-16 | 삼성전자주식회사 | 복수개의 비휘발성 데이터 저장매체를 구비한 저장장치의가상 파일 시스템에서 어드레스 맵핑을 수행하는 방법 및그 장치 |
-
2009
- 2009-06-12 US US12/457,485 patent/US8027194B2/en active Active
- 2009-06-15 CN CN200910205766.2A patent/CN101673581B/zh active Active
-
2011
- 2011-08-11 US US13/137,401 patent/US8565021B2/en active Active
- 2011-08-12 US US13/137,409 patent/US8638585B2/en active Active
- 2011-08-15 US US13/137,425 patent/US8625344B2/en active Active
- 2011-08-15 US US13/137,422 patent/US8614919B2/en active Active
- 2011-08-15 US US13/137,423 patent/US8760918B2/en active Active
- 2011-08-15 US US13/137,424 patent/US8705272B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010037694A (ko) * | 1999-10-19 | 2001-05-15 | 박종섭 | 플레시 메모리 회로 및 시스템 |
CN101197189A (zh) * | 2006-09-15 | 2008-06-11 | 三星电子株式会社 | 闪存装置和用于该闪存装置的编程方法 |
US20080094893A1 (en) * | 2006-10-19 | 2008-04-24 | Choi Jin-Hyeok | Nonvolatile memory system and associated programming methods |
Cited By (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833510B (zh) * | 2010-03-29 | 2012-10-10 | 清华大学 | 闪存ftl的地址转换方法 |
CN101833510A (zh) * | 2010-03-29 | 2010-09-15 | 清华大学 | 闪存ftl的地址转换方法 |
CN103294406A (zh) * | 2012-03-05 | 2013-09-11 | 联想(北京)有限公司 | 控制方法、控制装置、存储设备和电子设备 |
CN103294406B (zh) * | 2012-03-05 | 2016-08-17 | 联想(北京)有限公司 | 控制方法、控制装置、存储设备和电子设备 |
CN105051703A (zh) * | 2012-11-13 | 2015-11-11 | 西部数据技术公司 | 用于避免数据存储设备中较低页讹误的方法和设备 |
CN103019616A (zh) * | 2012-11-23 | 2013-04-03 | 记忆科技(深圳)有限公司 | 一种固态硬盘及闪存芯片的充放电控制方法 |
CN103019616B (zh) * | 2012-11-23 | 2015-11-25 | 记忆科技(深圳)有限公司 | 一种固态硬盘及闪存芯片的充放电控制方法 |
CN110491435B (zh) * | 2013-06-12 | 2023-09-29 | 三星电子株式会社 | 包括非易失性存储器设备的存储器***及其动态存取方法 |
CN110491435A (zh) * | 2013-06-12 | 2019-11-22 | 三星电子株式会社 | 包括非易失性存储器设备的存储器***及其动态存取方法 |
US10116746B2 (en) | 2014-06-20 | 2018-10-30 | Huawei Technologies Co., Ltd. | Data storage method and network interface card |
CN105654988A (zh) * | 2014-11-28 | 2016-06-08 | 爱思开海力士有限公司 | 存储器***及其操作方法 |
CN106201901A (zh) * | 2014-12-10 | 2016-12-07 | 爱思开海力士有限公司 | 包括映射表的控制器、包括半导体存储器件的存储***及其操作方法 |
CN106201901B (zh) * | 2014-12-10 | 2020-07-07 | 爱思开海力士有限公司 | 包括映射表的控制器、包括半导体存储器件的存储***及其操作方法 |
CN106021120A (zh) * | 2015-03-24 | 2016-10-12 | 爱思开海力士有限公司 | 存储***及其操作方法 |
CN106205698A (zh) * | 2015-04-17 | 2016-12-07 | 旺宏电子股份有限公司 | 改良非易失性存储器的数据保留与读取性能的方法与装置 |
CN106340321B (zh) * | 2015-07-10 | 2020-10-02 | 爱思开海力士有限公司 | 半导体存储器件及其操作方法 |
CN106340321A (zh) * | 2015-07-10 | 2017-01-18 | 爱思开海力士有限公司 | 半导体存储器件及其操作方法 |
CN108073528B (zh) * | 2016-11-16 | 2021-10-29 | 意法半导体(鲁塞)公司 | 非易失性存储器中的存储 |
CN108073528A (zh) * | 2016-11-16 | 2018-05-25 | 意法半导体(鲁塞)公司 | 非易失性存储器中的存储 |
CN106453730B (zh) * | 2016-12-22 | 2019-07-26 | 珠海市魅族科技有限公司 | 一种智能卡及终端设备 |
CN106453730A (zh) * | 2016-12-22 | 2017-02-22 | 珠海市魅族科技有限公司 | 一种智能卡及终端设备 |
CN109493911A (zh) * | 2017-09-13 | 2019-03-19 | 三星电子株式会社 | 存储器控制器的操作方法、以及存储器件及其操作方法 |
CN109493911B (zh) * | 2017-09-13 | 2023-09-29 | 三星电子株式会社 | 存储器控制器的操作方法、以及存储器件及其操作方法 |
CN109840214A (zh) * | 2017-11-28 | 2019-06-04 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
CN108255418A (zh) * | 2017-12-17 | 2018-07-06 | 天津津航计算技术研究所 | 一种具有操作***的固态硬盘 |
TWI664531B (zh) * | 2018-01-25 | 2019-07-01 | 矽創電子股份有限公司 | 快閃記憶體之控制器及控制方法 |
CN110297596A (zh) * | 2018-03-21 | 2019-10-01 | 北京忆恒创源科技有限公司 | 具有宽工作温度范围的存储设备 |
CN110347530A (zh) * | 2018-04-06 | 2019-10-18 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
CN110347530B (zh) * | 2018-04-06 | 2023-07-28 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
CN110879789B (zh) * | 2018-09-05 | 2023-05-12 | 爱思开海力士有限公司 | 存储器***及操作该存储器***的方法 |
CN110879789A (zh) * | 2018-09-05 | 2020-03-13 | 爱思开海力士有限公司 | 存储器***及操作该存储器***的方法 |
CN111435333A (zh) * | 2019-01-11 | 2020-07-21 | 爱思开海力士有限公司 | 存储装置及其操作方法 |
CN111435333B (zh) * | 2019-01-11 | 2023-04-18 | 爱思开海力士有限公司 | 存储装置及其操作方法 |
CN110660442A (zh) * | 2019-05-23 | 2020-01-07 | 深圳市芯天下技术有限公司 | 一种nor flash的高温应用方法及*** |
CN112711377A (zh) * | 2019-10-25 | 2021-04-27 | 爱思开海力士有限公司 | 分布式存储***的存储节点及其操作方法 |
CN112711377B (zh) * | 2019-10-25 | 2023-11-03 | 爱思开海力士有限公司 | 分布式存储***的存储节点及其操作方法 |
CN113806254A (zh) * | 2020-06-15 | 2021-12-17 | 爱思开海力士有限公司 | 存储器***、存储器控制器及存储器***的操作方法 |
CN113806254B (zh) * | 2020-06-15 | 2024-02-20 | 爱思开海力士有限公司 | 存储器***、存储器控制器及存储器***的操作方法 |
Also Published As
Publication number | Publication date |
---|---|
US20090310408A1 (en) | 2009-12-17 |
US8705272B2 (en) | 2014-04-22 |
US20110302352A1 (en) | 2011-12-08 |
US20110302468A1 (en) | 2011-12-08 |
US8565021B2 (en) | 2013-10-22 |
US20110299338A1 (en) | 2011-12-08 |
US20110299335A1 (en) | 2011-12-08 |
US8625344B2 (en) | 2014-01-07 |
US8027194B2 (en) | 2011-09-27 |
US8614919B2 (en) | 2013-12-24 |
US8638585B2 (en) | 2014-01-28 |
US8760918B2 (en) | 2014-06-24 |
CN101673581B (zh) | 2015-05-20 |
US20110302476A1 (en) | 2011-12-08 |
US20110307646A1 (en) | 2011-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101673581B (zh) | 存取半导体存储设备的存储***和方法 | |
US9442662B2 (en) | Device and method for managing die groups | |
US10311920B2 (en) | Apparatus and method for controlling memory device | |
US9032245B2 (en) | RAID data management method of improving data reliability and RAID data storage device | |
KR101736792B1 (ko) | 플래시 메모리 및 그것의 셀프 인터리빙 방법 | |
CN108694096B (zh) | 控制器、存储***及其操作方法 | |
US20200278907A1 (en) | Copy-back operations in a memory device | |
US9952978B2 (en) | Method for improving mixed random performance in low queue depth workloads | |
TWI750245B (zh) | 控制器及其操作方法 | |
US20180373629A1 (en) | Memory system and operating method thereof | |
CN108241470B (zh) | 控制器及其操作方法 | |
US11836392B2 (en) | Relocating data to low latency memory | |
TWI780240B (zh) | 儲存裝置及用於操作儲存裝置的方法 | |
CN112445648B (zh) | 用于共享奇偶校验保护的***和方法 | |
US11508454B2 (en) | Data storage device and method of operating the same | |
KR20190051570A (ko) | 메모리 시스템 및 그것의 동작 방법 | |
CN114121106A (zh) | 存储器***、存储器控制器及其操作方法 | |
US20190267091A1 (en) | Memory system and operating method thereof | |
US11842067B2 (en) | Memory controller, memory system including the same, and method of operating the memory system | |
KR20190069803A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
KR20200113991A (ko) | 컨트롤러 및 메모리 시스템 |
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 |