首页> 中国专利> 用于在传统SSD和开放沟道SSD之间切换而没有数据丢失的方法

用于在传统SSD和开放沟道SSD之间切换而没有数据丢失的方法

摘要

本发明提供了用于在传统SSD模式和开放沟道SSD(OCSSD)模式之间切换固态设备(SSD)的装置和技术。在一个方面,一组命令被定义用于在所述主机和所述SSD之间传送来自闪存转换层(FTL)的不同类型的数据。所述命令可包括以标准化格式承载不同类型的FTL数据的不同预定位组。可使用接口规范中保留的数据字来传输所述命令,所述接口规范将所述主机交接到所述SSD。所述命令可包括用于转移逻辑到物理地址表、有效性位图和损耗表的命令。切换模式命令可包括指示所述模式将从传统SSD切换到OCSSD还是从OCSSD切换到传统SSD的位。

著录项

  • 公开/公告号CN113168291A

    专利类型发明专利

  • 公开/公告日2021-07-23

    原文格式PDF

  • 申请/专利权人 西部数据技术公司;

    申请/专利号CN201980079334.3

  • 申请日2019-12-17

  • 分类号G06F3/06(20060101);G06F12/02(20060101);

  • 代理机构11205 北京同立钧成知识产权代理有限公司;

  • 代理人杨贝贝;臧建明

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 11:55:48

说明书

背景技术

本技术涉及存储装置和存储器设备的操作。

半导体存储器设备已经变得越来越普遍用于各种电子设备。例如,非易失性半导体存储器用于蜂窝电话、数字相机、个人数字助理、移动计算设备、非移动计算设备以及其他设备。

电荷存储材料(诸如浮栅)或电荷俘获材料可以用于此类存储器设备中以存储表示数据状态的电荷。电荷俘获材料可以被竖直布置在三维(3D)堆叠的存储器结构中,或者被水平布置在二维(2D)存储器结构中。3D存储器结构的一个示例是位成本可扩展(BiCS)体系结构,该体系结构包括交替的导电层和介电层的堆叠。

存储器设备包括存储器单元,这些存储器单元可被串联布置成NAND串(例如,NAND链),例如,其中选择栅极晶体管设置在NAND串的末端以选择性地将NAND串的沟道连接到源极线或位线。然而,在操作此类存储器设备时存在各种挑战。

附图说明

图1是示例性存储设备的框图。

图2是图1的示例性存储设备100的框图,描绘了控制器122的附加细节。

图3是存储器设备300的透视图,该存储器设备包括图1的存储器结构126的示例性3D配置中的一组块。

图4描绘了示例性晶体管420。

图5描绘了与图3一致的块BLK0中的NAND串的示例性视图。

图6A描绘了存储器单元的示例性Vth分布,其中在MLC编程的示例中使用了八个数据状态。

图6B描绘了存储器单元的示例性Vth分布,其中在SLC编程中使用了两个数据状态。

图7描绘了在OCSSD模式中与并行单元(PU)组中的存储器单元块通信的图1的控制器122的示例性布置。

图8描绘了与图7一致的示例性逻辑块地址空间。

图9描绘了图1的控制器122和主机140的示例性过程。

图10A描绘了图9的主机文件系统表900的示例。

图10B描绘了图9的L2P表910的示例。

图10C描绘了图9的有效性位图911的示例。

图10D描绘了图9的损耗表912的示例。

图11A描绘了在用于将SSD的模式从传统SSD切换到开放沟道SSD(OCSSD)的过程中的主机与SSD之间的命令的通信。

图11B描绘了在用于将SSD的模式从开放沟道SSD(OCSSD)切换到传统SSD的过程中的主机与SSD之间的命令的通信。

图12A描绘了与图11的第一命令一致的用于切换SSD的模式的示例性命令。

图12B描绘了与图11的第二命令一致的用于同步L2P表的示例性命令。

图12C描绘了与图11的第三命令一致的用于同步有效性位图的示例性命令。

图12D描绘了与图11的第四命令一致的用于同步损耗表的示例性命令。

图13A描绘了在主机处的用于将SSD从传统SSD转变到OCSSD的示例性过程。

图13B描绘了SSD处的作为图13A的过程的对应物的示例性过程。

图13C描绘了在主机处的用于将SSD从OCSSD转变到传统SSD的示例性过程。

图13D描绘了SSD处的作为图13C的过程的对应物的示例性过程。

图14A描绘了与图13A至图13D一致的FTL数据在主机和SSD之间的转移。

图14B描绘了FTL数据在主机和另一个应用程序之间的转移。

图15描绘了在SSD和OCSSD模式中使用的存储器单元阵列的不同部分。

具体实施方式

本发明提供了用于在传统SSD模式和开放沟道SSD模式之间切换固态设备(SSD)的装置和技术。

在存储器设备中,存储器单元可被布置成块,诸如图3所描绘。存储器单元可例如在NAND串中彼此接合,诸如图5所描绘。此外,存储器单元可被布置成2D或3D结构。在3D存储器结构中,存储器单元可被布置以叠堆的垂直NAND串,其中该叠堆包括交替的导电层和介电层。导电层用作连接到存储器单元的字线。每个NAND串可具有与字线相交以形成存储器单元的柱的形状。在2D存储器结构中,存储器单元可布置在基板上的水平NAND串中。

块中的存储器单元可经受编程、读取和擦除操作。编程操作可包括一组或多组增加编程电压或脉冲,其在相应的编程循环或编程-验证迭代中被施加到字线。可在每个编程电压之后执行验证测试以确定存储器单元是否已完成编程。当完成对存储器单元的编程时,可将该存储器单元锁定以免进一步编程,同时在后续的编程循环中继续对其他存储器单元进行编程。

每个存储器单元可根据程序命令中的写入数据与数据状态相关联。基于该存储器单元的数据状态,存储器单元将保持在擦除(Er)状态或被编程为编程数据状态。例如,在每单元一位的块(也被称为SLC(单级单元)块)中,存在两种数据状态,包括擦除状态和编程状态,如图6B所描绘。在每单元两位的块中,存在四种数据状态,包括擦除状态和三种编程数据状态,该三种编程数据状态被称为A数据状态、B数据状态和C数据状态。在每单元三位的块中,存在八种数据状态,包括擦除状态和七种编程数据状态,该七种编程数据状态被称为A数据状态、B数据状态、C数据状态、D数据状态、E数据状态、F数据状态和G数据状态(如图6A所描绘)。在每单元四位的块中,存在十六种数据状态,包括擦除状态SO和十五种编程数据状态S1-S15。每个数据状态可以由存储器单元中的一系列阈值电压(Vth)表示。每单元具有两位或更多个位的块被称为MLC(多级单元)块。

在对存储器单元进行编程之后,可以在读取操作中读回数据。读取操作可以涉及将一系列读取电压施加到字线,同时感测电路确定连接到字线的单元是处于导电状态(打开)还是非导电状态(关闭)。如果单元处于非导电状态,则存储器单元的Vth超过读取电压。该读取电压被设定为处于预期在相邻数据状态的阈值电压电平之间的电平。此外,在读取操作期间,未选定字线的电压斜升到读取通过电平或导通电平,该读取通过电平或导通电平足够高以至将未选定存储器单元置于强导电状态以避免干扰选定存储器单元的感测。正被编程或读取的字线被称为选定字线WLn。

