CN101800071B - 固态盘设备及其编程失败处理方法 - Google Patents

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

Info

Publication number
CN101800071B
CN101800071B CN201010106241.6A CN201010106241A CN101800071B CN 101800071 B CN101800071 B CN 101800071B CN 201010106241 A CN201010106241 A CN 201010106241A CN 101800071 B CN101800071 B CN 101800071B
Authority
CN
China
Prior art keywords
data
error code
program fail
solid state
disk device
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.)
Active
Application number
CN201010106241.6A
Other languages
English (en)
Other versions
CN101800071A (zh
Inventor
李斗基
朱原撤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN101800071A publication Critical patent/CN101800071A/zh
Application granted granted Critical
Publication of CN101800071B publication Critical patent/CN101800071B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/48Arrangements in static stores specially adapted for testing by means external to the store, e.g. using direct memory access [DMA] or using auxiliary access paths

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种固态盘设备包括:至少一个非易失性存储器;以及控制器,用于在非易失性存储器中发生编程失败时向主机报告错误代码,以请求先前接收的数据和相应于该数据的命令。错误代码是在由控制器支持的接口或由非易失性存储器支持的数据传输协议中定义的多个错误代码之一。

Description

固态盘设备及其编程失败处理方法
相关申请的交叉引用
本申请要求于2009年2月10日提交的韩国专利申请10-2009-0010548的优先权,其全部内容通过引用合并于此。
技术领域
本发明涉及电子设备,并且更具体地,涉及固态盘设备和固态盘设备的编程失败处理方法。
背景技术
随着以信息为中心的社会的来临,个人存储和携带的数据量已经增长。已开发出各种个人数据存储设备以处理这样的增长。
在数据存储设备中,硬盘驱动器(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可以电连接到各个通道CH0至CH(N-1)。连接到各个通道CH0至CH(N-1)的多个闪存存储器310至330可以组成多个数据通路。
通道CH0至CH(N-1)可以表示向相应的闪存存储器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。例如,电荷存储层可以由导电多晶硅(conductivepolycrystalline silicon)形成,以及使用诸如Si3N4、Al2O3、HfAlO和HfSiO之类的绝缘层形成。将诸如Si3N4、Al2O3、HfAlO和HfSiO之类的绝缘层用作电荷存储层的闪存存储器也被称作电荷捕获闪存(Charge Trap Flash,CTF)存储器。
控制器100可以通过诸如如下的各种接口之一与主机900交换数据:通用串行总线(USB)、多媒体卡(MMC)、PCIExpress(PCIE)、AT嵌入式接口(AT Attachment,ATA)、串行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路(N-way)交织编程的双面页面(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可以通过多个通道CH0至CH(N-1)与多个闪存存储器交换数据。多个闪存存储器可以分别与多个通道CH0至CH(N-1)电连接。本发明构思的实施例将示意性地描述在闪存接口180和数据存储单元300之间支持超DMA协议的情况。然而,可以以各种类型改变和修改数据传输协议而不局限于本发明构思的实施例中的特定类型。例如,在数据传输协议定义了用于请求先前接收的数据和相应于该数据的命令的错误代码(例如,CRC错误代码)的情况下,数据传输协议可以被用于固态盘设备500及其编程失败处理方法。
超DMA(Direct Memory Access,直接存储器存取)可以支持作为用于在数据存储单元300和缓存存储器170(例如RAM)之间通过总线发送数据的协议的ATA/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至8kB存储空间。在交织编程以连续编程多个闪存存储器的情况下,缓存存储器170应当存储将在交织编程中被编程到多个闪存存储器的全部数据。
例如,如图3所示,当由8kB组成一页并且执行最多4路交织编程时,缓存存储器170应该具有能够存储与4页相关的全部编程数据的数据存储容量。在该情况下,缓存存储器170可以要求至少32kB(8kB*4页=32kB)的数据存储容量以管理坏块。在应用2平面页面编程来将两页的数据一次性编程到闪存存储器310至330中的情况下,缓存存储器170可以要求至少64kB(2*8kB*4=32kB)的数据存储容量以管理坏块。另外,当在交织编程中所用的通道数量增加时,缓存存储器中所需要的数据存储容量可能进一步增加。
在全部完成针对多页的交织编程P11、P12、P13和P14之后,可以执行FTL 50的坏块管理操作。因此,可以仅在完成第四页数据Data3的编程之后,识别在第一页数据Data0的编程间隔P11处发生的编程失败。图3中示出的符号ΔT1表示从完成包含编程失败的交织编程时到重新开始相关的交织编程时的时间延迟。而且,图3中示出的符号ΔT2表示从完成包括编程失败的页的编程P11时到重新开始相关页的编程时的时间延迟。
在时间延迟ΔT1期间,FTL 50将在其中发生编程失败的存储器块标记为坏块,并且重新执行包括编程失败的数据的交织编程。在重新执行的交织编程中,存储在缓存存储器170中的数据可以使用4页。如图3所示,当CRC错误代码没被应用来处理编程失败时,从完成在其中发生实际编程错误的页的编程时到重新开始相关页的编程时,延迟时间ΔT2较长。另外,缓存存储器170应该具有可以全部存储与4页相应的编程数据的数据存储容量。由于缓存存储器170的数据存储容量增加,因此固态盘设备500的大小和制造成本可能增加。
图4是说明应用CRC错误代码的根据本发明构思的实施例的编程失败处理方法的时序图。图4图示了根据本发明构思的实施例,在编程失败处理期间缓存存储器170和闪存存储器310至330的数据发送时序和编程时序。
参考图2和图4,闪存存储器310至330的编程失败可能随机发生。在CRC错误代码被应用来处理编程失败的情况下,每当完成每页数据的编程时,FTL 50都可以检查在每个闪存存储器中是否发生了编程失败。每当各个闪存存储器接收了编程数据(例如,至少一页单元的数据)时,都可以执行由ATA接口或超DMA协议支持的CRC错误校验操作。因此,当CRC错误代码用于处理编程失败时,每当在每页中完成编程时,都可以执行编程失败校验和重新编程操作。
例如,如图4所示,当由8kB组成一页并且执行最多4路交织编程、同时关于第一页数据Data0的编程P21完成时,可以检查编程失败。也就是说,当第一页数据Data0的编程完成时可以检查编程失败,而无需一直等到相应于4页的交织编程操作P21、P22、P23和P24被全部执行。
当在第一页数据Data0的编程间隔P21处检测到编程失败时,FTL 50可以向主机900报告CRC错误代码,并且固态盘设备500可以再次从主机900接收相应于第一页数据Data0的命令和数据。当交织编程对于编程失败的数据进行时,可以由固态盘设备500再次连续接收将从编程失败的数据开始交织的多页数据。在该情况下,固态盘设备500可以使用从主机900再次接收的命令和数据,依次重新执行(以P21、P22、P23和P24的顺序)多个数据Data0、Data1、Data2和Data3的交织编程。因此,不需要组成或考虑另外的错误代码和另外的编程失败处理算法来重新对编程失败的数据进行编程。在该情况下,响应于CRC错误代码,可以从主机900接收重新执行编程所需要的数据Data0、Data1、Data2和Data3。结果是,无需将先前编程的数据存储在固态盘设备500的缓存存储器170中。
图4中示出的符号ΔT3表示从在第一页数据Data0中检测到编程失败时到重新执行第一页数据Data0的编程时的时间延迟。根据图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提供的编程命令和数据(例如,编程数据和该编程数据的地址),每个闪存存储器执行编程(S1100)。这时,所执行的编程可以是非交织模式或交织模式。
响应于从主机900提供的命令和数据(例如,编程数据和该编程数据的地址),在闪存存储器310至330中提供控制逻辑(未示出)来控制闪存存储器310至330的诸如编程、擦除和读操作之类的全部操作。例如,在闪存存储器310至330中提供的控制逻辑可以在编程操作期间控制施加到所选择字线的编程电压的电平和时序(timing)。可以通过递增阶跃脉冲编程(Incremental Step Pulse Programming,ISPP)方案生成施加到所选择的字线的编程电压Vpgm。当编程循环重复时,可以通过规定的电压增量ΔV来逐渐增加编程电压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可以从主机重新接收命令和数据,其中该数据触发了对在先前编程操作中编程失败的检测,并且在块S1100处,对于重新接收的数据重新执行编程。
如上所述,根据本发明构思的实施例的编程失败处理方法,当在闪存存储器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)。
根据本发明构思的上述实施例,即便没有另外的存储器,对于编程失败的数据仍可以执行编程操作。所以,可以增加固态盘设备的编程失败处理性能,并且可以减少尺寸和制造成本。
在说明书中,参考附图描述了优选实施例。在此使用的术语是为了描述本发明构思的实施例的目的,而不意在限制意思或者限制在所附权利要求中描述的本发明构思的范围。因此,上面公开的主题应被视作示意性的而非限制性的,并且所附权利要求试图覆盖所有这样的修改、增强和落入真实精神的其他实施例,并且由下面的权利要求及其等价物的最宽允许解释来确定本发明构思的范围,而不由前述的详细描述来局限或限制。

Claims (15)

1.一种固态盘设备,包括:
至少一个非易失性存储器;以及
控制器,用于当在从主机接收到的数据中存在错误时向主机报告错误代码,以及在所述非易失性存储器中发生编程失败时向主机报告所述错误代码,以请求接收到的数据和相应于该接收到的数据的命令,
其中所述错误代码是在由所述控制器支持的接口或由所述非易失性存储器支持的数据传输协议中定义的用于处理除了所述编程失败之外的错误的多个错误代码之一。
2.根据权利要求1所述的固态盘设备,还包括:闪存传输层,用于监控在所述非易失性存储器中是否发生了所述编程失败,并且当发生所述编程失败时向所述主机报告所述错误代码。
3.根据权利要求1所述的固态盘设备,其中,所述错误代码包括循环冗余校验CRC错误代码。
4.根据权利要求1所述的固态盘设备,其中,所述数据传输协议包括超直接存储器存取DMA协议。
5.根据权利要求1所述的固态盘设备,其中,所述接口包括AT嵌入式接口ATA接口。
6.根据权利要求1所述的固态盘设备,其中,每当在所述非易失性存储器中检测到所述编程失败时,所述控制器都向所述主机报告所述错误代码,而无需将所述先前接收的数据和命令存储到额外的存储器。
7.一种固态盘设备的编程失败处理方法,所述方法包括:
当在从主机接收到的数据中存在错误时报告错误代码以重新接收数据和编程命令;
当从主机接收到的数据中不存在错误时响应于从主机接收的编程命令和数据,对至少一个非易失性存储器编程;
当在所述非易失性存储器中发生编程失败时,向所述主机报告所述错误代码来请求所述数据和所述编程命令,所述数据和所述编程命令是先前接收的;
从所述主机重新接收与报告的错误代码相应的数据和命令;以及
将从所述主机重新接收的数据重新编程到所述非易失性存储器,
其中,所述错误代码是在由所述固态盘设备支持的接口或数据传输协议中定义的用以处理除了所述编程失败之外的错误的多个错误代码之一。
8.根据权利要求7所述的方法,其中,所述错误代码包括循环冗余校验CRC错误代码。
9.根据权利要求7所述的方法,其中,所述数据传输协议包括超直接存储器存取DMA协议。
10.根据权利要求7所述的方法,其中,所述接口包括AT嵌入式接口ATA接口。
11.根据权利要求7所述的方法,其中,所述编程和所述重新编程执行对电连接到多个通道的多个非易失性存储器进行连续编程的交织编程操作。
12.根据权利要求11所述的方法,其中,所述报告错误代码包括当在多个闪存存储器的任何一个中检测到所述编程失败时,向所述主机报告所述错误代码。
13.根据权利要求7所述的方法,其中,执行所述向所述主机报告错误代码而无需将所述先前接收的数据和编程命令存储到额外的存储器。
14.一种计算系统,包括:
主机;以及
固态盘设备,用于通过所述主机的请求来写或读出数据,
其中所述固态盘设备包括:
至少一个非易失性存储器;以及
控制器,用于当在从主机接收到的数据中存在错误时向主机报告错误代码,以及在所述非易失性存储器中发生编程失败时向所述主机报告所述错误代码,以请求接收到的数据和相应于所述接收到的数据的命令,
所述错误代码是在由所述控制器支持的接口或由所述非易失性存储器支持的数据传输协议中定义的用于处理除了所述编程失败之外的错误的多个错误代码之一。
15.根据权利要求14所述的计算系统,其中,每当在所述非易失性存储器中发生所述编程失败时,所述控制器都向所述主机报告所述错误代码,而无需将所述先前接收的数据和命令存储到额外的存储器。
CN201010106241.6A 2009-02-10 2010-01-29 固态盘设备及其编程失败处理方法 Active CN101800071B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10548/09 2009-02-10
KR1020090010548A KR20100091379A (ko) 2009-02-10 2009-02-10 반도체 디스크 장치 및 그것의 프로그램 페일 처리 방법

Publications (2)

Publication Number Publication Date
CN101800071A CN101800071A (zh) 2010-08-11
CN101800071B true CN101800071B (zh) 2015-03-18

Family

ID=42541404

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010106241.6A Active CN101800071B (zh) 2009-02-10 2010-01-29 固态盘设备及其编程失败处理方法

Country Status (3)

Country Link
US (1) US20100205517A1 (zh)
KR (1) KR20100091379A (zh)
CN (1) CN101800071B (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8683270B2 (en) * 2010-04-29 2014-03-25 Micron Technology, Inc. Signal line to indicate program-fail in memory
CN101964205B (zh) * 2010-09-17 2013-08-07 记忆科技(深圳)有限公司 基于固态硬盘的ecc模块动态复用系统及方法
CN102567252A (zh) * 2010-12-09 2012-07-11 北京华虹集成电路设计有限责任公司 一种硬盘和主机之间数据传输方法和系统
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US9195530B1 (en) 2011-09-06 2015-11-24 Western Digital Technologies, Inc. Systems and methods for improved data management in data storage systems
US8713357B1 (en) * 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
US9053008B1 (en) 2012-03-26 2015-06-09 Western Digital Technologies, Inc. Systems and methods for providing inline parameter service in data storage devices
CN104937577B (zh) * 2013-03-15 2018-11-30 慧与发展有限责任合伙企业 支持扩展写入的存储器模块控制器
CN104424991A (zh) * 2013-08-30 2015-03-18 北京兆易创新科技股份有限公司 一种串行接口nand闪存单元
CN105045526A (zh) * 2015-05-08 2015-11-11 湖南国科微电子有限公司 一种提高PCIe固态硬盘传输可靠性的方法
US10152413B2 (en) 2015-06-08 2018-12-11 Samsung Electronics Co. Ltd. Nonvolatile memory module and operation method thereof
CN106648439B (zh) * 2015-07-14 2019-11-29 上海宝存信息科技有限公司 于控制逻辑错误时重新配置存储控制器的方法及装置
US10089196B2 (en) 2015-07-14 2018-10-02 Shannon Systems Ltd. Methods for reconfiguring a storage controller when control logic fails and apparatuses using the same
US20170344262A1 (en) * 2016-05-25 2017-11-30 SK Hynix Inc. Data processing system and method for operating the same
KR102267046B1 (ko) * 2017-03-29 2021-06-22 삼성전자주식회사 스토리지 장치 및 배드 블록 지정 방법
KR102456175B1 (ko) 2018-04-30 2022-10-19 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
WO2020087265A1 (en) * 2018-10-30 2020-05-07 Alibaba Group Holding Limited System and method for reporting and handling flash programming failure in host-managed flash translation layer

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101149664A (zh) * 2007-10-26 2008-03-26 华为技术有限公司 固态硬盘及处理其管理数据的方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1145157A (ja) * 1997-07-24 1999-02-16 Internatl Business Mach Corp <Ibm> データ転送装置、ディスク装置及びデータ転送方法
US6567953B1 (en) * 2000-03-29 2003-05-20 Intel Corporation Method and apparatus for host-based validating of data transferred between a device and a host
US6715004B1 (en) * 2000-03-29 2004-03-30 Intel Corporation Method and apparatus for intermediate validation of data transferred between a host and a device
JP3714420B2 (ja) * 2002-08-13 2005-11-09 セイコーエプソン株式会社 データ転送制御装置、電子機器、プログラム及び電子機器の製造方法
US20070233937A1 (en) * 2006-03-31 2007-10-04 Coulson Richard L Reliability of write operations to a non-volatile memory
KR101490327B1 (ko) * 2006-12-06 2015-02-05 퓨전-아이오, 인크. 뱅크 인터리브를 이용한 솔리드-스테이트 스토리지의 명령 관리 장치, 시스템 및 방법
JP4234753B2 (ja) * 2006-12-15 2009-03-04 株式会社東芝 ハードディスクドライブおよびコマンド実行方法
TWI376603B (en) * 2007-09-21 2012-11-11 Phison Electronics Corp Solid state disk storage system with a parallel accessing architecture and a solid state disk controller
US7694196B2 (en) * 2007-11-20 2010-04-06 Qimonda North America Corp. Self-diagnostic scheme for detecting errors
US8438455B2 (en) * 2008-12-31 2013-05-07 Intel Corporation Error correction in a solid state disk

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101149664A (zh) * 2007-10-26 2008-03-26 华为技术有限公司 固态硬盘及处理其管理数据的方法

Also Published As

Publication number Publication date
KR20100091379A (ko) 2010-08-19
US20100205517A1 (en) 2010-08-12
CN101800071A (zh) 2010-08-11

Similar Documents

Publication Publication Date Title
CN101800071B (zh) 固态盘设备及其编程失败处理方法
CN108121669B (zh) 存储器系统及其操作方法
US9977712B2 (en) Memory device with different parity regions
KR102519572B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US10606710B2 (en) Controller, memory system and operating method thereof
KR102542375B1 (ko) 데이터 처리 시스템 및 그의 동작 방법
US11204846B2 (en) Memory system and method for operating the same
CN107957959B (zh) 具有文件级安全擦除的存储器系统及其操作方法
US11016847B2 (en) Memory system and operation method thereof
KR102564774B1 (ko) 메모리 시스템 혹은 데이터 처리 시스템의 동작을 진단하는 장치 혹은 진단을 통해 신뢰성을 확보하는 방법
KR102468751B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR102671727B1 (ko) 메모리 시스템 및 그것의 동작방법
KR20180069960A (ko) 메모리 시스템 및 그의 동작 방법
CN106920575B (zh) 数据存储装置及其操作方法
US10402267B2 (en) Memory system and operating method thereof
KR102571629B1 (ko) 메모리 시스템 및 메모리 시스템의 동작방법
CN111435291A (zh) 用于擦除非易失性存储器块中编程的数据的装置和方法
KR20180094724A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR20190128283A (ko) 컨트롤러, 메모리 시스템 및 그 동작방법
KR20190108788A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR20190102837A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR102513498B1 (ko) 컨트롤러, 그것의 동작방법 및 컨트롤러를 포함하는 메모리 시스템
CN111176555A (zh) 存储器系统及其操作方法
CN112908388B (zh) 存储器装置及其操作方法
KR102526526B1 (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