开放通道存储设备的操作方法与流程

文档序号:22400673发布日期:2020-09-29 18:12阅读:276来源:国知局
开放通道存储设备的操作方法与流程

相关申请的交叉引用

本申请要求于2019年3月20日在韩国知识产权局递交的韩国专利申请no.10-2019-0031649的优先权,其公开内容通过整体引用并入本文中。

本文中描述的本发明构思的示例实施例涉及半导体存储器,更具体地,涉及开放通道存储设备的操作方法。



背景技术:

半导体存储器设备被分类为易失性存储器设备(例如,静态随机存取存储器(sram)或动态随机存取存储器(dram))或非易失性存储器设备(例如,闪存设备、相变ram(pram)、磁ram(mram)、电阻ram(rram)或铁电ram(fram)),其中在所述易失性存储器设备中,当电源关闭时,存储的数据消失,并且在所述非易失性存储器设备中,即使在电源关闭时,也可以保留存储的数据。

闪存设备被广泛用作大容量存储介质。然而,由于闪存设备的物理特性,因此可能期望用于有效地管理闪存设备的单独的管理装置。基于闪存设备的固态驱动器(ssd)的闪存转换层(ftl)被广泛用作管理装置。在传统的ssd中,闪存转换层已由ssd的内部控制器来执行。然而,如今,可能期望被配置为使得主机控制ssd的整体操作的主机级闪存转换层。



技术实现要素:

本发明构思的示例实施例提供了具有改善的可靠性的开放通道存储设备的操作方法。

至少一些示例实施例涉及被配置为由主机来控制的开放通道存储设备,所述开放通道存储设备包括缓冲存储器和非易失性存储器设备。开放通道存储设备的操作方法包括:在主机的控制下执行正常操作;在执行正常操作的同时,检测紧接着与多个非易失性存储器设备中包括的多个存储器块中的第一数据块相关联的编程失败之后的突然断电;响应于检测到的突然断电,将存储在缓冲存储器中的多个用户数据转储到多个存储器块中的转储块;检测通电;以及响应于检测到的通电,对存储在转储块中的多个用户数据执行数据恢复操作。

至少一些示例实施例涉及被配置为由主机来控制的开放通道存储设备,所述开放通道存储设备包括缓冲存储器和非易失性存储器设备。开放通道存储设备的操作方法包括:在主机的控制下执行正常操作;在执行正常操作的同时检测突然断电;响应于检测到的突然断电,将存储在缓冲存储器中的多个用户数据转储到包括在非易失性存储器设备中的多个存储器块中的转储块;检测通电;响应于检测到的通电,对来自转储块的多个用户数据执行第一数据恢复操作;在第一数据恢复操作期间检测与多个存储器块中的第一数据块相关联的编程失败;以及响应于检测到的编程失败,执行与第一数据恢复操作不同的第二数据恢复操作。

至少一些示例实施例涉及被配置为由包括坏块管理器的主机来控制的开放通道存储设备,并且所述开放通道存储设备包括缓冲存储器和非易失性存储器设备。开放通道存储设备的操作方法包括:在主机的控制下执行正常操作;在正常操作期间检测正常断电;响应于检测到的正常断电,执行数据刷新操作,即,将存储在缓冲存储器中的多个用户数据分别存储在非易失性存储器设备中包括的多个存储器块中的对应数据块中;在数据刷新操作期间检测与包括在非易失性存储器设备中的多个存储器块中的第一数据块相关联的编程失败,响应于检测到的编程失败,将错误信息发送到主机;基于要存储在多个存储器块中的第一存储器块中的第一用户数据、与第一用户数据相对应的第二用户数据、以及至少一个虚假数据来生成奇偶校验数据;以及将奇偶校验数据存储在多个存储器块中的对应奇偶校验块中。

附图说明

通过参考附图详细地描述本发明构思的一些示例实施例,本发明构思的一些示例实施例的以上以及其他目的和特征将变得清楚。

图1是示出了根据示例实施例的计算系统的框图。

图2是示出了图1的计算系统的层的示意图。

图3是示出了图1的存储控制器的框图。

图4是示出了图1的存储设备的操作的流程图。

图5a至图5d是用于描述根据图4的流程图的操作的示意图。

图6是示出了在图1的存储设备突然断电之后用于数据恢复的操作的流程图。

图7是用于描述根据图6的流程图的操作的示意图。

图8是示出了图1的存储设备的操作的流程图。

图9a至图9c是用于描述根据图8的流程图的操作的示意图。

图10a至图10c是示出了图1的存储设备的操作的流程图。

图11a至图11d是用于描述根据图10a至图10c的流程图的操作的示意图。

图12是示出了图1的存储设备的操作的流程图。

图13a和图13b是用于描述根据图12的流程图的操作的示意图。

图14是示出了图1的主机与存储设备之间的操作的流程图。

图15是示出了向其应用根据示例实施例的存储设备的服务器系统。

具体实施方式

以下,以本领域普通技术人员容易实现本发明构思的程度来详细且清楚地描述本发明构思的示例实施例。

图1是示出了根据示例实施例的计算系统的框图。参考图1,计算系统100可以包括主机110和存储设备120。在示例实施例中,计算系统100可以包括各种计算系统中的一个计算系统,比如个人计算机、笔记本电脑、服务器、工作站、智能手机和平板电脑。

主机110可以被配置为控制存储设备120。例如,主机110可以将数据存储在存储设备120中,或者可以读取存储在存储设备120中的数据。

存储设备120可以被配置为在主机110的控制下进行操作。例如,存储设备120可以包括存储控制器121、缓冲存储器122和非易失性存储器设备123。

存储控制器121可以被配置为控制缓冲存储器122和非易失性存储器设备123。缓冲存储器122可以被配置为存储从主机110接收的数据、存储在非易失性存储器设备123中的数据、或者存储设备120操作所必需的各种信息。在存储控制器121的控制下,非易失性存储器设备123可以被配置为存储数据或输出存储的数据。在示例实施例中,非易失性存储器设备123可以是nand闪存设备,但是本发明构思的示例实施例不限于此。

存储控制器121可以包括处理电路,比如包括逻辑电路的硬件;诸如执行软件的处理器的硬件/软件组合;或二者的组合。例如,处理电路更具体地可以包括但不限于中央处理单元(cpu)、算术逻辑单元(alu)、数字信号处理器、微型计算机、现场可编程门阵列(fpga)、片上系统(soc)、可编程逻辑单元、微型处理器、专用集成电路(asic)等。

在示例实施例中,传统存储设备通过使用单独的管理装置(例如,闪存转换层ftl)来有效管理非易失性存储器设备。闪存转换层被配置为执行用于有效管理非易失性存储器设备的各种操作,例如地址转换操作、垃圾收集操作、坏块管理操作和损耗均衡操作。也就是说,传统存储设备通过内部执行闪存转换层来有效管理非易失性存储器设备。

然而,根据示例实施例,闪存转换层可以包括在主机110中。换言之,主机110可以包括主机闪存转换层111。主机闪存转换层111可以被配置为执行已在传统存储设备中内部执行的管理操作。