此外,存储器单元可布置在存储设备诸如固态设备(SSD)中。SSD通常被配置为使用被称为闪存转换层(FTL)的机制来实现用于布置和管理存储器单元块的过程。FTL可由例如控制器中的固件来实现。FTL可用于诸如以下的过程:利用损耗均衡来管理到后端NAND设备的写入、保持逻辑到物理(L2P)映射表,以及向主机提供逻辑块编号接口。在传统SSD中,SSD实现并控制FTL。

然而,可通过在主机而不是SSD处实现或控制FTL过程中的一些过程来实现各种优点。在这种情况下,SSD被称为开放沟道SSD(OCSSD)。例如,主机可管理NAND存储器单元的L2P表和损耗均衡。在这种情况下,SSD负责诸如向和从存储器单元的低电平转移,以及提供到主机的物理页编号接口的过程。

SSD通常在制造时被配置为传统SSD或OCSSD,使得功能从传统SSD到OCSSD或从OCSSD到传统SSD的后续变化导致数据的丢失。具体地讲,SSD一旦切换其角色就必须完全重新格式化,因为由主机(在OCSSD的情况下)或由SSD(在传统SSF的情况下)管理的FTL元数据可能不兼容。FTL元数据在SSD和主机之间不兼容的原因在于,通常已经独立于SSD的FTL元数据的数据结构开发了主机的FTL元数据的数据结构。主机和SSD设计者基于其相应的资源和操作环境开发其数据结构。例如,与SSD相比,主机的数据结构可利用主机处通常更大的硬件资源。

FTL数据结构的格式可通过许多变量来表征。一个可能变量是数据是压缩的还是未压缩的和使用的压缩的类型,如果适用的话。另一个可能变量是字符编码的类型,例如,ASCII、Unicode或UTF-8。

另一个可能变量是存储格式的类型,诸如XML、CSV或TSV。可扩展标记语言(XML)是定义用于以人类可读且机器可读的格式对文档进行编码的一组规则的标记语言。逗号分隔值(CSV)文件是使用逗号来分隔值的界定文本文件。CSV文件以纯文本存储表格数据(数字和文本)。文件的每一行是数据记录并且每个记录包括由逗号分隔的一个或多个字段。表格分隔值(TSV)文件是用于将数据存储在表格结构中的文本格式。表中的每个记录是文本文件的一行。记录的每个字段值通过制表符与下一个字段值分隔。CSV和TSV格式是定界符分隔格式的示例。

另一个可能变量是纠错码的类型。另一个可能变量是分配给每个数据值的位数或字节数。另一个可能变量为使用其中数据的最高有效字节被放置在具有最低地址的字节处的大端字节顺序,还是使用其中数据的最低有效字节被放置在具有最低地址的字节处的小端字节顺序来存储数据。

本文提供的技术解决了上述及其他问题。在一种方法中,提供了用于将SSD从传统SSD转变到OCSSD的技术,在传统SSD中SSD的控制电路为存储器单元的多个块管理闪存转换层过程,在OCSSD中主机管理闪存转换层过程中的至少一些。在另一种方法中,提供了用于将SSD从OCSSD转变到传统SSD的技术。一组命令被定义用于在主机和SSD之间传送不同类型的FTL数据。命令可包括承载不同类型的信息的不同预定位组。可使用接口规范(诸如开放沟道固态驱动器规范)中保留的数据字来传输命令,该接口规范将主机交接到固态设备。无论主机和SSD中使用不同的数据结构,本文所述的技术都允许以标准的、可理解的格式在主机和SSD之间传送FTL数据,由此提供兼容性。

例如,用于转移逻辑到物理地址表的命令可包括逻辑到物理地址表的分散收集列表条目、最大逻辑块地址、逻辑到物理地址表的大小,以及指示逻辑到物理地址表是否将复制到主机或SSD的位。用于转移有效性位图的命令可包括有效性位图的分散收集列表条目、有效性位图的大小,以及指示有效性位图是否将复制到主机或SSD的位。用于转移损耗表的命令可包括识别损耗表的分散收集列表条目的位、指示损耗表的大小的位,以及指示损耗表是否将复制到主机的位。切换模式命令可包括指示所述模式将从传统SSD切换到OCSSD还是从OCSSD切换到传统SSD的位。

在示例性应用中,这些技术可在数据中心处使用,该数据中心具有以多个OCSSD的形式附接的拍字节的存储装置。出于维护目的,一些OCSSD可能必须置于离线或移动到具有不同全局FTL的不同服务器。本文提供的技术允许在不丢失数据的情况下这样做。其提供将OCSSD从一个服务器移动到另一个服务器而没有数据丢失的灵活性,并且移除对特定服务器的依赖性。此外,由于想鸥汀SSD可在两种模式下使用,因此其提供从多个用例中进行选择的灵活性。根据要运行的应用程序的类型,主机可决定需要多少I/O命令延迟确定,并且然后将多组SSD配置为OCSSD或传统SSD。

该模式转变机制也可在闪存存储器阵列处使用。取决于应用程序的延迟要求,主机可使用部分地作为OCSSD(其中主机保持FTL数据)并且部分地作为传统闪存阵列(其中阵列保持FTL数据)的阵列。主机可基于延迟要求和在运行时期间可用的L2P存储来改变分配给每个运行时的存储,而没有数据丢失。

这些和其他特征将在下文进一步讨论。

图1是示例性存储设备的框图。存储器设备100,诸如非易失性存储系统,可包括一个或多个存储器管芯108。存储器管芯108或芯片包括存储器单元的存储器结构126,诸如存储器单元的阵列、控制电路110和读/写电路128。存储器结构126能够经由行解码器124通过字线寻址,并且能够经由列解码器132通过位线寻址。读/写电路128包括多个感测块51、52、…、53(感测电路)并允许并行读取或编程存储器单元的页。通常,控制器122包括在与一个或多个存储器管芯108相同的存储器设备100(例如,可移动存储卡)中。控制器可与存储器管芯分开。命令和数据经由数据总线120在主机140和控制器122之间传输,并且经由线118在控制器和一个或多个存储器管芯108之间传输。

存储器结构可以为2D存储器结构或3D存储器结构。存储器结构可包括一个或多个存储器单元阵列,该一个或多个存储器单元阵列包括3D阵列。存储器结构可包括单体3D存储器结构,其中多个存储器级形成在单个基板(诸如晶圆)上方(而不是在其中),没有中间基板。存储器结构可包括任何类型的非易失性存储器,该非易失性存储器在具有设置在硅基板上方的有源区域的存储器单元阵列的一个或多个物理级中单片地形成。存储器结构可在非易失性存储器设备中,该非易失性存储器设备具有与存储器单元的操作相关联的电路,无论相关联的电路是在基板上方还是在基板内。

控制电路110与读/写电路128协作以在存储器结构126上执行存储器操作,并且包括状态机、片上地址解码器114和功率控制模块115(功率控制电路)。可提供存储区113,例如,用于操作参数和软件/代码。在一个实施方案中,状态机由软件编程。在其他实施方案中,状态机不使用软件并且完全以硬件(例如,电气电路)实现。

片上地址解码器114提供主机或存储器控制器所使用的硬件地址与解码器124和132所使用的硬件地址之间的地址接口。功率控制模块115控制在存储器操作期间提供给字线、选择栅极线、位线和源极线的功率和电压。该功率控制模块可包括用于字线、SGS和SGD晶体管和源极线的驱动器。在一种方法中,感测块可包括位线驱动器。

