固态盘设备及其编程失败处理方法

文档序号:6768603阅读:196来源:国知局
专利名称:固态盘设备及其编程失败处理方法
技术领域
本发明涉及电子设备,并且更具 体地,涉及固态盘设备和固态盘设备的编程失败 处理方法。
背景技术
随着以信息为中心的社会的来临,个人存储和携带的数据量已经增长。已开发出 各种个人数据存储设备以处理这样的增长。在数据存储设备中,硬盘驱动器(hard disk drive,HDD)由于高记录密度、高数据 传输速度、快速数据存取时间、低成本等原因而得到了广泛使用。然而,因为硬盘驱动器的 移动机械部件的复杂结构,所以它容易因为小的冲击和振动而损坏。开发了使用闪存存储器的固态盘(solid state disk, SSD)作为可以取代硬盘驱 动器的数据存储设备。不像硬盘驱动器,SSD不具有移动机械结构。因此,相较于硬盘驱动 器,SSD可以减少等待时间和驱动时间,并且可以高速执行读/编程操作。因为SSD可以减 少由等待时间和机械摩擦引起的错误,所以它可以改善读/编程操作的可靠性。而且,因为 在SSD的操作期间很少发热和出现噪声并且SDD对外部冲击具有较强抵抗力,所以相较于 已知的HDD,SSD被认为适于便携式设备。

发明内容
根据本发明构思的实施例,一种固态盘设备包括至少一个非易失性存储器;以 及控制器,用于在非易失性存储器中发生编程失败时向主机报告错误代码,以请求先前接 收的数据和相应于该数据的命令。在该情况下,错误代码是在由控制器支持的接口或由非 易失性存储器支持的数据传输协议中定义的多个错误代码之一。在一些实施例中,错误代码可以是在接口或数据传输协议中定义的用于处理除了 编程失败之外的错误。在一些实施例中,固态盘设备还可以包括闪存传输层,用于监控在非易失性存储 器中是否发生了编程失败,并且当发生编程失败时向主机报告错误代码。在一些实施例中,错误代码可以包括CRC (循环冗余校验)错误代码。在一些实施例中,数据传输协议可以包括超DMA(直接存储器存取)协议。在一些实施例中,接口可以包括ATA(AT嵌入式接口)接口。在一些实施例中,每当在非易失性存储器中检测到编程失败时,控制器都向主机 报告错误代码,而无需将先前接收的数据和命令存储到额外的存储器。根据本发明构思的实施例,一种固态盘设备的编程失败处理方法包括响应于从主机接收的编程命令和数据,对至少一个非易失性存储器编程;当在非易失性存储器中发 生编程失败时,向主机报告错误代码来请求数据和编程命令,该数据和该编程命令是先前 接收的;从主机重新接收与报告的错误代码相应的数据和命令;以及将从主机重新接收的数据重新编程到非易失性存储器。在一些实施例中,错误代码可以是在由固态盘设备支持的接口或数据传输协议中定义的用以处理除了编程失败之外的错误的多个错误代码之一。在一些实施例中,错误代码可以包括CRC (循环冗余校验)错误代码。在一些实施例中,数据传输协议可以包括超DMA(直接存储器存取)协议。在一些实施例中,接口可以包括ATA(AT嵌入式接口)接口。在一些实施例中,编程和重新编程执行对电连接到多个通道的多个非易失性存储器进行连续编程的交织编程操作。在一些实施例中,报告错误代码可以包括当在多个闪存存储器的任何一个中检测到编程失败时,向主机报告错误代码。在一些实施例中,执行向主机报告错误代码而无需将先前接收的数据和编程命令存储到额外的存储器。根据本发明构思的实施例,一种计算系统包括主机;以及固态盘设备,用于通过 主机的请求来写或读出数据。在该情况下,固态盘设备包括至少一个非易失性存储器;以 及控制器,用于在非易失性存储器中发生编程失败时向主机报告错误代码,以请求先前接 收的数据和相应于该数据的命令,以及错误代码是在由控制器支持的接口或由非易失性存 储器支持的数据传输协议中定义的多个错误代码之一。在一些实施例中,每当在非易失性存储器中发生编程失败时,控制器都向主机报 告错误代码,而无需将先前接收的数据和命令存储到额外的存储器。