在示例实施例中,当主机闪存转换层111由主机110执行时,存储设备120可以被配置为从主机110接收指示非易失性存储器设备123的实际存储区域的位置的物理地址。也就是说,存储设备120的存储控制器121可以从主机110接收物理地址,并且可以对与接收到的物理地址相对应的位置执行操作。也就是说,存储设备120可以是开放通道固态驱动器(oc-ssd)。以下,为了便于描述,可以使用术语“存储设备”,但是存储设备可以指的是开放通道ssd。

在示例实施例中,主机闪存转换层111可以包括坏块管理器111a。坏块管理器111a可以被配置为管理包括在非易失性存储器设备123中的多个存储器块中的坏块。例如,当从包括在非易失性存储器设备123中的多个存储器块中检测到坏块时,主机闪存转换层111的坏块管理器111a可以用正常块替换坏块。

在示例实施例中,因为非易失性存储器设备123的坏块由主机闪存转换层111的坏块管理器111a来管理,所以当在特定条件下在非易失性存储器设备123中出现坏块时,存储在坏块中的数据或要存储在坏块中的数据可能丢失。

根据示例实施例,在特定条件下,存储设备120可以确保关于存储在非易失性存储器设备123中的数据或要存储在非易失性存储器设备123中的数据的数据完整性。将参考附图来描述根据示例实施例的存储设备120如何确保数据完整性。

图2是示出了图1的计算系统的层的示意图。参考图1和图2,主机110的层可以包括主机闪存转换层111、应用112、文件系统113和设备驱动器114。

应用112可以指示在主机110上驱动的各种软件。文件系统113可以扮演组织由应用使用的文件或数据的角色。例如,文件系统113可以通过使用逻辑地址来管理存储设备120的存储空间。在示例实施例中,文件系统113可以具有随在主机110上驱动的操作系统而变化的类型。例如,文件系统113可以包括各种文件系统中的一个文件系统,比如fat(文件分配表)、fat32、ntfs(nt文件系统)、hfs(分层文件系统)、jsf2(日志文件系统2)、xfs、ods-5(盘上结构-5)、udf、zfs、ufs(unix文件系统)、ext2、ext3、ext4、reiserfs、reiser4、iso9660、gnomevfs、bfs和winfs。

主机闪存转换层111可以在由文件系统113管理的逻辑地址与包括在存储设备120中的非易失性存储器设备123的物理地址之间提供接口。

例如,主机闪存转换层111可以基于包括关于逻辑地址与物理地址之间的对应关系的信息在内的映射表111b来执行逻辑地址与物理地址之间的地址转换操作。备选地,主机闪存转换层111可以被配置为通过使用坏块管理器111a来用正常块替换在非易失性存储器设备123中检测到的坏块。备选地,主机闪存转换层111可以被配置为通过使用i/o调度器111c来执行要提供给存储设备120的i/o的调度。然而,本发明构思的示例实施例不限于此。例如,主机闪存转换层111可以执行可以有效管理存储设备120的非易失性存储器设备123的各种操作,比如垃圾收集操作和损耗均衡操作。

设备驱动器114可以被配置为执行将来自主机闪存转换层111的信息转换为存储设备120可识别的信息的操作。

在示例实施例中,以上描述的应用112、文件系统113、主机闪存转换层111和设备驱动器114可以以软件的形式来实现,并且可以由处理电路来执行,处理电路例如是包括逻辑电路的硬件;诸如执行软件的处理器的硬件/软件组合;或二者的组合。例如,处理电路更具体地可以包括但不限于:中央处理单元(cpu)、算术逻辑单元(alu)、数字信号处理器、微计算机、现场可编程门阵列(fpga)、片上系统(soc)、可编程逻辑单元、微处理器、专用集成电路(asic)等。

基于来自主机110的设备驱动器114的信息,存储控制器121可以被配置为将数据存储在非易失性存储器设备123中或将存储在非易失性存储器设备123中的数据发送给主机110。

在示例实施例中,如上所述,因为逻辑地址被主机闪存转换层111转换为物理地址,所以存储控制器121可以从主机110的设备驱动器114接收物理地址。存储控制器121可以对与接收到的物理地址相对应的存储空间(即,非易失性存储器设备123的物理存储空间)执行读取/写入/擦除操作。

图3是示出了图1的存储控制器的框图。参考图1和图3,存储控制器121可以包括核121a、纠错码(ecc)引擎121b、缓冲管理器121c、raid引擎121d、主机接口121e和nand接口121f。

核121a可以被配置为控制存储控制器121的整体操作。fcc引擎121b可以被配置为检测并纠正从非易失性存储器设备123读取的数据的错误。缓冲管理器121c可以被配置为管理或控制缓冲存储器122。

raid引擎121d可以被配置为针对要存储在非易失性存储器设备123中的数据生成奇偶校验数据。例如,可以将多个数据存储在非易失性存储器设备123中。在这种情况下,多个数据可以构成一个条带(stripe)。raid引擎121d可以对包括在一个条带中的数据执行运算或计算以针对该条带生成奇偶校验数据。

具体地,当一个条带包括7个单位数据时,raid引擎121d可以对7个单位数据执行xor运算以生成具有与一个单位数据相同大小的一个奇偶校验数据。在这种情况下,一个条带可以包括7个单位数据和一个奇偶校验数据。在示例实施例中,可以通过raid引擎121d的raid策略来确定包括在一个条带中的单位数据的数量和包括在该条带中的奇偶校验数据的数量。

在示例实施例中,当不可能识别出7个单位数据中的任何一个单位数据时(即,当错误未被ecc引擎121b纠正时),可以基于剩余的6个单位数据和一个奇偶校验数据来恢复无法纠正的单位数据。

在示例实施例中,可以将包括在一个条带中的多个单位数据分别存储在不同的存储器块(或不同的存储体)中,并且可以将与一个条带相对应的奇偶校验数据存储在奇偶校验块(或奇偶校验存储体)中。在示例实施例中,可以根据给定的raid策略来不同地改变存储有单元数据的存储器块(或存储体)和存储有奇偶校验数据的奇偶校验块(或奇偶校验存储体)。在示例实施例中,主机闪存转换层111可以指定存储有单位数据的存储器块(或存储体)和存储有奇偶校验数据的奇偶校验块(或奇偶校验存储体)。

存储控制器121可以通过主机接口121e与主机110通信。在示例实施例中,主机接口121e可以是nvme(非易失性存储器快速)接口,但是本发明构思的示例实施例不限于此。例如,主机接口121e可以包括各种接口中的至少一个接口,比如sata(串行ata)接口、pcie(外围组件互连快速)接口、sas(串行附接scsi)接口和ufs(通用闪存)接口。

存储控制器121可以通过nand接口121f与非易失性存储器设备123通信。

图4是示出了图1的存储设备的操作的流程图。图5a至图5d是用于描述根据图4的流程图的操作的示意图。以下,为了便于描述,省略了对于描述存储设备120的操作不必要的组件。