在一些具体实施中,可组合部件中的一些部件。在各种设计中,除存储器结构126之外的部件中的一个或多个部件(单独或组合)可被认为是至少一个控制电路,该至少一个控制电路被配置为执行本文所述的技术,包括本文所述的过程的步骤。例如,控制电路可包括控制电路110、状态机112、解码器114和132、功率控制模块115、感测块51、52、…、53、读/写电路128、控制器122等中的任何一者或者其组合。

片外控制器122(在一个实施方案中是电路)可包括处理器122e、存储器诸如ROM122a和RAM 122b以及纠错码(ECC)引擎245。ECC引擎可以纠正许多读取错误。例如,RAM122b可为DRAM。从主机接收待编程数据的副本并将其暂时存储在RAM中,直到编程成功完成才到存储器设备中的块。RAM可存储一个或多条字线的数据。

还可以提供存储器接口122d。与ROM、RAM和处理器通信的存储器接口是提供控制器与存储器管芯之间的电接口的电路。例如,存储器接口可以改变信号的格式或定时、提供缓冲区、隔离电涌,锁存I/O等。处理器可以经由存储器接口122d向控制电路110(或存储器管芯的任何其他部件)发出命令。

控制器122中的存储器诸如ROM 122a和RAM 122b包括代码诸如一组指令,并且处理器可操作为执行该组指令以提供本文所述的功能。另选地或除此之外,处理器可从存储器结构的子组126a访问代码,诸如一个或多条字线中的存储器单元的保留区域。

例如,控制器可使用代码来访问存储器结构,诸如用于编程操作、读取操作和擦除操作。代码可包括引导代码和控制代码(例如,一组指令)。引导代码是在引导或启动过程中初始化控制器并使控制器能够访问存储器结构的软件。控制器可使用代码来控制一个或多个存储器结构。在上电时,处理器122e从ROM 122a或存储器结构的子组126a取出引导代码以供执行,并且引导代码初始化系统部件并将控制代码加载到RAM 122b中。一旦控制代码被加载到RAM中,便由处理器执行。控制代码包括执行基本任务的驱动器,基本任务为诸如控制和分配存储器、对指令的处理区分优先次序,以及控制输入和输出端口。

一般来讲,控制代码可包括用于执行本文所述功能的指令,包括下文进一步讨论的流程图的步骤。控制电路可以被配置为执行用于执行本文所述的功能的指令。

主机140可包括用于执行本文所述的功能的处理器141和存储器142。

在一个实施方案中,主机是计算设备(例如,膝上型计算机、台式计算机、智能电话、平板电脑、数字相机),其包括一个或多个处理器、一个或多个处理器可读存储器设备(RAM、ROM、闪存存储器、硬盘驱动器、固态存储器),该一个或多个处理器可读存储器设备存储用于对一个或多个处理器进行编程以执行本文所述方法的处理器可读代码(例如,软件)。主机还可包括附加系统存储器、一个或多个输入/输出接口和/或与一个或多个处理器通信的一个或多个输入/输出设备。

除NAND闪存存储器之外,还可以使用其他类型的非易失性存储器。

半导体存储器设备包括易失性存储器设备,诸如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)设备,非易失性存储器设备,诸如电阻式随机存取存储器(ReRAM)、电可擦除可编程只读存储器(EEPROM)、闪存存储器(也可以被认为是EEPROM的子集)、铁电随机存取存储器(FRAM)和磁阻随机存取存储器(MRAM),以及能够存储信息的其他半导体元件。每种类型的存储器设备可具有不同的配置。例如,闪存存储器设备可以NAND配置或NOR配置进行配置。

该存储器设备可由无源元件和/或有源元件以任何组合形成。以非限制性示例的方式,无源半导体存储器元件包括ReRAM设备元件,在一些实施方案中,ReRAM设备元件包括电阻率切换存储元件,诸如反熔丝或相变材料,以及可选的转向元件,诸如二极管或晶体管。此外,以非限制性示例的方式,有源半导体存储器元件包括EEPROM和闪存存储器设备元件,在一些实施方案中,该闪存存储器设备元件包括包含电荷存储区的元件,诸如浮栅、导电性纳米颗粒或电荷存储介电材料。

多个存储器元件可被配置为使得它们串联连接或者使得每个元件可被单独访问。以非限制性示例的方式,NAND配置中的闪存存储器设备(NAND存储器)通常包含串联连接的存储器元件。NAND串是包括存储器单元和SG晶体管的一组串联连接的晶体管的示例。

NAND存储器阵列可被配置为使得该阵列由存储器的多个串构成,其中串由共享单个位线并作为组被访问的多个存储器元件构成。另选地,可配置存储器元件,使得每个元件可被单独访问,例如NOR存储器阵列。NAND存储器配置和NOR存储器配置为示例,并且可以其他方式配置存储器元件。

位于基板之内以及/或者之上的半导体存储器元件可被布置成二维或三维,诸如2D存储器结构或3D存储器结构。

在2D存储器结构中,半导体存储器元件被布置在单个平面或单个存储器设备级中。通常,在2D存储器结构中,存储器元件被布置在平面中(例如,在x-y方向平面中),该平面基本上平行于支承存储器元件的基板的主表面延伸。基板可以是存储器元件的层在其之上或之中形成的晶圆,或者其可以是在存储器元件形成后附接到其的承载基板。作为非限制性示例,基板可包括半导体,诸如硅。

存储器元件可被布置在处于有序阵列中(诸如在多个行和/或列中)的单个存储器设备级中。然而,存储器元件可以非常规配置或非正交配置排列。存储器元件可各自具有两个或更多个电极或接触线,诸如位线和字线。

布置3D存储器阵列,使得存储器元件占据多个平面或多个存储器设备级,从而形成三维结构(即,在x、y和z方向上,其中z方向基本上垂直于基板的主表面,并且x和y方向基本上平行于基板的主表面)。

作为非限制性示例,3D存储器结构可被垂直地布置为多个2D存储器设备级的堆叠。作为另一个非限制性示例,3D存储器阵列可被布置为多个垂直的列(例如,基本上垂直于基板的主表面即在y方向上延伸的列),其中每列具有多个存储器元件。这些列可以例如在x-y平面中以2D配置布置,从而导致存储器元件的3D布置,其中元件位于多个垂直堆叠的存储器平面上。三维存储器元件的其他配置也可以构成3D存储器阵列。

以非限制性示例的方式,在3D NAND存储器阵列中,存储器元件可耦合在一起以在单个水平(例如,x-y)存储器设备级内形成NAND串。另选地,存储器元件可耦接在一起以形成横贯多个水平存储器设备级的垂直NAND串。可以设想其他3D配置,其中一些NAND串包含单个存储器级中的存储器元件,而其他串则包含跨越多个存储器级的存储器元件。3D存储器阵列还可以被设计为处于NOR配置和处于ReRAM配置。

通常,在单体3D存储器阵列中,在单个基板上方形成一个或多个存储器设备级。可选地,单体3D存储器阵列还可以具有至少部分地位于单个基板内的一个或多个存储器层。作为非限制性示例,基板可包括半导体,诸如硅。在单体3D阵列中,构成阵列的每个存储器设备级的层通常形成在阵列的下层存储器设备级的层上。然而,单体3D存储器阵列的相邻存储器设备级的层可以在存储器设备级之间共享或者在存储器设备级之间具有中间层。