附图被包括在内以提供对本发明构思的进一步理解,并且被合并于本说明书中并 组成本说明书的一部分。附示了本发明构思的示范性实施例。在附图中图1是图示根据本发明构思的实施例的固态盘系统的示意性配置的框图;图2是更全面图示图1的控制器的配置的视图;图3是说明没有应用CRC错误代码的编程失败处理方法的时序图;图4是说明应用CRC错误代码的、根据本发明构思的实施例的编程失败处理方法 的时序图;图5是图示根据本发明构思的实施例的编程失败处理方法的流程图;以及图6是图示根据本发明构思的实施例的计算系统的视图。
具体实施例方式下面将参考附图更详细描述本发明构思的示范性实施例。然而,本发明构思的实 施例可以以许多不同形式具体体现,并且不应该被解释为限制于在此阐述的实施例。而是, 提供实施例以使得本公开将是详尽和完整的并且将全面向本领域技术人员传达本发明构 思的范围,以及将仅仅由所附权利要求限定本发明构思的实施例。贯穿于本说明书,相似的参考标记表示相似的元件。每当发生编程失败时,根据本发明构思的实施例的固态盘设备都将规定的错误代 码人工报告给主机。响应于由固态盘设备报告的错误代码,主机向固态盘设备重新发送其 中发生编程失败的相应命令和数据(编程失败的数据)。为了重新发送编程失败的数据的 目的而将要发送到主机的错误代码可以利用在总线的数据传输协议中或者在固态盘设备 的接口中所定义的多个错误代码之一,尽管这些错误代码是在没有考虑闪存的编程失败的 条件下初始定义的。根据本发明构思的实施例的编程失败处理方法,对于编程失败的数据, 可以在不定义用于处理编程失败的特定错误代码和特定流程的条件下重新执行编程操作。 因此,固态盘设备可以存储先前编程的数据或先前接收的编程数据而无需额外的存储器。图1是图示根据本发明构思的实施例的固态盘系统1000的示意性配置的框图。参考图1,可以将固态盘(SSD)设备500分为控制器100和数据存储单元300。数 据存储单元300是使用例如半导体芯片存储数据的数据存储介质。优选地,可以为数据存储单元300提供诸如闪存存储器之类的非易失性存储器。 可以在控制器100和数据存储单元300之间提供N个通道(其中N是1或大于1的整数)。 多个闪存存储器310至330可以电连接到各个通道CHO至CH(N-I)。连接到各个通道CHO 至CH(N-I)的多个闪存存储器310至330可以组成多个数据通路。通道CHO至CH(N-I)可以包含向相应的闪存存储器310至330发送命令和数据的 独立总线。闪存存储器310至330可以分别连接到不同的通道,并且可以独立操作。多页 可以包含共同占据一个通道的闪存存储器的集合。根据相应的通道和页,可以区分各个闪 存存储器芯片。从主机900发送的逻辑块地址(LBA)可以确定任意通道的任意页的哪个闪 存存储器芯片执行从主机900提供的命令。本发明构思的实施例将示意性地描述可以用闪存存储器实现数据存储单元300 的情况。然而,数据存储单元300的非易失性存储器不限于特定种类和特定类型,而是可 以以各种类型配置。例如,数据存储单元300的非易失性存储器310至330可以包括诸如 MRAM或PRAM以及闪存存储器之类的非易失性存储器。另外,可以由诸如DRAM或SRAM之类 的易失性存储器组成数据存储单元300。可以以各种类型实现存储在组成数据存储单元300的闪存存储器310至 330的每个存储单元中的数据比特数量。例如,可以用每单元存储1比特数据的单层 (single-level)闪存存储单元和每单元存储多比特数据的多层(multi-level)闪存存储 单元来实现闪存存储器310至330。另外,闪存存储器310至330可以被实现为单层闪存存 储单元和多层闪存存储单元的混合类型。可以不同地实现组成闪存存储器310至330的存 储单元。例如,可以用NAND (与非)闪存存储单元或NOR(或非)闪存存储单元来实现闪存 存储器310至330,并且闪存存储器310至330可以被实现为NAND闪存存储单元或NOR闪 存存储单元的混合类型。而且,闪存存储器310至330可以是One-NAND闪存存储器,其中 闪存存储器核心和存储器控制逻辑在一个芯片中形成。可以用具有以各种各样类型配置的电荷存储层的存储单元来实现闪存存储器310 至330。例如,电荷存储层可以由导电多晶硅(conductiv印olycrystalline silicon)形 成,以及使用诸如Si3N4、Al203、HfA10和HfSiO之类的绝缘层形成。将诸如Si3N4、Al203、HfA10 和HfSiO之类的绝缘层用作电荷存储层的闪存存储器也被称作电荷捕获闪存(Charge TrapFlash, CTF)存储器。控制器100可以通过诸如如下的各种接口之一与主机900交换数据通用串行总线(USB)、多媒体卡(MMC)、PCIExpress (PCIE)、AT 嵌入式接口(AT Attachment,ΑΤΑ)、串行 AT嵌入式接口(SATA)、并行AT嵌入式接口(PATA)、小型计算机系统接口(SCSI)、串行连接 SCSI (SAS)、增强型小型硬盘接口(Enhanced Small Disk Interface,ESDI)、集成驱动电子设备(Integrated Drive Electronics, IDE)等。可以在控制器100的主机接口(参见图 2的参考标记140)中执行主机900和控制器100之间的接口。响应于从主机900输入的命令,控制器100可以控制数据存储单元300的编程、擦除和读操作。具体地,控制器100可以使用闪存传输层(TranslationLayer,在下文中被称 作FTL) 50来处理编程失败。在本发明构思的实施例中,当在组成数据存储单元300的多个 闪存存储器的任意一个中发生编程失败时,FTL 50可以向主机900人工报告错误代码。响 应于从FTL 50报告的错误代码,主机900可以向固态盘设备500重传与编程失败的数据相 应的命令和数据。为了处理编程失败的目的而向主机900发送的错误代码可以利用在固态盘设备 500和主机900之间提供的接口或者由固态盘设备500内的总线支持的传输协议中初始定 义的多个错误代码的一个,尽管这些错误代码是在没有考虑闪存的编程失败的条件下而初 始定义的。在本发明构思的实施例中,在接口或数据传输协议中初始定义的错误代码的一 个(例如,CRC错误)可以代替用于闪存存储器的特定错误代码以处理编程失败。用于处 理CRC错误的错误代码被称为CRC错误代码。本发明构思的实施例将示意性地描述不同的情况。例如,可以在固态盘设备500 和主机900之间提供ATA接口,并且可以为数据存储单元300提供支持超DMA协议的闪存 存储器。然而,可以改变和修改接口和数据传输协议而不限于特定类型。根据本发明构思的实施例的编程失败处理方法可以用接口或协议中初始定义的 错误代码(例如,CRC错误代码)替代用于闪存存储器的特定错误代码。因此,可以执行根 据本发明构思的实施例的编程失败处理方法而无需定义用于处理编程失败的特定流程和 特定错误代码。所以,编程失败处理方法可以通过遵循在接口或协议中初始定义的错误处 理流程(例如,CRC错误处理流程)来执行关于编程失败的数据的重新编程,而无需用于处 理编程失败的特定内部操作。因为可以执行重新编程,所以固态盘设备500不要求用于存 储先前接收的编程数据或先前编程的数据的额外的存储器。根据本发明构思的实施例,可 以将编程失败处理应用到如下情况中当同时编程数据或连续执行多个编程操作时,例如, 当执行用于同时编程两页数据或N路(Niay)交织编程的双面页面(two-plane page)编 程时。图2是图示图1中所示的控制器100的示范性配置的视图。参考图2,控制器100可以包括中央处理单元(CPU) 110、CPU总线130、主机接口 140、缓存存储器控制单元160、缓存存储器170和闪存接口 180。CPU 110、主机接口 140、缓 存存储器控制单元160、缓存存储器170和闪存接口 180可以通过CPU总线130互连。CPU 110可以控制固态盘设备500的各种操作。主机接口140可以根据CPU 110的 控制,与主机900交换命令、地址和数据。缓存存储器170可以临时存储从主机900输入的 数据或者将通过主机接口 140向主机900发送的数据。可以向闪存存储器310至330或主机900发送临时存储的数据。本发明构思的实施例将示意性地描述主机接口 140支持ATA 接口的情况。然而,除了ATA接口之外,各种接口技术可以被应用到主机接口 140。例如,只 要接口定义了用于请求先前接收的数据和相应于该数据的命令的错误代码,就可以将它应用到固态盘设备500及其编程失败处理方法。组成数据存储单元300的闪存存储器310至330是可能不能被重写的存储器。因此,在编程操作之前,在闪存存储器310至330中执行擦除操作。在闪存存储器310至330 中的每一个中,编程操作的数据单元不同于擦除操作的数据单元。例如,编程操作的数据单 元小于擦除操作的数据单元。为了隐藏闪存存储器310至330的写前擦除特性,可以将FTL 50部署在文件系统(未示出)和闪存存储器310至330之间。通常,文件系统以面向主机 的软件的形式存储。对于闪存存储器310至330,在编程操作期间,FTL 50可以执行地址 映射功能,将由文件系统生成的逻辑块地址(LBA)映射为闪存存储器310至330的物理块 地址(PBA)。由于FTL 50的地址映射功能,主机900可以将提供有闪存存储器310至330 的固态盘设备500识别为硬盘驱动器,并且可以以与硬盘驱动器相同的方式存取闪存存储 器。另外,FTL 50可以执行坏块管理功能、由于电源中断的数据备份管理功能以及耗损均衡(wear-level)管理功能。进一步地,在本发明构思的实施例中,FTL 50可以执行闪存存 储器310至330的编程失败处理。例如,FTL 50可以监控在编程操作期间在闪存存储器310至330中是否发生了编 程失败,并且可以控制重新执行针对编程失败的数据的编程操作。可以从在每个闪存存储 器内提供的控制逻辑(未示出)来报告编程失败的发生或未发生。关于FTL 50中执行的编程失败处理功能,将在下面更全面的进行描述。响应于CPU 110的控制,缓存存储器控制单元160可以控制闪存存储器170的存 取操作(例如,读/写/擦除操作)。闪存存储器170可以具体实施为易失性存储器(例 如,SRAM或DRAM)。缓存存储器170可以临时存储在闪存存储器和主机900之间发送的数 据,并且可以存储执行FTL 50的功能所需要的软件和将由CPU 110操作的程序。例如,执 行FTL 50的功能所需要的软件可以被存储在闪存存储器310至330或者相应的数据存储 区域(例如,引导代码(boot code)区域)中,并且可以在加电(power-up)操作期间被载 入缓存存储器170上。另外,缓存存储器170可以存储由FTL 50处理的额外的信息,例如, 闪存存储器的地址映射信息。闪存接口 180可以通过多个通道CHO至CH(N-I)与多个闪存存储器交换数据。多 个闪存存储器可以分别与多个通道CHO至CH(N-I)电连接。本发明构思的实施例将示意性 地描述在闪存接口 180和数据存储单元300之间支持超DMA协议的情况。然而,可以以各种类型改变和修改数据传输协议而不局限于本发明构思的实施例中的特定类型。例如,在 数据传输协议定义了用于请求先前接收的数据和相应于该数据的命令的错误代码(例如, CRC错误代码)的情况下,数据传输协议可以被用于固态盘设备500及其编程失败处理方 法。超DMA (Direct Memory Access,直接存储器存取)可以支持作为用于在数据存储 单元300和缓存存储器170 (例如RAM)之间通过总线发送数据的协议的ΑΤΑ/IDE接口。超 DMA/33协议可以以相较于DMA协议大约快两倍的33. 3MBps (兆字节每秒)的速率来发送数据。
超DMA可以利用CRC(循环冗余校验)功能来保护将在数据发送单元(例如,主机 900)和数据接收单元(例如,固态盘设备500)之间发送的数据。CRC功能是用于验证在接 收的数据中是否存在错误的一种技术。例如,数据发送单元(例如,主机900)可以通过将 16位或32位多项式应用到数据块来获得CRC码,并且可以将CRC码与数据块一起发送。数 据接收单元(例如,固态盘设备500)可以通过将如应用到数据发送单元那样相同的多项式 应用到数据来生成CRC码,并且可以将所生成的CRC码与从数据发送单元发送的CRC码相 比较。当两个CRC码彼此相符时,确定成功接收了这些数据。当两个CRC码彼此不相符时, 数据接收单元可以向数据发送单元报告CRC错误代码。这时,响应于所报告的CRC错误代 码,数据发送单元可以向数据接收单元重新发送数据块和相应的命令。根据本发明构思的实施例,固态盘设备500可以利用上述的CRC错误代码处理特性来处理编程失败。在本发明构思的实施例中,在超DMA协议中初始定义的CRC错误代码 可以用于处理编程失败。例如,在将从主机900接收的数据编程到数据存储单元300中时发生编程失败的 情况下,当编程失败发生时,固态盘设备500可以使用FTL 50来向主机900人工报告CRC 错误代码而不管CRC校验结果为何。也就是说,尽管CRC错误没有发生,但是只要编程失败 发生,FTL 50就可以向主机900报告CRC错误代码。主机900可以向固态盘设备500重新 发送与所报告的CRC错误代码相应的命令(也就是编程命令)和编程失败的数据。这个配 置使得可以将编程失败的数据和相应的命令重新发送给固态设备500而无需额外的部件。 重新发送给固态盘设备500的数据可以被重新编程到数据存储单元300中。如果仅仅报告错误的出现以处理闪存存储器的编程失败而不利用如上所述的预 定的错误代码(例如,CRC错误代码),则主机900可能花费时间来找出在闪存存储器中发 生了什么错误。这是因为,应用到计算机系统或许多便携式数据设备的接口不是针对现有 的硬盘驱动器而设计的,和/或因为基于错误代码的闪存存储器并非针对诸如闪存存储器 之类的半导体存储器的编程/擦除特性而存在。也就是说,被定义用于处理在编程闪存存 储器中发生的编程失败的特定错误代码并不存在于应用到计算机系统或便携式数据设备 的数据传输协议和接口中。在下文中,将描述在与闪存存储器的编程/擦除特性没有关系的接口或数据传输 协议下的编程失败处理方法。举例来说,存在不应用CRC错误代码的编程失败处理方法。再 举例来说,存在应用CRC错误代码的根据本发明构思的实施例的编程失败处理方法。图3是说明没有应用CRC错误代码的编程失败处理方法的时序图。图3图示了在 不应用CRC错误代码来处理编程失败的情况下,缓存存储器170和闪存存储器310至330 的编程时序和数据传输时序。参考图2和图3,在编程操作期间在闪存存储器310至330中发生编程失败。这 时,FTL 50可以将对编程失败的数据进行编程的存储器块标记为坏块,并且可以将存储在 坏块中的数据移动到另一存储器块中。FTL 50可以管理坏块的物理地址以及将数据从坏块 移动到其中的存储器块的逻辑地址和/或物理地址。FTL 50可以具有坏块管理功能以处理 包括在坏块中的数据。当CRC错误代码没被应用来处理编程失败时,可以由FTL 50的坏块管理功能来处 理编程失败。为了将坏块的数据写到另一存储器块上,在正常完成编程操作之前,应该将全部的编程数据保持在缓存存储器170中。例如,根据所实施的闪存存储器310至330的类 型,被编程到闪存存储器310至330中的每一个的数据单元可以具有2kB至SkB存储空间。 在交织编程以连续编程多个闪存存储器的情况下,缓存存储器170应当存储将在交织编程中被编程到多个闪存存储器的全部数据。例如,如图3所示,当由SkB组成一页并且执行最多4路交织编程时,缓存存储器 170应该具有能够存储与4页相关的全部编程数据的数据存储容量。在该情况下,缓存存 储器170可以要求至少32kB(8kB*4页=32kB)的数据存储容量以管理坏块。在应用2平面页面编程来将两页的数据一次性编程到闪存存储器310至330中的情况下,缓存存储器 170可以要求至少64kB(2*8kB*4 = 32kB)的数据存储容量以管理坏块。另外,当在交织编 程中所用的通道数量增加时,缓存存储器中所需要的数据存储容量可能进一步增加。在全部完成针对多页的交织编程P11、P12、P13和P14之后,可以执行FTL 50的坏 块管理操作。因此,可以仅在完成第四页数据Data3的编程之后,识别在第一页数据DataO 的编程间隔Pll处发生的编程失败。图3中示出的符号Δ Tl表示从完成包含编程失败的 交织编程时到重新开始相关的交织编程时的时间延迟。而且,图3中示出的符号ΔΤ2表示 从完成包括编程失败的页的编程Pll时到重新开始相关页的编程时的时间延迟。在时间延迟ΔΤ1期间,FTL 50将在其中发生编程失败的存储器块标记为坏块,并 且重新执行包括编程失败的数据的交织编程。在重新执行的交织编程中,存储在缓存存储 器170中的数据可以使用4页。如图3所示,当CRC错误代码没被应用来处理编程失败时, 从完成在其中发生实际编程错误的页的编程时到重新开始相关页的编程时,延迟时间Δ Τ2 较长。另外,缓存存储器170应该具有可以全部存储与4页相应的编程数据的数据存储容 量。由于缓存存储器170的数据存储容量增加,因此固态盘设备500的大小和制造成本可 能增加。图4是说明应用CRC错误代码的根据本发明构思的实施例的编程失败处理方法的 时序图。图4图示了根据本发明构思的实施例,在编程失败处理期间缓存存储器170和闪 存存储器310至330的数据发送时序和编程时序。参考图2和图4,闪存存储器310至330的编程失败可能随机发生。在CRC错误代 码被应用来处理编程失败的情况下,每当完成每页数据的编程时,FTL 50都可以检查在每 个闪存存储器中是否发生了编程失败。每当各个闪存存储器接收了编程数据(例如,至少 一页单元的数据)时,都可以执行由ATA接口或超DMA协议支持的CRC错误校验操作。因 此,当CRC错误代码用于处理编程失败时,每当在每页中完成编程时,都可以执行编程失败 校验和重新编程操作。例如,如图4所示,当由SkB组成一页并且执行最多4路交织编程、同时关于第一 页数据DataO的编程P21完成时,可以检查编程失败。也就是说,当第一页数据DataO的编 程完成时可以检查编程失败,而无需一直等到相应于4页的交织编程操作P21、P22、P23和 P24被全部执行。当在第一页数据DataO的编程间隔P21处检测到编程失败时,FTL 50可以向主机 900报告CRC错误代码,并且固态盘设备500可以再次从主机900接收相应于第一页数据 DataO的命令和数据。当交织编程对于编程失败的数据前进时,可以由固态盘设备500再次 连续接收将从编程失败的数据开始交织的多页数据。在该情况下,固态盘设备500可以使用从主机900再次接收的命令和数据,依次重新执行(以P21、P22、P23和P24的顺序)多 个数据DataO、DataU Data2和Data3的交织编程。因此,不需要组成或考虑另外的错误代 码和另外的编程失败处理算法来重新对编程失败的数据进行编程。在该情况下,响应于CRC 错误代码,可以从主机900接收重新执行编程所需要的数据DataCKDatal、Data2和Data3。 结果是,无需将先前编程的数据存储在固态盘设备500的缓存存储器170中。图4中示出的符号ΔΤ3表示从在第一页数据DataO中检测到编程失败时到重新 执行第一页数据DataO的编程时的时间延迟。根据图4中图示的本发明构思的实施例的编 程失败处理方法,从检测到编程失败时到重新执行编程时的延迟时间△ T3相较于图3的延迟时间较短。而且,根据图4中图示的本发明构思的实施例的编程失败处理方法,在多个闪 存存储器中连续执行编程的交织编程的情况下,在发生编程失败之后,可以重新执行交织 编程。结果是,总体编程时间会变短。另外,因为不需要额外的数据存储容量来存储先前编 程的数据,所以可以缩减固态盘设备500的大小和制造成本。图5是图示根据本发明构思的实施例的编程失败处理方法的流程图。参考图5,固 态盘设备500可以主要从主机900接收编程命令和数据以执行编程(S1000)。在块S1000 处,从主机900接收的数据可以包括编程数据和该编程数据的逻辑块地址LBA。可以通过在控制器100中提供的FTL 50,将从主机900接收的LBA转换为物理块地址PBA。可以通过 缓存存储器170和闪存接口 180,向相应的闪存存储器310至330提供转换的PBA。响应于 从主机900提供的编程命令和数据(例如,编程数据和该编程数据的地址),每个闪存存储 器执行编程(SllOO)。这时,所执行的编程可以是非交织模式或交织模式。响应于从主机900提供的命令和数据(例如,编程数据和该编程数据的地址),在 闪存存储器310至330中提供控制逻辑(未示出)来控制闪存存储器310至330的诸如编 程、擦除和读操作之类的全部操作。例如,在闪存存储器310至330中提供的控制逻辑可以 在编程操作期间控制施加到所选择字线的编程电压的电平和时序(timing)。可以通过递增 阶跃脉冲编程(Incremental Step Pulse Programming,ISPP)方案生成施加到所选择的字 线的编程电压Vpgm。当编程循环重复时,可以通过规定的电压增量Δν来逐渐增加编程电 压Vpgm的电平。基于每页的编程级,可以通过外部设备(例如,固态盘设备的控制器、存储 器控制器等)的控制或在闪存存储器内提供的控制逻辑来改变和修改编程循环的次数、编 程电压Vpgm的电平和编程电压Vpmg的时序。闪存存储器310至330的控制逻辑(未示出)可以控制编程操作并且可以内部地 检测编程失败。例如,当编程失败发生至少规定的次数时或者当发生不可恢复的错误时,控 制逻辑可以向FTL 50报告编程失败。响应于由闪存存储器310至330的控制逻辑报告的 结果,FTL 50可以确定在闪存存储器310至330中是否发生了编程失败(S1200)。在块S1200处,如果确定没有发生编程失败,则可以正常完成编程操作(S1300)。 然而,在块S1200处,如果确定发生编程失败,则FTL 50可以向主机900报告CRC错误代码 (S1400)。在该情况下,即使没有发生CRC错误,只要发生编程失败,FTL 50就可以向主机 900报告CRC错误代码。在报告CRC错误代码之后,过程返回到块S1000,并且在接口或数 据传输协议中初始定义的CRC错误处理流程下,主机900向固态盘设备500重新发送与CRC 错误代码相应的命令和数据。在块S1000处,固态盘设备500可以从主机重新接收命令和 数据,其中该数据触发了对在先前编程操作中编程失败的检测,并且在块SllOO处,对于重新接收的数据重新执行编程。如上所述,根据本发明构思的实施例的编程失败处理方法,当在闪存存储器310 至330中发生编程失败时,可以向主机900报告CRC错误代码。所以,甚至当发生编程失败 时,主机900也可以向固态盘设备500重新发送相应的命令和数据,例如当CRC错误发生 时。图6是图示根据本发明构思的实施例的计算系统2000的视图。参考图6,计算系统2000可以包括控制器100、微处理器200、数据存储单元300、 诸如基带芯片组的调制解调器600和用户接口 800,它们分别与总线400电连接。图6中图 示的控制器100和数据存储单元300可以组成固态盘设备(SSD)和存储器卡和/或存储器 卡系统。控制器100和数据存储单元300的细节配置可以基本上与上述相同。因此,相同 的参考标记可以代表相同的部件,并且将省略其描述。
将由微处理器200处理的N比特数据(N是等于或大于1的整数)可以通过控制 器100存储在数据存储单元300中。可以由支持多通道和多页的非易失性存储器组成数据 存储单元300,并且作为优选的例子,通过非易失性存储器中的闪存存储器来组成。然而,可 以将除了闪存存储器之外的非易失性存储器应用到本发明构思的实施例。控制器100可以控制数据存储单元300的读/写/擦除操作。控制器100可以提 供有FTL 50。FTL 50可以管理数据存储单元300的映射信息,使得数据存储单元300用作 自由执行读/编程操作的诸如硬盘驱动器或SRAM之类的存储介质。可以以元数据的形式 来存储由FTL 50执行的映射结果。而且,每当在数据存储单元300中发生编程失败时,FTL 50都可以向主机或微处 理器200人工报告在接口或数据传输协议中初始定义的错误代码,以便用在接口或数据传 输协议中初始定义的错误代码之一代替用于闪存存储器的特定错误代码。主机和微处理器 200可以向固态盘设备500重新发送相应的命令和编程失败的数据。可以被发送到主机和 微处理器200以便重新发送编程失败的数据的错误代码可以是在固态盘设备500的接口中 或者在总线的数据传输协议中提前初始定义的多个错误代码之一。当计算系统2000是移动设备时,可以另外提供电池700以提供计算系统2000的 操作电压。尽管未在图中示出,计算系统还可以包括应用芯片组、相机图像处理器(Camera Image Processor,CIS)、移动DRAM等。使用不同类型的非易失性存储器的数据存储单元可 以被实现在笔记本计算机、台式计算机和服务器中。在这些市场条件下,根据本发明构思的 实施例,可以改善现有的性能限制以及扩展数据存储单元的基数(base)。根据本发明构思的上述实施例,即便没有另外的存储器,对于编程失败的数据仍 可以执行编程操作。所以,可以增加固态盘设备的编程失败处理性能,并且可以减少尺寸和 制造成本。在说明书中,参考附图描述了优选实施例。在此使用的术语是为了描述本发明构 思的实施例的目的,而不意在限制意思或者限制在所附权利要求中描述的本发明构思的范 围。因此,上面公开的主题应被视作示意性的而非限制性的,并且所附权利要求试图覆盖所 有这样的修改、增强和落入真实精神的其他实施例,并且由下面的权利要求及其等价物的 最宽允许解释来确定本发明构思的范围,而不由前述的详细描述来局限或限制。
权利要求
一种固态盘设备,包括至少一个非易失性存储器;以及控制器,用于在所述非易失性存储器中发生编程失败时向主机报告错误代码,以请求先前接收的数据和相应于该数据的命令,其中所述错误代码是在由所述控制器支持的接口或由所述非易失性存储器支持的数据传输协议中定义的多个错误代码之一。
2.根据权利要求1所述的固态盘设备,其中,所述错误代码是在所述接口或所述数据 传输协议中定义用于处理除了所述编程失败之外的错误。
3.根据权利要求1所述的固态盘设备,还包括闪存传输层,用于监控在所述非易失性 存储器中是否发生了所述编程失败,并且当发生所述编程失败时向所述主机报告所述错误 代码。
4.根据权利要求1所述的固态盘设备,其中,所述错误代码包括循环冗余校验CRC错误 代码。
5.根据权利要求1所述的固态盘设备,其中,所述数据传输协议包括超直接存储器存 取DMA协议。
6.根据权利要求1所述的固态盘设备,其中,所述接口包括AT嵌入式接口ATA接口。
7.根据权利要求1所述的固态盘设备,其中,每当在所述非易失性存储器中检测到所 述编程失败时,所述控制器都向所述主机报告所述错误代码,而无需将所述先前接收的数 据和命令存储到额外的存储器。
8.一种固态盘设备的编程失败处理方法,所述方法包括响应于从主机接收的编程命令和数据,对至少一个非易失性存储器编程;当在所述非易失性存储器中发生编程失败时,向所述主机报告错误代码来请求所述数 据和所述编程命令,所述数据和所述编程命令是先前接收的;从所述主机重新接收与报告的错误代码相应的数据和命令;以及将从所述主机重新接收的数据重新编程到所述非易失性存储器。
9.根据权利要求8所述的方法,其中,所述错误代码是在由所述固态盘设备支持的接 口或数据传输协议中定义的用以处理除了所述编程失败之外的错误的多个错误代码之一。
10.根据权利要求8所述的方法,其中,所述错误代码包括循环冗余校验CRC错误代码。
11.根据权利要求8所述的方法,其中,所述数据传输协议包括超直接存储器存取DMA 协议。
12.根据权利要求8所述的方法,其中,所述接口包括AT嵌入式接口ATA接口。
13.根据权利要求8所述的方法,其中,所述编程和所述重新编程执行对电连接到多个 通道的多个非易失性存储器进行连续编程的交织编程操作。
14.根据权利要求13所述的方法,其中,所述报告错误代码包括当在多个闪存存储器 的任何一个中检测到所述编程失败时,向所述主机报告所述错误代码。
15.根据权利要求8所述的方法,其中,执行所述向所述主机报告错误代码而无需将所 述先前接收的数据和编程命令存储到额外的存储器。
16.一种计算系统,包括主机;以及固态盘设备,用于通过所述主机的请求来写或读出数据, 其中所述固态盘设备包括 至少一个非易失性存储器;以及控制器,用于在所述非易失性存储器中发生编程失败时向所述主机报告错误代码,以 请求先前接收的数据和相应于所述数据的命令,所述错误代码是在由所述控制器支持的接口或由所述非易失性存储器支持的数据传 输协议中定义的多个错误代码之一。
17.根据权利要求16所述的计算系统,其中,每当在所述非易失性存储器中发生所述 编程失败时,所述控制器都向所述主机报告所述错误代码,而无需将所述先前接收的数据 和命令存储到额外的存储器。
全文摘要
一种固态盘设备包括至少一个非易失性存储器;以及控制器,用于在非易失性存储器中发生编程失败时向主机报告错误代码,以请求先前接收的数据和相应于该数据的命令。错误代码是在由控制器支持的接口或由非易失性存储器支持的数据传输协议中定义的多个错误代码之一。
文档编号G11C7/10GK101800071SQ20101010624
公开日2010年8月11日 申请日期2010年1月29日 优先权日2009年2月10日
发明者朱原撤, 李斗基 申请人:三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1