例如,为了说明的简洁和描述的方便,假设非易失性存储器设备123包括第0存储器块blk0至第八存储器块blk8。假设第0存储器块blk0至第六存储器块blk6中的每个存储器块是存储从主机110接收的用户数据的数据块“d”,并且第七存储器块blk7是被配置为存储由raid引擎121d生成的奇偶校验数据的奇偶校验块“p”。也就是说,一个条带可以包括7个用户数据和一个奇偶校验数据,并且可以将包括在一个条带中的7个用户数据和一个奇偶校验数据分别存储在第0存储器块blk0至第七存储器块blk7中。

另外,假设第八存储器块blk8可以是用于在特定条件(例如,突然断电的条件)下转储存储在缓冲存储器122中的数据的转储块dp。在示例实施例中,转储块dp可以是未被主机110识别的存储空间。

在示例实施例中,第0存储器块blk0至第七存储器块blk7可以分别包括在不同的存储体中。包括在第0存储器块blk0至第七存储器块blk7中的每个存储器块中的每个存储器单元可以是被配置为存储“n”个比特(“n”是2或更大的整数)的多级单元。包括在第八存储器块blk8中的每个存储器单元可以是被配置为存储一个比特的单级单元,或者可以是被配置为存储“m”个比特(“m”是小于“n”的整数)的多级单元。也就是说,第八存储器块blk8的编程速度可以高于或快于第0存储器块blk0至第七存储器块blk7中的每个存储器块的编程速度。

以上组件是用于清楚地描述本发明构思的实施例的示例,并且本发明构思的示例实施例不限于此。

参考图1和图4,在操作s110中,存储设备120可以执行正常操作。例如,如图5a中所示,存储设备120可以在主机110的控制下执行正常的写入操作。

具体地,参考图5a,存储设备120可以从主机110接收第0用户数据d0至第六用户数据d6。可以将这样接收到的第0用户数据d0至第六用户数据d6存储在缓冲存储器122中。

在示例实施例中,尽管未在附图中示出,但是当第0用户数据d0至第六用户数据d6被正常地存储在缓冲存储器122中时,存储设备120的存储控制器121可以向主机110发送完成响应,该完成响应提供关于正常地接收到第0用户数据d0至第六用户数据d6的通知。基于完成响应,主机110可以识别出第0用户数据d0至第六用户数据d6被正常存储在存储设备120中。

存储控制器121可以将存储在缓冲存储器122中的第0用户数据d0至第六用户数据d6存储在作为对应数据块“d”的第0存储器块blk0至第六存储器块blk6中。在这种情况下,存储控制器121的raid引擎121d可以基于第0用户数据d0至第六用户数据d6生成第0奇偶校验数据p0。存储控制器121可以将第0奇偶校验数据p0存储在作为奇偶校验块“p”的第七存储器块blk7中。

也就是说,第一条带str1可以包括第0用户数据d0至第六用户数据d6以及第0奇偶校验数据p0,并且将包括在第一条带str1中的各个数据存储在对应存储器块中的操作可以是正常的写入操作。在示例实施例中,正常的写入操作可以由主机110来执行,并且存储单个用户数据的物理位置可以由主机110的主机闪存转换层111来指定。

如上所述,因为第一条带str1包括第0奇偶校验数据p0,所以即使未识别出包括在第一条带str1中的多个用户数据中的任一个用户数据(例如,d2)(例如,即使ecc引擎121b未纠正错误),也可以基于剩余的用户数据d0、d1和d3至d6以及第0奇偶校验数据p0来恢复第二用户数据d2。

返回图4,在操作s120中,存储设备120可以检测断电。例如,在执行参考图5a描述的正常操作的同时,存储设备120可以检测断电po。在示例实施例中,断电po可以包括由于从主机110接收的断电信号而引起的正常断电npo和由于突然的电源中断而引起的突然断电spo。

例如,如图5b所示,假设缓冲存储器122存储从主机110接收的第0用户数据d0至第三用户数据d3。在这种情况下,因为主机110识别出第0用户数据d0至第三用户数据d3被正常写入,所以可能必须确保第0用户数据d0至第三用户数据d3的可靠性。

可以在将第0用户数据d0和第一用户数据d1分别存储在作为对应数据块“d”的第0存储器块blk0和第一存储器块blk1中之后检测断电po。在这种情况下,因为尚未将第二用户数据d2和第三用户数据d3存储在非易失性存储器设备123中,所以第二用户数据d2和第三用户数据d3可以保持在缓冲存储器122中。

回到图4,在操作s130中,存储设备120可以确定检测到的断电是正常断电npo还是突然断电spo。例如,当检测到的断电是正常断电npo时,存储设备120可以从主机110接收关于正常断电npo的信息。相反,当检测到的断电是突然断电spo时,可以在存储设备120没有从主机110接收单独的信号的状态下切断提供给存储设备120的电源电压。存储设备120可以基于电源电压和来自主机110的信号来确定检测到的断电是正常断电npo还是突然断电spo。

当检测到的断电是正常断电npo时,存储设备120可以执行操作s141至操作s143。在操作s141中,存储设备120可以执行数据刷新操作。在操作s142中,存储设备120可以基于条带的数据和虚假数据来生成奇偶校验数据。在操作s143中,存储设备120可以将生成的奇偶校验数据写入条带的奇偶校验块中。以下,为了便于描述,在正常断电npo中,存储设备120将存储在缓冲存储器122中的数据存储在对应的数据块“d”中、写入虚假数据、以及生成奇偶校验数据的操作被统称为“数据刷新操作”。

例如,如图5c所示,在将第0用户数据d0和第一个用户数据d1分别存储在作为对应数据块“d”的第0存储器块blk0和第一存储器块blk1中之后可能发生正常断电npo。在这种情况下,存储设备120可以将存储在缓冲存储器122中的第二用户数据d2和第三用户数据d3分别存储在作为对应数据块“d”的第二存储器块blk2和第三存储器块blk3中。

在示例实施例中,根据以上假设,第一条带str1包括7个用户数据。相反,在发生正常断电npo的情况下,第一条带str1可以仅包括四个用户数据d0、d1、d2和d3。在这种情况下,可以将虚假数据dm写入与第一条带str1相对应的每个剩余的数据块(例如,blk4、blk5和blk6)中。在示例实施例中,虚假数据dm可以具有给定数据模式或随机数据模式。

也就是说,在将保持在缓冲存储器122中的用户数据写入相应的数据块中之后没有形成完整条带的情况下,可以将虚假数据写入条带的剩余的数据块中。

之后,存储控制器121的raid引擎121d可以基于包括在第一条带str1中的用户数据d0至d3以及虚假数据dm来生成奇偶校验数据p0-m。可以将奇偶校验数据p0-m写入作为奇偶校验块“p”的第七存储器块blk7中。