2D阵列可以单独形成,并且然后封装在一起以形成具有多层存储器的非单体存储器设备。例如,非单片的堆叠存储器可通过在单独的基板上形成存储器级并且然后将存储器级堆叠在彼此之上而构造。在堆叠之前可以将基板减薄或从存储器设备级移除,但由于存储器设备级最初形成在单独的基板之上,因此所得的存储器阵列不是单体3D存储器阵列。此外,多个2D存储器阵列或3D存储器阵列(单体或非单体)可以形成在单独的芯片上,并且然后封装在一起以形成堆叠芯片存储器设备。

通常需要相关联的电路来操作存储器元件并与存储器元件通信。作为非限制性示例,存储器设备可具有用于控制并驱动存储器元件以实现诸如编程和读取的功能的电路。该相关联的电路可与存储器元件位于同一基板上和/或位于单独的基板上。例如,用于存储器读取-写入操作的控制器可定位在单独的控制器芯片上和/或定位在与存储器元件相同的基板上。

本领域的技术人员将认识到,该技术不限于所描述的2D示例性结构和3D示例性结构,而是涵盖如本文所述并且如本领域的技术人员所理解的技术的实质和范围内的所有相关存储器结构。

图2是图1的示例性存储设备100(存储器设备)的框图,描绘了控制器122的附加细节。如本文所用,闪存存储器控制器是管理存储在闪存存储器上的数据并且与主机诸如计算机或电子设备通信的设备。除了本文描述的特定功能外,闪存存储器控制器可以具有各种功能。例如,闪存存储器控制器可以格式化闪存存储器以确保存储器正常运行、映射出坏的闪存存储器单元,并分配备用存储器单元以替换日后的故障单元。备用单元中的部分备用单元可以用来容纳固件以操作闪存存储器控制器并实现其他特征。在操作中,当主机需要从闪存存储器读取数据或向闪存存储器写入数据时,它将与闪存存储器控制器通信。如果主机提供要读取/写入数据的逻辑地址,则闪存存储器控制器可以将从主机接收的逻辑地址转换为闪存存储器中的物理地址。另选地,主机可提供物理地址。闪存存储器控制器还可执行各种存储器管理功能,诸如但不限于损耗均衡(分配写入以避免损耗否则将被重复写入的特定存储器块)和垃圾收集(在块已满之后,仅将有效的数据页面移动到新块,因此可以擦除并且重用完整块)。

控制器122与非易失性存储器管芯108之间的接口可以是任何合适的闪存接口。在一个实施方案中,存储设备100可为基于卡的系统,诸如安全数字卡(SD)或微型安全数字(微型SD)卡。在另选的实施方案中,存储器系统可为嵌入式存储器系统的一部分。例如,闪存存储器可以嵌入主机内,诸如以安装在个人计算机中的固态盘(SSD)驱动的形式。

在一些实施方案中,存储设备100包括控制器122与非易失性存储器管芯108之间的单个沟道,本文所述的主题不限于具有单个存储器沟道。

控制器122包括与主机交互的前端模块208、与一个或多个非易失性存储器管芯108交互的后端模块210、以及执行现在将详细描述的功能的各种其他模块。

该控制器的部件可采用例如设计用于与其他部件一起使用的封装功能硬件单元(例如,电路)、可由通常执行相关功能的特定功能的处理器(例如,微处理器)或处理电路执行的程序代码(例如,软件或固件)的一部分、或者与较大系统交互的独立硬件或软件部件的形式。例如,每个模块可包括专用集成电路(ASIC),现场可编程门阵列(FPGA),电路,数字逻辑电路,模拟电路,离散电路、门或任何其他类型的硬件的组合,或者其组合。另选地或除此之外,每个模块可包括存储在处理器可读设备(例如,存储器)中的软件,以对处理器进行编程,从而使控制器执行本文所述的功能。图2中示出的架构是可以(或可以不)使用图1中示出的控制器122的部件(例如RAM、ROM、处理器、接口)的一个示例具体实施。

控制器122可以包括修复电路212,其用于修复存储器单元或存储器块。该修复可以包括刷新其当前位置的数据或者将数据重新编程为新的字线或块作为执行不稳定字线维护的一部分,如下所述。

再次参考控制器122的模块,缓冲区管理器/总线控制器214管理随机存取存储器(RAM)216中的缓冲区,并且控制控制器122的内部总线仲裁。RAM可包括DRAM和/或SRAM。DRAM或动态随机存取存储器是一种半导体存储器的形式,其中该存储器以电荷的形式存储。DRAM中的每个存储器单元由晶体管和电容器制成。数据存储在电容器中。电容器由于泄漏而释放电荷,因此DRAM是易失性设备。要将数据保存在存储器中,必须定期刷新设备。相比之下,只要供电,SRAM或静态随机存取存储器就会保留一个值。

只读存储器(ROM)218存储系统引导代码。尽管图2所示为与控制器分开定位,但在其他实施方案中,RAM 216和ROM 218中的一者或两者可以位于控制器内。在又其他实施方案中,RAM和ROM的部分可位于控制器122内和控制器外部。此外,在一些具体实施中,控制器122、RAM216和ROM 218可位于分离的半导体管芯上。

前端模块208包括主机接口220和提供与主机或下一级存储控制器的电接口的物理层接口(PHY)222。可以取决于所使用的存储器的类型来选择主机接口220的类型。主机接口220的示例包括但不限于SATA、SATA Express、SAS、光纤通道、USB、PCIe以及NVMe。主机接口220通常便于数据、控制信号和定时信号的传送。

后端模块210包括纠错控制器(ECC)引擎224,该ECC引擎对从主机接收的数据字节进行编码,并且对从非易失性存储器读取的数据字节进行解码和纠错。命令定序器226生成命令序列,诸如编程命令序列和擦除命令序列,以传输到非易失性存储器管芯108。RAID(独立管芯的冗余阵列)模块228管理RAID奇偶校验的生成和故障数据的恢复。RAID奇偶校验可用作写入存储设备100中的数据的附加级的完整性保护。在一些情况下,RAID模块228可以是ECC引擎224的一部分。需注意,RAID奇偶校验可以作为额外的一个或多个管芯添加,如公共名称所暗示的那样,但也可以在现有的管芯内添加,例如,作为额外的平面、额外的块或块内的额外字线。存储器接口230将命令序列提供给非易失性存储器管芯108,并从该非易失性存储器管芯接收状态信息。闪存控制层232控制后端模块210的整体操作。

存储设备100的附加部件包括闪存转换层(FTL)238,该闪存转换层执行对非易失性存储器管芯108的存储器单元的过程(诸如损耗均衡)。存储器系统还包括其他分立部件240,诸如外部电气接口、外部RAM、电阻器、电容器或可与控制器122进行交互的其他部件。在另选的实施方案中,物理层接口222、RAID模块228和缓冲区管理/总线控制器214中的一者或多者是控制器122中不必要的任选部件。

FTL(也称为媒体管理层(MML))可被集成为可处理闪存错误并与主机交接的闪存管理的一部分。具体地讲,FTL可以是闪存管理中的模块,并且可以负责NAND管理的内部。FTL可包括存储器设备固件中的算法,该算法将来自主机的写入转换为对管芯108的存储器结构126(例如,闪存存储器)的写入。FTL可实现下文进一步讨论的文件系统表。可能需要FTL,因为:1)闪存存储器可能具有有限的耐久性;2)该闪存存储器可以只写入多个页面;并且/或者3)除非将闪存存储器作为块擦除,否则可以不写入该闪存存储器。FTL理解闪存存储器的这些潜在限制,这些限制可能对主机不可见。因此,FTL尝试将来自主机的写入转换为到闪存存储器中的写入。可以使用FTL来识别和记录不稳定位。该不稳定位的记录可用于评估块和/或字线(字线上的存储器单元)的健康状况。

还参见图9以了解FTL和其他过程的另外细节。

控制器122可以与一个或多个存储器管芯108进行界面接触。在一个实施方案中,控制器和多个存储器管芯(一起包括存储设备100)实现固态驱动器,其可以模拟、替换或代替主机内的硬盘驱动器,作为附网存储(NAS)设备等。另外,固态驱动器不需要用作硬盘驱动器。

图3是存储器设备300的透视图,该存储器设备包括图1的存储器结构126的示例性3D配置中的一组块。在基板上的是存储器单元(存储元件)的示例性块BLK0、BLK1、BLK2和BLK3,以及具有由块使用的电路的外围区域。外围区域304沿每个块的边缘延伸,而外围区域305位于该组块的端部。该电路可以包括电压驱动器,该电压驱动器可以连接到块的控制栅极层、位线和源极线。在一种方法中,块中处于共同高度的控制栅极层被共同驱动。基板301还可以承载块下方的电路,以及一个或多个下部金属层,该一个或多个下部金属层在导电路径中被图案化以承载电路的信号。这些块形成在存储器设备的中间区域302中。在存储器设备的上部区域303中,一个或多个上部金属层在导电路径中被图案化以承载电路的信号。每个块包括存储器单元的堆叠区域,其中堆叠的交替层表示字线。在一种可能的方法中,每个块具有相对的分层侧,垂直触点从该分层侧向上延伸至上部金属层,以形成与导电路径的连接。虽然描绘了四个块作为示例,但是可以使用在x方向和/或y方向上延伸的两个或更多个块。

在一种可能的方法中,这些块在平面中,并且在x方向上的平面的长度表示到字线的信号路径在一个或多个上部金属层中延伸的方向(字线或SGD线方向),以及在y方向上的平面的宽度表示到位线的信号路径在一个或多个上部金属层中延伸的方向(位线方向)。z方向表示存储器设备的高度。这些块也可以布置在多个平面中。

图4描绘了示例性晶体管420。晶体管包括控制栅极CG、漏极D、源极S和沟道CH,并且例如可以表示存储器单元或选择栅极晶体管。晶体管的漏极端任选地经由NAND串中的一个或多个其他晶体管连接到位线BL,并且晶体管的源极端任选地经由NAND串中的一个或多个其他晶体管连接到源极线SL。

在一种方法中,存储器单元的块包括交替的控制栅极和介电层的堆叠,并且存储器单元布置在堆叠中的垂直延伸的存储器空穴中。

可沿着存储器孔的侧壁和/或在每个字线层内沉积多个层以形成存储器单元。这些层可包括阻挡氧化物层、电荷俘获层或膜(诸如氮化硅(Si3N4)或其他氮化物)、隧道层(例如,栅极氧化物)和沟道(例如,包括多晶硅)。介电核心(例如,包括二氧化硅)可填充每个存储器孔的中心核心。

虽然以上示例涉及具有垂直延伸的NAND串的3D存储器设备,但是本文提供的技术也适用于其中NAND串在基板上水平延伸的2D存储器设备。

图5描绘了与图3一致的块BLK0中的NAND串的示例性视图。NAND串以3D配置布置在块的子块中。每个子块包括多个NAND串,其中描绘了一个示例NAND串。例如,SB0、SB1、SB2和SB3分别包括示例NAND串500n、510n、520n和530n。NAND串具有数据字线、虚设字线和选择栅极线。每个子块包括一组NAND串,该组NAND串在x方向上延伸并且具有公共SGD线或控制线层。NAND串500n、510n、520n和530n分别位于子块SB0、SB1、SB2和SB3中。可以基于字线编程顺序来进行块的编程。一个选项是在对下一字线的存储器单元编程之前,对位于不同子块中的不同字线部分中的存储器单元进行编程,一次一个子块。例如,这可以涉及在SB0、SB1、SB2和SB2中对WL0编程,然后在SB0、SB 1、SB2和SB2中对WL1编程,依此类推。例如,字线编程顺序可以从WL0(源极端字线)开始,并且在WL95(漏极端字线)结束。

NAND串500n、510n、520n和530n分别具有沟道500a、510a、520a和530a。附加地,NAND串500n包括SGS晶体管501、虚设存储器单元502、数据存储器单元503-514、虚设存储器单元515和SGD晶体管516。NAND串510n包括SGS晶体管521、虚设存储器单元522、数据存储器单元523-534、虚设存储器单元535和SGD晶体管536。NAND串520n包括SGS晶体管541、虚设存储器单元542、数据存储器单元543-554、虚设存储器单元555和SGD晶体管556。NAND串530n包括SGS晶体管561、虚设存储器单元562、数据存储器单元563-574、虚设存储器单元575和SGD晶体管576。

该示例描绘了每个NAND串的漏极端处的一个SGD晶体管,以及每个NAND串的源极端处的一个SGS晶体管。在一种方法中,SBO、SB1、SB2和SB3中的SGD晶体管可以分别由单独的控制线SGD(O)、SGD(l)、SGD(2)和SGD(3)驱动。在另一种方法中,可以在NAND串中提供多个SGD和/或SGS晶体管。

图6A描绘了存储器单元的示例性Vth分布,其中在MLC编程的示例中使用了八个数据状态。在图6A和图6B中,垂直轴描绘了对数刻度上的多个存储器单元,并且水平轴描绘了线性刻度上的存储器单元的Vth。在一种方法中,在编程操作开始时,存储器单元最初都处于擦除(Er)状态,如Vth分布600所示。分配给Er状态的存储器单元在编程完成之后继续由Vth分布600表示。在编程-验证测试中,分别使用验证电压VvA-VvG会分别将分配给A-G状态的存储器单元编程到Vth分布601-607。读取电压VrA-VrG可以用于在读取操作中读取存储器单元的状态。

在擦除操作中,数据存储器单元从编程数据状态的Vth分布(例如,状态A-G)转变到擦除状态。擦除操作包括擦除阶段,其中存储器单元被偏置以进行擦除,然后进行擦除-验证测试。擦除-验证测试可以使用施加到字线的擦除-验证电压VvEr。

在该八状态示例中,Er-G状态是所分配数据状态的示例,并且A-G状态是编程数据状态的示例。数据状态的数量可以高于或低于八个数据状态。

图6B描绘了存储器单元的示例性Vth分布,其中在SLC编程中使用了两个数据状态。描绘了擦除状态Vth分布620和编程状态Vth分布621。验证电压为Vv并且读取电压为Vr。