如上所述,当存储设备120在正常操作期间检测到正常断电npo时,存储设备120可以将保持在缓冲存储器122中的用户数据分别写入对应数据块中,并且可以将虚假数据写入剩余的数据块(换言之,不用于构造条带的数据块)中。之后,存储设备120可以基于包括在条带中的用户数据和虚假数据来生成奇偶校验数据,并且可以将生成的奇偶校验数据写入奇偶校验块中。关于一个条带描述了在正常断电之后执行的以上操作,但是本发明构思的示例实施例不限于此。例如,在正常断电npo中,存储设备120可以对多个条带中的每个条带执行上述操作。

返回图4,当检测到的断电是突然断电spo时,在操作s150中,存储设备120可以执行数据转储操作。以下,为了便于描述,在突然断电spo中将缓冲存储器122的用户数据移动到特定存储器块(例如,转储块dp)的操作被称为“数据转储操作”。

例如,如图5c所示,可能在将第0用户数据d0和第一用户数据d1分别存储在相应存储器块blk0和blk1中之后发生突然断电spo。在这种情况下,存储设备120可以将保持在缓冲存储器122中的第二用户数据d2和第三用户数据d3转储到作为转储块dp的第八存储器块blk8。换言之,存储设备120可以将存储在缓冲存储器122中的第二用户数据d2和第三用户数据d3写入第八存储器块blk8中。

在示例实施例中,将第二用户数据d2和第三用户数据d3写入第八存储器块blk8的速度可以比将第二用户数据d2和第三用户数据d3写入对应数据块的速度更高。也就是说,在突然断电spo中执行的数据转储操作的速度可以比在正常断电npo中执行的数据刷新操作的速度更高。

在示例实施例中,在关于突然断电spo执行的转储操作中,可以将针对第二用户数据d2和第三用户数据d3的元数据md转储到第八存储器块blk8。元数据md可以包括第二用户数据d2和第三用户数据d3中的每个用户数据的状态信息或位置信息。

尽管未在附图中示出,但是可以将元数据md转储到任何其他的存储器块(例如,固件块)(未示出),但是本发明构思的示例实施例不限于此。

如上所述,在正常断电npo中,根据示例实施例的存储设备120可以将缓冲存储器122的用户数据写入对应数据块中,并且可以将虚假数据写入剩余的数据块中。此后,存储设备120可以以条带为单位基于用户数据(或虚假数据)来生成奇偶校验数据,并且可以将生成的奇偶校验数据写入奇偶校验块中。因此,可以在正常断电npo中确保数据完整性。

备选地,在突然断电spo中,根据示例实施例的存储设备120可以将缓冲存储器122的用户数据快速转储到转储块dp。当在突然断电spo之后接通电源时,存储设备120可以恢复转储块dp的数据,从而确保数据完整性。将参照图6和图7更充分地描述在突然断电spo之后接通电源时恢复转储块dp的数据的操作。

图6是示出了在图1的存储设备突然断电之后用于数据恢复的操作的流程图。图7是用于描述根据图6的流程图的操作的示意图。

参考图1、图6和图7,在操作s210中,存储设备120可以通电。在操作s220中,存储设备120可以确定在通电之前的断电是否是突然断电spo。

例如,如参考图4所描述的,存储设备120可以正常地断电(即,npo)或可以突然地断电(即,spo)。存储设备120可以参考元数据md来确定先前的断电是正常断电npo还是突然断电spo。

当在通电之前的断电是正常断电npo时,在操作s240中,存储设备120可以执行正常操作。参考图4的操作s110和图5a的操作描述了正常操作,因此将省略另外的描述以避免冗余。

当在通电之前的断电是突然断电spo时,在操作s230中,存储设备120可以执行数据恢复操作。例如,存储设备120可以在参考图4和图5d描述的突然断电spo之后通电。在这种情况下,如图7所示,可以将一些用户数据(例如,d2和d3)存储在作为转储块dp的第八存储器块blk8中。

如上所述,因为存储在第八存储器块blk8中的第二用户数据d2和第三用户数据d3是由于突然断电spo而临时存储在第八存储器块blk8中的用户数据,所以可能必须将第二用户数据d2和第三用户数据d3写入作为对应数据块“d”的第二存储器块blk2和第三存储器块blk3。

也就是说,当在突然断电spo之后接通电源时,存储设备120可以执行数据恢复操作,使得存储在转储块dp中的用户数据(例如,d2和d3)迁移到对应数据块(例如,blk2和blk3)。

在示例实施例中,可以基于元数据md来确定转储块dp存储用户数据的位置。例如,在存储设备120的数据恢复操作中,可以将元数据md加载到缓冲存储器122上,并且存储控制器121可以基于元数据md来确定存储在转储块dp中的用户数据(例如,d2和d3)的存储位置(即,blk2和blk3)。存储控制器121可以将转储块dp的用户数据写入基于元数据md确定的存储位置。

在示例实施例中,在数据恢复操作完成之后,转储块dp可以被设置为空闲块以用于任何其他操作(例如,由于下一次突然断电而执行的转储操作)。

如上所述,根据示例实施例的存储设备120可以在正常断电npo中执行数据刷新操作(图4的操作s141至操作s143),从而确保用户数据的可靠性。另外,存储设备120可以在突然断电spo中执行数据转储操作(图4的操作s150),并且可以在突然断电spo之后执行数据恢复操作,从而确保用户数据的可靠性。

在示例实施例中,可能在正常断电npo之后执行的数据刷新操作期间、在紧邻突然断电spo之前执行的正常操作期间、或者在当突然断电spo之后接通电源时执行的数据恢复操作期间在特定存储器块中发生编程失败p/f。因为传统存储设备内部执行闪存转换层,所以传统存储设备可以用正常块直接替换发生编程失败p/f的存储器块(即,坏块)并可以正常地执行下一个操作。

相反,由于由被配置为执行主机闪存转换层111的主机110来控制的存储设备120(例如,开放通道ssd)无法内部管理坏块,因此要写入坏块中的用户数据可能会丢失。

当在正常断电npo之后执行的数据刷新操作期间、在紧邻突然断电spo之前执行的正常操作期间、或者在当突然断电spo之后接通电源时执行的数据恢复操作期间在特定存储器块中发生编程失败p/f时,根据示例实施例的存储器设备120可以确保要存储在发生编程失败p/f的存储器块(即,坏块)中的数据的可靠性。以下,将参考附图描述当在特定条件下在特定块中发生编程失败p/f时确保存储设备的用户数据的可靠性的方法。

图8是示出了图1的存储设备的操作的流程图。图9a至图9c是用于描述根据图8的流程图的操作的示意图。将参考图8以及图9a至图9c描述在发生正常断电npo时执行的数据刷新操作期间发生编程失败p/f的实施例。为了便于描述,关于上述组件,将省略另外的描述以避免冗余。发生编程失败p/f的存储器块被称为“坏块”,并且要存储在坏块中的用户数据被称为“编程失败(p/f)数据”。将参考图8以及图9a至图9c描述的实施例是用于容易地描述本发明构思的技术构思的示例,并且本发明构思的示例实施例不限于此。

参考图1和图8,在操作s300中,存储设备120可以检测正常断电npo。参考图4的操作s120和操作s130描述了操作s300,因此将省略另外的描述以避免冗余。