存储器设备中的块可以被分配为SLC块或MLC块。SLC块具有较高的可靠性和耐久性,而MLC块具有较高的数据密度但具有较低的耐久性。SLC块可用作例如通常需要高可靠性的控制块,或通常需要高耐久性的随机数据块或备份块。MLC块主要用作容量块,例如,提供存储器设备的主要长期存储容量的块。

图7描绘了在OCSSD模式中与并行单元(PU)组中的存储器单元块通信的图1的控制器122的示例性布置。为了提供输入/输出隔离,分配块的独立并行单元,其中一组PU使用共享总线来转移数据。每个PU可包括存储器单元的多个块,如图8所描绘。示例性组700包括PU701-704并且示例性组710包括PU 711-714。该方法为主机提供可预测的延迟。对于不同的并行单元,输入和输出可以是同步的,并且明确地定义了对并行单元的所需访问时间。

图8描绘了与图7一致的示例性逻辑块地址空间800。描绘了组700的细节,包括PU701-704。每个PU包括多个区块并且每个区块包括多个逻辑块地址(LBA),例如,PU 701包括区块(CH)801和802。区块801继而包括LBA 810和811,并且区块802包括LBA 812和813。区块是LBA的范围,其中写入必须是顺序的,并且对应于存储器单元的一个或多个块。区块可处于以下四种状态中的一者:自由状态、开放状态、闭合状态或离线状态。如果对区块的写入失败,则区块被标记为不良。

图9描绘了图1的控制器122和主机140的示例性过程。如先前结合图2所讨论的,控制器122的FTL 238可实现用于管理存储器单元块的各种过程。例如,FTL可包括:逻辑到物理(L2P)映射表910,其将逻辑地址映射到物理地址;有效性位图911,其识别块中的有效页和无效页;损耗表912,其保持编程-擦除(P-E)循环的计数或每个物理块的其他损耗度量;以及垃圾收集过程913,其执行诸如存储器单元的页的再循环的过程。

控制器还可包括介质错误处理部件920,该介质错误处理部件包括诸如图2的ECC引擎224和RAID模块228的部件。介质保持管理部件930可用于管理存储器单元中的数据保持。

该配置用于传统SSD模式。向上箭头表示FTL过程被移动到主机以提供OCSSD模式。

图10A描绘了图9的主机文件系统表900的示例。当主机从传统SSD读取数据时,主机不知道数据存储在SSD中的何处。类似地,在编程操作中,主机不知道SSD中的将写入数据的物理位置。

相反,数据由主机使用一个或多个逻辑地址来识别,该一个或多个逻辑地址由文件系统映射到物理或虚拟位置(例如,块和块内的字线)。主机文件系统表将数据文件交叉引用到逻辑块地址(LBA)。例如,文件可被划分成扇区。文件可以是视频、图像、文字处理文档、应用程序或其他数据。

该表可将LBA交叉引用到存储器结构126中的物理或虚拟的块和页。可存在从LBA到物理地址的直接或间接映射。在间接映射的示例中,主机的LBA被交叉引用到存储器设备中的虚拟地址,并且存储器设备中的虚拟地址被交叉引用到物理地址。映射到或交叉引用到另一个地址的地址被称为指向另一地址。

该表包括文件名的列和逻辑地址的列。文件名识别不同文件及其扇区。每个扇区指向对应的逻辑地址。在该简化示例中,逻辑地址是连续数字0-8。另外,每个文件具有相同数量的扇区。在其他情况下,逻辑地址是非连续的并且不同文件可具有不同数量的扇区。文件1、扇区0-2分别与逻辑地址0-2相关联。文件2、扇区0-2分别与逻辑地址3-5相关联。文件3、扇区0-2分别与逻辑地址6-8相关联。

图10B描绘了图9的L2P表910的示例。该表包括主机的逻辑地址的列(与图10A一致),以及SSD处的对应物理地址的列。例如,与主机处的逻辑地址0-2相关联的数据分别存储在块0、页0-2处。与主机处的逻辑地址3-8相关联的数据分别存储在块1、页0-5处。因此,该表由逻辑页编号索引,并且每个条目识别逻辑页已被存储的物理页编号。

图IOC描绘了图9的有效性位图911的示例。有效性位图可包括块中的每个物理页的位。例如,位1指示物理页当前存储有效数据,并且位0指示物理页当前存储无效数据。无效数据可包括已在不同页中被新数据替换的数据。标记无效页以用于在垃圾收集过程中再循环。在该示例中,块1、页0被标记为无效,从而指示例如逻辑页被覆盖,并且剩余页是有效的。可为每个擦除块或区块数据结构提供有效性位图以识别该擦除块或区块内的有效逻辑页。

图10D描绘了图9的损耗表912的示例。第一列识别块并且第二列识别P-E循环的对应数量或其他损耗度量。例如,块0-3分别具有1200、1250、1175和1190个P-E循环。损耗表可具有分别示出块或区块的当前损耗的每个块或区块的条目。它可以是一种FTL设计中的P-E循环的数量或另一种FTL设计中的某种其他度量。

图10B至图10D的数据结构可取决于当前模式保持在主机或SSD处。

图11A描绘了在用于将SSD的模式从传统SSD切换到开放沟道SSD(OCSSD)的过程中的主机与SSD之间的命令的通信。例如,第一命令可以是将SSD的模式从传统SSD改变为OCSSD的切换模式命令。该过程涉及将FTL数据从SSD复制到主机。第二命令可以是L2P表同步命令,其致使主机从由SSD提供的一个或多个地址读取L2P表。第三命令可以是有效性位图同步命令,其致使主机从由SSD提供的一个或多个地址读取有效性位图。第四命令可以是损耗表同步命令,其致使主机从由SSD提供的一个或多个地址读取损耗表。地址识别SSD处的存储器中的主机可从其读取FTL数据的位置。

命令可以一种格式提供,其中位序列中的不同预定位或位子组用于不同类型的FTL数据。

图11B描绘了在用于将SSD的模式从开放沟道SSD(OCSSD)切换到传统SSD的过程中的主机与SSD之间的命令的通信。在一种方法中,主机发出切换SSD的模式的命令。另选地,SSD或另一个设备发出命令。例如,第一命令可以是将SSD的模式从OCSSD改变为传统SSD的切换模式命令(参见图12A)。该过程涉及将FTL数据从主机复制到SSD。第二命令可以是L2P表同步命令(参见图12B),其致使SSD从由主机提供的一个或多个地址读取L2P表。第三命令可以是有效性位图同步命令(参见图12C),其致使SSD从由主机提供的一个或多个地址读取有效性位图。第四命令可以是损耗表同步命令(参见图12D),其致使SSD从由主机提供的一个或多个地址读取损耗表。地址识别主机处的存储器中的SSD可从其读取FTL数据的位置。这些命令是示例,因为也可使用其他命令。

图12A描绘了与图11的第一命令一致的用于切换SSD的模式的示例性命令1200。可将第一位(位0)设置为0以指示从OCSSD到SSD的模式切换,或者将第一位设置为1以指示从SSD到OCSSD的模式切换。剩余位被保留用于其他目的。该示例性模式切换命令使用32位或4字节。其可例如使用2018年1月29日修订的开放沟道固态驱动器规范版本2.0(LightNVM)中的命令DWORD 10来实现。

图12B描绘了与图11的第二命令一致的用于同步L2P表的示例性命令1210。在一组连续位中,一组32位(子组1211)识别L2P表的分散收集列表(SGL)条目。SGL用于以连续方式提供数据,即使当数据存储在存储器的非连续区段中时也是如此。SGL条目存储数据存储在其中的存储器的非连续区段的相应开始地址。例如,控制器可使用SGL条目来访问作为一组连续字节的L2P表数据。

另一个位(子组1212)识别L2P表的转移方向。“1”可表示从SSD到主机的复制或同步,并且“0”可表示从主机到SSD的复制或同步。这允许相同的命令结构用于两种类型的模式切换-从传统SSD到OCSSD,以及从OCSSD到传统SSD。

一组31位(子组1213)识别诸如在图8中的地址空间中的最大逻辑块地址(LBA)。最大LBA指示FTL所允许的最大用户逻辑块数量,并且间接地设置过度供应或额外块的数量。

最后一组32位(子组1214)识别L2P表的大小。

该命令可提供存储器设备(诸如主机或SSD中的RAM)中的源地址或目的地地址,以及要复制的数据的大小。一旦主机或SSD完成L2P表或其他FTL数据的转移,其就可向其他部件(分别为SSD或主机)发送确认消息。

该示例性L2P表同步命令使用96位或12字节。其可例如使用开放沟道固态驱动器规范中的命令DWORD 10、DWORD 11和DWORD 12来实现。DWORD表示包含4字节或32位的双字。

图12C描绘了与图11的第三命令一致的用于同步有效性位图的示例性命令1220。在一组连续位中,一组32位(子组1221)识别有效性位图的SGL条目。控制器可使用SGL条目来访问作为一组连续字节的有效性位图数据。另一个位(子组1222)识别有效性位图的转移方向,并且类似于图12B的位1212。最后一组32位(子组1223)识别有效性位图的大小。可为每个块或区块提供有效性位图。

该示例性有效性位图同步命令使用64位或8字节。其可例如使用开放沟道固态驱动器规范中的命令DWORD 10和DWORD 11来实现。

图12D描绘了与图11的第四命令一致的用于同步损耗表的示例性命令1230。在一组连续位中,一组32位(子组1231)识别损耗表的SGL条目。控制器可使用SGL条目来访问作为一组连续字节的损耗表数据。另一个位(子组1232)识别损耗表的转移方向,并且类似于图12B的位1212。最后一组32位(子组1233)识别损耗表的大小。

该示例性损耗表同步命令使用64位或8字节。其可例如使用开放沟道固态驱动器规范中的命令DWORD 10和DWORD 11来实现。

图12A至图12D的命令可以是供应商唯一命令。也就是说,对于给定设备诸如主机或SSD,设备的制造商或供应商可使用与其他制造商或供应商的格式不同的格式来定义命令。在其他示例中,供应商唯一命令、控制器寄存器写入和边带信号的组合可用于指示SSD改变其模式。又如,主机可使用供应商定义的日志页写入来将L2P表同步/转移到SSD。

在一种方法中,命令识别闪存转换层过程的不同类型的数据和固态设备处的不同类型的数据的相应地址。

命令可包括一组连续位,其中该组连续位的不同预定子组被保留用于不同类型的FTL数据。例如,在图12B中,用于同步逻辑到物理地址表的命令包括一组连续位1211-1214,其中该组连续位的第一预定子组1211被保留用于分散收集列表条目,该组连续位的第二预定子组1213被保留用于最大逻辑块地址,并且该组连续位的第三预定子组1214被保留用于逻辑到物理地址表的大小。

在图12C中,用于同步有效性位图的命令包括一组连续位1221-1223,其中该组连续位的第一预定子组1221被保留用于分散收集列表条目,并且该组连续位的第二预定子组1223被保留用于有效性位图的大小。

图13A和图13B与图11A一致,并且图13C和图13D与图11B一致。

图13A描绘了在主机处的用于将SSD从传统SSD转变到OCSSD的示例性过程。在步骤1300处,主机向SSD传输切换模式命令(诸如在图12A中)以从传统SSD转变到OCSSD。在步骤1301处,主机从SSD接收命令以将FTL数据同步(同步)或复制到主机。如所讨论的,FTL的示例包括L2P表、有效性位图和损耗表。可使用诸如图12B至图12D所描绘的命令。在步骤1302处,响应于该命令,主机将对FTL数据的读取请求传输到SSD并且响应于该请求接收数据。决定步骤1303确定在模式切换过程中是否存在下一个命令。如果存在下一命令,则重复步骤1301和1302。如果不存在另外的命令,则主机在步骤1304处标记所有块以用于再循环。在步骤1305处,主机等待块进行再循环。在步骤1306处,主机向SSD传输指示转变完成的确认。在步骤1307处,主机更新配置文件以指示OCSSD模式为活动的。

图13B描绘了SSD处的作为图13A的过程的对应物的示例性过程。在步骤1310处,SSD从主机接收切换模式命令以从传统SSD转变到OCSSD。在步骤1311处,SSD向主机传输命令以将FTL数据同步到主机。在步骤1312处,结合该命令,SSD从主机接收对FTL数据的读取请求并且将所请求的数据传输到主机。决定步骤1313确定在模式切换过程中是否存在下一个命令。如果存在下一命令,则重复步骤1311和1312。如果不存在另外的命令,则在步骤1314处,SSD从主机接收指示转变完成的确认。在步骤1315处,SSD更新配置文件以将当前模式设置为OCSSD。这指示SSD的作用已从传统固态设备改变为开放沟道固态设备。

图13C描绘了在主机处的用于将SSD从OCSSD转变到传统SSD的示例性过程。在步骤1320处,主机向SSD传输切换模式命令以从OCSSD转变到传统SSD。在步骤1321处,主机准备闪存转换层(FTL)的数据以同步(例如,L2P表、每个数据区块的有效性位图和损耗表)。在步骤1322处,主机向SSD传输命令以将FTL数据同步到SSD。在步骤1323处,结合该命令,主机从SSD接收对FTL数据的读取请求,并且作为响应将数据传输到SSD。决定步骤1324确定在模式切换过程中是否存在下一个命令。如果存在下一命令,则重复步骤1322和1323。如果不存在另外的命令,则在步骤1325处,主机从SSD接收指示转变完成的确认。在步骤1326处,主机更新配置文件以指示OCSSD模式不是活动的。

图13D描绘了SSD处的作为图13C的过程的对应物的示例性过程。在步骤1330处,SSD从主机接收切换模式命令以从OCSSD转变到传统SSD。在步骤1331处,SSD从主机接收命令以将FTL数据同步到SSD。在步骤1332处,结合该命令,SSD向主机传输对FTL数据的读取请求,并且作为响应从主机接收数据。决定步骤1333确定在模式切换过程中是否存在下一个命令。如果存在下一命令,则重复步骤1331和1332。如果不存在另外的命令,则SSD在步骤1334处标记所有块以用于再循环。在步骤1335处,SSD等待块进行再循环。在步骤1336处,SSD更新配置文件以将当前模式设置为传统SSD。这指示SSD的角色已从OCSSD改变为传统SSD。在步骤1337处,SSD向主机传输指示转变完成的确认。

在块的再循环期间,SSD可服务于读取请求,但写入请求必须等待直到再循环的完成。再循环步骤确保以与SSD兼容的格式用更新的FTL元数据重写所有数据块。在再循环期间,有效性位图用于识别要从区块再循环的页。完全无效的区块被设定为空闲的并且可刚好在下一个编程之前被擦除。