在操作s301中,将变量“k”设置为“1”。在示例实施例中,变量“k”仅用于容易地描述存储设备120的迭代操作,而不旨在限制本发明构思。

在操作s310中,存储设备120可以将缓冲存储器122的第k个用户数据写入对应数据块中。在操作s320中,存储设备120可以确定是否发生编程失败p/f。

当操作s320的确定结果指示检测到编程失败p/f时,在操作s330中,存储设备120可以将错误信息eri报告给主机110并可以提供第k个用户数据作为raid引擎121d的输入。

例如,如图9a所示,可能在第0用户数据d0和第一用户数据d1被分别存储在作为对应数据块“d”的第0存储器块blk0和第一存储器块blk1中之后发生正常断电npo。在这种情况下,第二用户数据d2和第三用户数据d3可以保持在缓冲存储器122中。

响应于正常断电npo,存储设备120可以将缓冲存储器122的第二用户数据d2写入作为对应数据块“d”的第二存储器块blk2中。在这种情况下,可能在与第二存储器块blk2相关联的编程操作期间发生编程失败p/f。

响应于与第二存储器块blk2相关联的编程失败p/f,存储控制器121可以将错误信息eri发送给主机110。在示例实施例中,错误信息eri可以被提供为aer完成(异步事件请求完成)。

在示例实施例中,主机110可以基于接收到的错误信息eri识别出关于第二存储器块blk2发生了编程失败p/f(即,第二存储器块blk2是坏块)。主机110可以用任何其他的正常块替换作为坏块的第二存储器块blk2。在示例实施例中,替换坏块的操作可以由参考图1和图2描述的主机闪存转换层111的坏块管理器111a来执行。

在主机110不干预的情况下,存储设备120可以将要存储在发生编程失败p/f的第二存储器块blk2中的第二用户数据d2(即,p/f数据)提供为raid引擎121d的输入。

返回图8,在操作s340中,可以确定变量“k”是否为最大值。在示例实施例中,变量“k”为最大值可以意味着将保持在缓冲存储器122中的所有用户数据完全写入对应数据块中(在这种情况下,可以排除坏块)。

当变量“k”不是最大值时,在操作s341中,变量“k”可以增加差不多“1”,并且存储设备120可以执行操作s310。当变量“k”为最大值时,在操作s350中,存储设备120可以确定在条带中是否存在剩余的数据块。

当在条带中存在剩余的数据块时,在操作s360中,存储设备120可以将虚假数据dm写入剩余的数据块中。当不存在剩余的数据块时或在操作s360之后,在操作s370中,存储设备120可以生成奇偶校验数据并可以将奇偶校验数据写入对应奇偶校验块中。

例如,如图9b所示,可以将缓冲存储器122的第三用户数据d3写入第三存储器块blk3中。可以提供这样写入的第三用户数据d3作为raid引擎121d的输入。

如以上描述中一样,当第一条带str1包括7个用户数据和一个奇偶校验数据时,可能需要7个用户数据来生成奇偶校验数据。相反,当第三用户数据d3被完全写入时,因为将总共4个用户数据d0至d3输入到raid引擎121d,所以可能需要附加的数据来生成奇偶校验数据。在这种情况下,存储设备120可以将虚假数据dm写入剩余的数据块(例如,blk4、blk5和blk6)中的每一个中。

因此,raid引擎121d可以基于第0用户数据d0至第三用户数据d3以及三个附加的虚假数据dm来生成奇偶校验数据p0-m。可以将生成的奇偶校验数据p0-m写入作为奇偶校验块“p”的第七存储器块blk7中。

在示例实施例中,如图9b所示,当在第二存储器块blk2中发生编程失败p/f时,可以不将第二用户数据d2写入第二存储器块blk2中。然而,可以基于存储在作为奇偶校验块“p”的第七存储器块blk7中的奇偶校验数据p0-m和存储在其他数据块blk0、blk1以及blk3至blk6中的用户数据d0、d1、以及d3至d6来恢复未写入第二存储器块blk2中的第二用户数据d2。

因此,即使在关于正常断电npo执行的数据刷新操作期间发生编程失败p/f,主机110之后也可以通过使用对应奇偶校验数据来恢复要存储在发生编程失败p/f的数据块(即,坏块)中的数据。

在示例实施例中,当发生正常断电npo时,可以对多个条带执行数据刷新操作。例如,如图9c中所示,可以在第0用户数据d0和第一用户数据d1被分别存储在作为对应数据块“d”的第0存储器块blk0和第一存储器块blk1中之后发生正常断电npo。在这种情况下,假设缓冲存储器122保持第二用户数据d2至第十用户数据d10。

在这种情况下,响应于正常断电npo,存储设备120可以将第二用户数据d2至第六用户数据d6存储在对应存储器块blk2至blk6中。可能在与第二存储器块blk2相关联的编程操作中发生编程失败p/f。在这种情况下,存储设备120可以基于参考图9b描述的操作方法来生成奇偶校验数据p0-m,并且可以将生成的奇偶校验数据p0-m写入作为对应奇偶校验块“p”的第七存储器块blk7中。也就是说,存储设备120可以执行以上操作以构造包括第0用户数据d0至第六用户数据d6以及第0奇偶校验数据p0-m的第一条带str1。

之后,存储设备120可以将剩余的用户数据d7至d10写入相应存储器块blk0至blk3中。在这种情况下,因为第二存储器块blk2是坏块,所以可能不能将第九用户数据d9正常地写入第二存储器块blk2中(即,再次发生编程失败p/f的可能性较高)。因此,为了提高数据完整性和操作速度,存储设备120可以跳过与处于编程失败(p/f)状态的第二存储器块blk2相关联的编程操作。然而,要写入第二存储器块blk2中的第九用户数据d9可以被提供为raid引擎121d的输入。

之后,存储设备120可以将第十用户数据d10写入作为对应数据块“d”的第三存储器块blk3中,可以将虚假数据dm写入剩余的数据块blk4、blk5和blk6中,并且可以基于第七用户数据d7至第十用户数据d10以及虚假数据dm(例如,三个虚假数据)来生成第一虚假校验数据p1-m。可以将这样生成的第一奇偶校验数据p1-m写入作为奇偶校验块“p”的第七存储器块blk7中。也就是说,存储设备120可以执行以上操作以构建包括第七用户数据d7至第十用户数据d10以及第一奇偶校验数据p1-m的第二条带str2。

如上所述,当在关于正常断电npo执行的数据刷新操作期间发生编程失败p/f时,根据示例实施例的存储设备120可以不写入与处于编程失败(p/f)状态的存储器块相对应的用户数据。相反,存储设备120可以基于与处于编程失败(p/f)状态的存储器块相对应的用户数据以及包括在对应条带中的用户数据或虚假数据来生成奇偶校验数据,并且可以将生成的奇偶校验数据写入奇偶校验块“p”中。这样,可以确保由于编程失败p/f而未正常写入的数据的可靠性。