一般来讲,当改变SSD处的角色时,也改变主机端处的角色。主机可从不具有FTL数据变为具有FTL数据中的一些或全部。

图14A描绘了与图13A至图13D一致的FTL数据在主机和SSD之间的转移。在本文所述的技术中,FTL数据(也称为数据结构或元数据)能够以主机和SSD两者可识别的标准格式在主机和SSD之间转移。该图描绘了不同块中的主机FTL格式、标准FTL格式和SSD FTL格式。块之间的箭头表示模式切换期间的FTL数据的转移。主机自由地以与SSD存储FTL数据的格式不同的特定格式存储FTL数据。

先前讨论了FTL数据格式变量的示例。在一个示例中,主机以压缩格式存储FTL数据,并且标准FTL格式用于未压缩数据。在这种情况下,主机对FTL数据进行解压并将其作为未压缩FTL数据以标准FTL格式提供给SSD。当SSD接收并存储FTL数据时,SSD能够以接收FTL数据的未压缩格式存储FTL数据或者压缩FTL数据并使用其自身的压缩格式来存储FTL数据,该压缩格式可与主机的压缩格式相同或不同。

在另一个示例中,主机使用第一压缩格式来存储FTL数据,并且标准FTL格式用于第二压缩格式。在这种情况下,主机将FTL数据从第一压缩格式转换为第二压缩格式并且将其以第二压缩格式提供给SSD。当SSD接收并存储FTL数据时,SSD能够以接收FTL数据的第二压缩格式存储FTL数据或者压缩FTL数据并使用其自身的压缩格式来存储FTL数据,该压缩格式可与主机的第一压缩格式相同或不同。

在另一个示例中,主机使用大端字节顺序来存储FTL数据,并且标准FTL格式用于小端字节顺序。在这种情况下,在FTL数据被提供给SSD之前,主机将FTL数据从大端字节顺序转换为小端字节顺序。当SSD接收并存储FTL数据时,SSD能够以接收FTL数据的小端字节顺序来存储FTL数据或者使用大端字节顺序来存储FTL数据。

类似示例可应用于FTL数据从SSD到主机的转移。许多其他示例也是可能的。

FTL数据的转移可使用例如与NVM Express(TM)接口兼容的命令。该接口允许主机软件与非易失性存储器子系统进行通信。该接口针对企业和客户固态驱动器进行优化,该驱动器通常作为寄存器级接口附接到PCI Express接口。

一旦转移FTL元数据,其可用于执行全驱动再循环以便以兼容格式恢复块。这样,实现了模式开关而没有数据丢失。此外,不需要获得FTL数据的外部备份,这有时是不可行的。

图14B描绘了FTL数据在主机和另一个应用程序之间的转移。除主机处当前用于执行OCSSD模式的功能的应用程序之外的应用程序可在与SSD交互时开始执行OCSSD模式的功能。例如,主机可以是初始执行OCSSD模式的功能的服务器。随后,可在与主机相同的服务器处或在另一个服务器或计算设备处的另一个应用程序接管OCSSD模式的功能。在一种方法中,主机可使用标准FTL格式将FTL数据转移到另一应用程序。这允许另一应用程序以标准格式接收FTL数据并转换其用于以自身格式使用。

在另一种方法中,如果主机知道另一应用程序使用相同的格式,则主机可使用与主机使用的格式相同的格式将FTL数据转移到其他应用程序。图15描绘了在SSD和OCSSD模式中使用的存储器单元阵列的不同部分。如所提及的,取决于应用程序的延迟要求,主机可使用部分地作为OCSSD(其中主机保持FTL数据)并且部分地作为传统闪存阵列(其中阵列保持FTL数据)的阵列。例如,存储器单元阵列(诸如图1的存储器结构126)可包括第一组块1500和第二组块1510。例如,第一组块可以在SSD模式中使用,而第二组块在OCSSD模式中使用。或者,第一组块可以在OCSSD模式中使用,而第二组块在SSD模式中使用。

在任一种情况下,第一组块的FTL数据可与第二组块的FTL数据分开保持。例如,当第一组块处于SSD模式时,相应FTL数据例如由控制器122保持。例如,当第二组块处于OCSSD模式时,相应FTL数据例如由主机保持。

此外,组1500和1510中的块的数量可随时间推移而改变。

因此,可以看出,在一个具体实施中,一种装置包括:存储器单元的多个块和布置在固态设备中的控制电路,所述控制电路为所述多个块管理闪存转换层过程,并且为了将所述闪存转换层过程的管理从所述固态设备转变到主机,所述控制电路被配置为:向所述主机传输命令以同步逻辑到物理地址表;以及向所述主机传输命令以同步有效性位图。

在另一个具体实施中,一种方法包括:在固态设备处接收第一命令以同步主机的逻辑到物理地址表,所述第一命令包括所述逻辑到物理地址表的相应地址的分散收集列表条目;响应于所述第一命令,使用所述相应地址从所述主机读取所述逻辑到物理地址表;在所述固态设备处接收第二命令以同步所述主机的有效性位图,所述第二命令包括所述有效性位图的相应地址的分散收集列表条目;响应于所述第二命令,使用所述相应地址从所述主机读取所述有效性位图;使所述固态设备的存储器单元的多个块再循环;以及响应于所述再循环的完成,更新配置文件以指示所述固态设备的角色已从其中闪存转换层过程由所述主机管理的开放沟道固态设备改变为其中所述闪存转换层过程由所述固态设备管理的传统固态设备。

在另一个具体实施中,在主机处的方法包括:向固态设备传输命令以将所述固态设备从其中闪存转换层过程由所述固态设备管理的传统固态设备转变到其中所述闪存转换层过程由所述主机管理的开放沟道固态设备;响应于用于将所述固态设备从所述传统固态设备转变到所述开放沟道固态设备的所述命令,从所述固态设备接收识别所述闪存转换层过程的不同类型的数据和所述固态设备处的所述不同类型的数据的相应地址的命令;响应于所述命令,使用所述相应地址从所述固态设备读取所述不同类型的数据;以及使用所述闪存转换层的所述不同类型的数据来管理所述闪存转换层过程。

在另一个具体实施中,一种方法包括:在固态设备处接收命令以将所述固态设备从其中闪存转换层过程由所述固态设备管理的传统固态设备转变到其中所述闪存转换层过程由主机管理的开放沟道固态设备;以及响应于用于将所述固态设备从所述传统固态设备转变到所述开放沟道固态设备的所述命令,从所述固态设备向所述主机传输识别所述闪存转换层过程的不同类型的数据和所述固态设备处的所述不同类型的数据的相应地址的命令,以允许所述主机使用所述相应地址从所述固态设备读取所述不同类型的数据,以及使用所述闪存转换层的所述不同类型的数据来管理所述闪存转换层过程。

已出于例证和描述的目的提出本发明的上述具体实施方式。它并非旨在是穷尽的或将本发明限制为所公开的精确形式。鉴于上述教导内容,许多修改和变型是可能的。选择所描述的实施方案是为了最好地解释本发明的原理及其实际应用,从而使得本领域的其他技术人员能够在各种实施方案中以及适合于预期的特定用途的各种修改中最好地利用本发明。本发明的范围旨在由所附权利要求书限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号