图10a至图10c是示出了图1的存储设备的操作的流程图。图11a至图11d是用于描述根据图10a至图10c的流程图的操作的示意图。

将参考图10a至图10c以及图11a至图11d来描述与紧接着在特定存储器块中发生编程失败p/f之后发生突然断电spo的情况相对应的实施例。然而,这是为了容易地描述本发明构思的实施例,并且本发明构思的示例实施例不限于此。

参考图1和图10a,在操作s410中,存储设备120可以在执行正常操作的同时检测编程失败p/f。在操作s420中,存储设备120可以响应于检测到的编程失败p/f将错误信息eri报告给主机110。

例如,如图11a中所示,存储设备120可以将缓冲存储器122的第一用户数据d1写入作为数据块“d”的第一存储器块blk1中。在这种情况下,在第一存储器块blk1中可能发生编程失败p/f。响应于与第一存储器块blk1相关联的编程失败p/f,存储控制器121可以将错误信息eri发送给主机110。在示例实施例中,可以通过aer完成来提供错误信息eri。

之后,在操作s430中,存储设备120可以检测紧接着编程失败p/f之后的突然断电spo。在操作s440中,存储设备120可以响应于检测到的突然断电spo而执行数据转储操作。

例如,如图11b所示,可能紧接着与第一存储器块blk1相关联的编程失败p/f之后发生突然断电spo。在这种情况下,缓冲存储器122可以保持第一用户数据d1至第三用户数据d3。这是因为由于与作为对应数据块“d”的第一存储器块blk1相关联的编程失败p/f而未将第一用户数据d1正常写入第一存储器块blk1中。

如参考图5d给出的描述中一样,存储设备120可以将保持在缓冲存储器122中的用户数据(即,d1、d2和d3)转储到作为转储块dp的第八存储器块blk8。在示例实施例中,可以将针对第一用户数据d1至第三用户数据d3的元数据md转储到第八存储器块blk8。尽管未在附图中示出,但是可以将针对第一用户数据d1至第三用户数据d3的元数据md转储到与第八存储器块blk8不同的单独的存储器块。

在示例实施例中,在从编程失败p/f开始经过足够时间之后发生突然断电spo的情况下,第一用户数据d1可能不保持在缓冲存储器122中。具体地,在发生突然断电spo之前,主机110可以响应于错误信息eri识别出在第一存储器块blk1中发生了编程失败p/f;当主机110获取第一用户数据i)1时,可以从缓冲存储器122中释放第一用户数据d1。为此,第一用户数据d1可以不保持在缓冲存储器122中。在这种情况下,因为主机110正常地识别第一用户数据d1,所以可以不需要针对第一用户数据d1的单独的转储操作。

之后,在操作s450中,存储设备120可以通电。在操作s460中,存储设备120可以执行与编程失败p/f相关联的数据恢复操作。

例如,如参考图6和图7所描述的,在与编程p/f不相关联的数据恢复操作中,在存储设备120的控制下,可以将存储在作为转储块dp的第八存储器块blk8中的用户数据迁移到对应数据块。

相反,在紧接着编程失败p/f之后发生突然断电spo的情况下,可以执行针对要存储在处于编程失败(p/f)状态的存储器块中的数据的单独的数据恢复操作。

例如,参考图1、图10a和图10b,当存储设备120在紧接着编程失败p/f之后发生的突然断电spo之后通电时,可以通过操作s461a至操作s461d执行与编程失败p/f相关联的数据恢复操作。

在操作s461a中,存储设备120可以允许用户数据从转储块迁移到对应数据块。在这种情况下,可以排除要存储在处于编程失败(p/f)状态的数据块中的用户数据(即,p/f数据)。

之后,存储设备120可以执行操作s461b至操作s461d。操作s461b至操作s461d类似于图8的操作s350至操作s370,因此将省略附加的描述以避免冗余。

例如,如图11c中所示,当存储设备120通电时,作为转储块dp的第八存储器块blk8可以包括第一用户数据d1至第三用户数据d3以及元数据md。

在这种情况下,基于元数据md,存储设备120可以确定将存储第一用户数据d1至第三用户数据d3的位置(即,存储器块的物理位置)以及处于编程失败(p/f)状态的存储器块。

在图11c的实施例中,因为在第一存储器块blk1中发生编程失败p/f,所以可以跳过针对第一存储器块blk1的编程操作,并且作为p/f数据的第一用户数据d1被提供为raid引擎121d的输入。

存储设备120可以将存储在作为转储块dp的第八存储器块blk8中的第二用户数据d2和第三用户数据d3分别写入作为对应数据块“d”的第二存储器块blk2和第三存储器块blk3中。之后,如以上描述中一样,存储设备120可以将虚假数据dm写入剩余的数据块(例如,blk4至blk6)中的每一个中。之后,如以上描述中一样,存储控制器121的raid引擎121d可以基于包括在第一条带str1中的第0用户数据d0至第三用户数据d3以及虚假数据dm(即,三个虚假数据)来生成奇偶校验数据p0-m。可以将生成的奇偶校验数据p0-m写入作为奇偶校验块“p”的第七存储器块blk7中。

如上所述,在紧接着与特定存储器块相关联的编程失败p/f之后发生突然断电spo的情况下,根据示例实施例的存储设备120可以将存在于缓冲存储器122中的用户数据转储到转储块dp。之后,当接通电源时,存储设备120可以将转储块dp的多条用户数据分别写入相应存储器块中,并且可以基于转储块dp的p/f数据(即,要写入处于编程失败(p/f)状态的存储器块中的用户数据)和写入到数据块中的数据(或虚假数据)来生成奇偶校验数据。因此,可以通过使用相应奇偶校验数据来正常地恢复p/f数据。

在示例实施例中,例如,参考图1、图10a和图10c,当存储设备120在紧接着编程失败p/f之后发生的突然断电spo之后通电时,存储设备120可以通过操作s462a至操作s462d执行与编程失败p/f相关联的数据恢复操作。

在操作s462a中,存储设备120可以将转储块dp的用户数据分别写入对应数据块“d”中。在操作s462b中,存储设备120可以确定关于特定存储器块是否发生编程失败p/f。

当确定关于特定存储器块发生编程失败p/f时,在操作s462c中,存储设备120可以将要写入处于编程失败(p/f)状态的存储器块的用户数据(即,p/f数据)加载到缓冲存储器122上并可以将相关联的错误信息eri’报告给主机110。

在操作s462d中,响应于来自主机110的确认命令,存储设备120可以释放缓冲存储器122的存储有p/f数据的区域。

例如,如图11d所示,作为转储块dp的第八存储器块blk8可以包括第一用户数据d1至第三用户数据d3以及元数据md。

存储设备120可以将存储在作为转储块dp的第八存储器块blk8中的第一用户数据d1至第三用户数据d3分别写入作为对应数据块“d”的第一存储器块blk1至第三存储器块blk3中。在此,因为第一存储器块blk1是坏块,所以可能关于第一存储器块blk1发生编程失败p/f。在这种情况下,第一用户数据d1可以是p/f数据。

响应于与第一存储器块blk1相关联的编程失败p/f,存储控制器121可以将作为p/f数据的第一用户数据d1加载到缓冲存储器122上,并且可以将相关联的错误信息eri’发送给主机110。

尽管未在附图中示出,但是响应于相关联的错误信息eri’,主机110可以识别出在第一存储器块blk1中发生了编程失败p/f,并且可以获取加载到缓冲存储器122上的第一用户数据d1。备选地,主机110可以响应于相关联的错误信息eri’而执行坏块替换操作。

在示例实施例中,存储设备120可以基于元数据md将第一用户数据d1加载到缓冲存储器122上,而无需针对第一存储器块blk1的编程操作。例如,元数据md可以包括指示紧邻突然断电spo之前在第一存储器块blk1中发生了编程失败p/f的信息。基于元数据md,存储设备120可以识别出在突然断电spo之前在第一存储器块blk1中发生了编程失败p/f。这样,存储设备120可以跳过针对第一用户数据d1的编程操作,并且可以将第一用户数据d1加载到缓冲存储器122上。之后,存储设备120可以将相关联的错误信息eri’发送给主机110。

如上所述,根据示例实施例的存储设备120可以将要存储在处于编程失败(p/f)状态的存储器块中的用户数据(即,p/f数据)加载到缓冲存储器122上,并且可以将相关联的错误信息eri’发送给主机110。主机110可以响应于相关联的错误信息eri’而获取加载到缓冲存储器122上的p/f数据。因此,即使紧接着与特定存储器块相关联的编程失败p/f之后发生突然断电spo,也确保了存在于缓冲存储器122中的用户数据的可靠性。

图12是示出了图1的存储设备的操作的流程图。图13a和图13b是用于描述根据图12的流程图的操作的示意图。参考图1和图12,存储设备120可以执行操作s510和操作s520。操作s510和操作s520类似于图4的操作s120、操作s130和操作s150,因此将省略附加的描述以避免冗余。

之后,存储设备120可以执行操作s530和操作s540。操作s530和操作s540类似于图6的操作s210至操作s230,因此将省略附加的描述以避免冗余。

在操作s550中,存储设备120可以在数据恢复操作期间检测编程失败p/f。例如,存储设备120可以允许存储在转储块dp中的多条用户数据迁移到相应数据块中,也就是说,可以执行数据恢复操作。在这种情况下,在特定存储器块中可能发生编程失败p/f。

在操作s560中,存储设备120可以响应于检测到的编程失败p/f执行与编程失败p/f相关联的数据恢复操作。例如,存储设备120可以基于参考图10a至图10c以及图11a至图11d描述的操作方法来操作。

也就是说,存储设备120可以将要存储在处于编程失败(p/f)状态的存储器块(即,坏块)中的用户数据(即,p/f数据)提供为raid引擎121d的输入而无需将用户数据(即,p/f数据)写入坏块中,并且可以针对对应条带生成奇偶校验数据。备选地,存储设备120可以将要存储在坏块中的p/f数据加载到缓冲存储器122上,并且可以将相关联的错误信息eri’提供给主机110。

具体地,在图13a和图13b所示的实施例中,假设在第0用户数据d0和第一用户数据d1被分别存储在作为对应数据块“d”的第0存储器块blk0和第1存储器块blk1中之后发生突然断电spo,因此可以将第二用户数据d2和第三用户数据d3以及元数据md转储到作为转储块dp的第八存储器块blk8。此外,假设当在突然断电spo之后接通电源时在第二存储器块blk2中发生编程失败p/f。然而,以上条件和假设可以仅是用于清楚地描述示例实施例的示例,并且本发明构思的示例实施例不限于此。

参考图1、图12和图13a,当在突然断电spo之后接通电源时,存储设备120可以将存储在作为转储块dp的第八存储器块blk8中的第二用户数据d2和第三用户数据d3分别写入作为对应数据块“d”的第二存储器块blk2和第三存储器块blk3中。在写入操作期间,可能在第二存储器块blk2中发生编程失败p/f。在这种情况下,响应于与第二存储器块blk2相关联的编程失败p/f,存储设备120可以将要存储在第二存储器块blk2中的第二用户数据d2提供为raid引擎121d的输入,并且可以将相关联的错误信息eri发送给主机110。

在示例实施例中,将虚假数据dm写入剩余的数据块(例如,blk4至blk6)中的每一个中的操作、raid引擎121d基于包括在一个条带中的用户数据和虚假数据来生成奇偶校验数据p0-m的操作、以及将奇偶校验数据p0-m存储在作为奇偶校验块“p”的第七存储器块blk7中的操作类似与以上描述,因此将省略附加的描述以避免冗余。

备选地,参考图1、图12和图13b,存储设备120可以将存储在作为转储块dp的第八存储器块blk8中的第二用户数据d2和第三用户数据d3分别写入作为对应数据块“d”的第二存储器块blk2和第三存储器块blk3中。在写入操作期间,可能在第二存储器块blk2中发生编程失败p/f。在这种情况下,响应于与第二存储器块blk2相关联的编程失败p/f,存储设备120可以将要写入第二存储器块blk2的第二用户数据d2加载到缓冲存储器122上,并且可以将相关联的错误信息eri发送到主机110。主机110响应于错误信息eri而获取加载到缓冲存储器122上的第二用户数据d2的下一个操作类似于以上描述,因此将省略附加的描述以避免冗余。

也就是说,如上所述,当在突然断电spo之后接通电源时,存储设备120可以对存储在转储块dp中的用户数据执行数据恢复操作。当在数据恢复操作期间在特定存储器块中发生编程失败p/f的情况下,存储设备120可以基于包括p/f数据的剩余的用户数据来生成奇偶校验数据;备选地,存储设备120可以将p/f数据加载到缓冲存储器122上,并且可以将错误信息eri提供给主机110。这可能意味着可以确保p/f数据的可靠性。

图14是示出了图1的主机与存储设备之间的操作的流程图。为了便于描述,关于上述实施例,将省略附加的描述以避免冗余。然而,本发明构思的示例实施例不限于此。例如,可以用以上实施例中的至少一个实施例或以上实施例中的至少两个实施例的组合来实现图14中所示的流程图的各个操作。

参考图1和图14,在操作s1010中,主机110和存储设备120可以执行正常操作。例如,主机110和存储设备120可以执行参考图5a描述的正常操作。

在操作s1001中,存储设备120可以将错误信息eri发送给主机110。例如,存储设备120可以在主机110的控制下执行正常操作。在执行正常操作的同时,可以关于特定存储器块检测编程失败p/f。在这种情况下,如参考图1所描述的,因为存储设备120不包括坏块管理功能,所以存储设备120可以将与编程失败p/f相关联的错误信息eri提供给主机110。

在示例实施例中,可以将错误信息eri提供为aer完成(异步事件请求完成)。例如,主机110可以在与存储设备120一起执行的初始化操作期间将aer发送给存储设备120。aer可以用于使存储设备120将特定信息提供给主机110,而与主机110的控制无关。当在存储设备120中发生特定事件(例如,编程失败p/f)时,可以将相关联的信息(即,错误信息eri)作为以上aer的完成响应提供给主机110。

在操作s1002中,主机110可以基于错误信息eri执行坏块管理操作。例如,如参考图1所描述的,主机110的主机闪存转换层111可以管理包括在存储设备120的非易失性存储器设备123中的坏块。也就是说,响应于错误信息eri,主机110可以用正常块替换坏块并可以更新相关联的映射表。

在操作s1020中,存储设备120可以断电。例如,如上所述,存储设备120可以通过检测来自主机110的关于正常断电npo的信息或电源电压的下降来检测正常断电npo或突然断电spo。

在操作s1030中,存储设备120可以执行数据备份操作。在示例实施例中,操作s1030可以包括参考图1至图13b描述的在正常断电npo之后的数据刷新操作或在突然断电spo之后的数据转储操作。也就是说,基于检测到的断电种类、是否发生了编程失败p/f、或者发生编程失败p/f的时间,存储设备120可以遵循参考图1至图13b描述的实施例中的一个实施例来进行操作。

在示例实施例中,当在操作s1030中检测到的断电是正常断电npo并发生了编程失败p/f时,在操作s1003中,存储设备120可以将错误信息eri发送给主机110。尽管在附图中未示出,但是主机110可以基于错误信息eri来执行坏块管理操作。

之后,在操作s1110中,主机110和存储设备120可以通电并可以执行初始化操作。在示例实施例中,在初始化操作期间,可以将上述aer从主机110提供给存储设备120。

在操作s1120中,存储设备120可以执行数据恢复操作。例如,基于先前的断电种类(即,npo或spo)、是否发生了编程失败p/f、或者发生编程失败p/f的时间,存储器设备120可以遵循参考图1至图13b描述的实施例中的一个实施例来进行操作。

在示例实施例中,当在操作s1030中发生编程失败p/f时,存储设备120可以将错误信息eri发送给主机110。尽管在附图中未示出,但是主机110可以基于错误信息eri来执行坏块管理操作。

在示例实施例中,因为根据操作的方式或根据实施例而选择性地执行发送错误信息eri的操作s1001、操作s1003和操作s1004,或者因为没有指定执行操作s1001、操作s1003和操作s1004的时间,所以用虚线表示操作s1001、操作s1003和操作s1004。可以根据上述实施例来选择性地执行发送错误信息eri的操作s1001、操作s1003和操作s1004,并且参考上述实施例分别描述了发送错误信息eri的时间。因此,将省略附加的描述以避免冗余。

在操作s1130中,主机110可以响应于错误信息eri将读取请求发送给存储设备120。在示例实施例中,读取请求可以是用于读取要存储在处于编程失败(p/f)状态的存储器块(即,坏块)中的用户数据(即,p/f数据)的读取请求。备选地,读取请求可以是用于读取其中包括了p/f数据的条带的数据(不包括p/f数据)和奇偶校验数据的读取请求。

在操作s1140中,存储设备120可以确定在缓冲存储器122中是否存在与接收到的读取请求相对应的数据(即,是否发生了高速缓存命中)。例如,当存储设备120根据将p/f数据加载到缓冲存储器122上的实施例来进行操作时,与读取请求相对应的数据(即,p/f数据)可以存在于缓冲存储器122中。

在这种情况下(即,在发生了高速缓存命中的情况下),存储设备120可以将存储在缓冲存储器122中的对应用户数据(即,p/f数据)发送给主机110。

相反,当存储设备120根据p/f数据被提供为raid引擎121d的输入的实施例来进行操作时,与读取请求相对应的数据(即,p/f数据)可能不存于缓冲存储器122中。

在这种情况下(即,在产生高速缓存未命中的情况下),存储设备120可以向主机110提供奇偶校验数据和剩余的数据,其与包括了p/f数据的条带相对应。

在操作s1160中,主机110可以基于在操作s1150中接收到的数据和奇偶校验数据来恢复p/f数据。

之后,在操作s1180中,主机110可以将确认命令发送给存储设备120。在示例实施例中,响应于确认命令,存储设备120可以释放存储了p/f数据的缓冲存储器122。

在示例实施例中,确认命令可以包括获取日志页(getlogpage)命令、供应商命令或各种命令的组合。

图15是示出了向其应用根据示例实施例的存储设备的服务器系统。参考图15,服务器系统1000可以包括主机系统1100和多个开放通道ssdoc-ssd。在示例实施例中,服务器系统1000可以包括服务器、工作站或数据中心。

主机系统1100可以包括多个主机ftl1111至111n、存储管理器1120和多个设备驱动器1131至113m。多个主机ftl1111至111n可以被配置为分别管理多个开放通道ssdoc-ssd的物理存储空间。例如,多个主机ftl1111至111n中的每个主机ftl可以包括映射表、坏块管理器、i/o调度器、损耗均衡管理器、垃圾收集管理器等。存储管理器1120可以被配置为管理多个开放通道ssdoc-ssd的网络。多个设备驱动器1131至113m中的每个设备驱动器可以被配置为执行数据转换以与对应开放通道ssd0c-ssd通信。

多个开放通道ssdoc-ssd中的每个开放通道ssdoc-ssd可以直接与主机系统1100连接,或者可以通过网络结构与主机系统1100连接。多个开放通道ssdoc-ssd中的每个开放通道ssdoc-ssd可以在主机系统1100的控制下操作。例如,多个开放通道ssdoc-ssd中的每个开放通道ssdoc-ssd可以从主机系统1100接收指示与存储空间相关联的直接位置的物理地址,并且可以针对与接收到的物理地址相对应的存储空间执行操作。

在示例实施例中,多个开放通道ssdoc-ssd中的每个开放通道ssdoc-ssd可以根据参考图1至图14描述的实施例中的一个实施例来操作,或者可以根据其组合来操作。也就是说,当在特定条件(例如,断电)下发生编程失败p/f时,多个开放通道ssdoc-ssd中的每个开放通道ssdoc-ssd可以根据参考图1至图14描述的实施例中的一个实施例或其组合来进行操作,从而确保用户数据的可靠性。

根据本发明构思的示例实施例,可以在由驱动主机闪存转换层的主机来控制的存储设备中改善用户数据的可靠性。因此,提供了具有改善的可靠性的开放通道存储设备的操作方法。

尽管参考具体示例和附图进行了描述,但是本领域普通技术人员可以根据描述对示例实施例进行各种修改、添加和替代。例如,描述的技术可以以与描述的方法的顺序不同的顺序来执行,和/或诸如描述的系统、架构、设备、电路等的组件可以被连接或组合为与描述的方法不同,或者可以由其他组件或等效替换来适当地实现结果。

尽管已参考本发明构思的示例实施例描述了本发明构思,但是对于本领域普通技术人员显而易见的是,在不脱离所附权利要求中所阐述的本发明构思的精神和范围的情况下,可以对本发明构思进行各种改变和修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1