配置为执行非阻塞控制更新操作的数据存储设备的制作方法

文档序号:15385773发布日期:2018-09-08 00:32阅读:197来源:国知局

本申请要求2017年2月23日提交的美国专利申请号为15/440,505的权益并且为其的部分继续申请案,其全部内容通过引用并入本文。

本公开一般涉及电子设备,并且更具体地涉及数据存储设备。



背景技术:

数据存储设备使用户能够存储和检索数据。数据存储设备的示例包括易失性存储设备和非易失性存储设备。非易失性存储设备在断电事件之后保留数据,而易失性存储设备在断电事件之后丢失数据。

数据存储设备可以存储与数据相关联的控制信息。例如,数据存储设备可以维护指示逻辑地址到物理地址的映射的管理表。在一些实施方式中,管理表被维持在数据存储设备的控制器的易失性存储器中。数据存储设备可以在易失性存储器处更新管理表,并且可以周期性地将管理表发送到数据存储设备的非易失性存储器(例如,在非易失性存储器处使用控制更新操作来“备份”管理表)。

数据存储设备可以在控制更新操作期间“阻塞”对非易失性存储器的写入操作,以创建在控制表和主机数据之间的一致性。例如,数据存储设备可以等待直到完成一个或多个写入操作(例如,在系统空闲时间期间)以更新控制信息。在更新控制信息期间,数据存储设备可以“阻塞”(例如,延迟)对非易失性存储器的写入访问的随后请求,直到完成对控制信息的更新。“阻塞”一个或多个写入操作可能引起在数据存储设备处的等待时间。



技术实现要素:

根据本发明的一个方面,一种装置包括:非易失性存储器;和控制器,被耦合到该非易失性存储器,控制器包括易失性存储器,其中控制器被配置为执行分离的非阻塞控制同步操作和非阻塞合并操作。

根据本发明的另一方面,一种装置包括:非易失性存储器;和控制器,被耦合到该非易失性存储器,控制器包括:接口,被配置为从访问设备接收对访问该非易失性存储器的第一请求;和易失性存储器,被配置为存储与该非易失性存储器相关联的控制结构的第一副本,其中控制器还被配置为:响应于第一请求执行对控制结构的第一副本的部分的第一更新、基于第一更新在该非易失性存储器处发起对控制结构的第二副本的第二更新以及与第二更新并行地运行对访问该非易失性存储器的第二请求。

根据本发明的另一方面,一种方法包括:由第一设备从第二设备接收第一请求以执行对第一设备的非易失性存储器的第一写入操作;响应于执行第一写入操作,执行对存储在第一设备的易失性存储器处的控制表的第一副本的部分的第一更新;在非易失性存储器处执行对控制表的第二副本的第二更新以将对第一副本的修改传播到第二副本;和在执行第二更新期间,对非易失性存储器执行第二写入操作。

根据本发明的另一方面,一种装置包括:用于存储数据的装置;用于从访问设备接收对访问用于存储数据的装置的第一请求的装置;用于存储与用于存储数据的装置相关联的控制表的第一副本的部分的装置;和用于响应于第一请求执行对控制表的第一副本的部分的第一更新、用于基于第一更新在用于存储数据的装置处发起对控制表的第二副本的第二更新、以及用于与第二更新并行地执行对访问用于存储数据的装置的第二请求的装置。

根据本发明的另一方面,一种装置包括:非易失性存储器;和控制器,其被耦合到该非易失性存储器,控制器包括易失性存储器,其中控制器被配置为执行非阻塞控制同步操作,并且其中控制器还被配置为相对于非阻塞控制同步操作异步地执行非阻塞合并操作。

附图说明

图1是包括被配置为执行非阻塞控制同步操作的数据存储设备的系统的第一说明性示例的图;

图2描绘了可以在图1的数据存储设备处执行的编程过程的说明性示例;

图3描绘了可以在图1的数据存储设备处执行的编程过程的另一说明性示例;

图4是包括被配置为执行非阻塞控制同步操作的数据存储设备的系统的第二说明性示例的图;

图5描绘了可以由图4的数据存储设备执行的一组操作;

图6是描绘图4的数据存储设备的示例的某些说明性方面的图;

图7是可以被包括在图4的数据存储设备中的设备的图;

图8是图7的设备的说明性方面的图;

图9是描绘图4的数据存储设备的示例的附加说明性方面的图;

图10是示出可以由图4的数据存储设备执行的某些操作的图;

图11是图1的数据存储设备的操作的方法的特定说明性示例的流程图;

图12是图4的数据存储设备的操作的方法的特定说明性示例的流程图;

图13是包括被配置为执行非阻塞合并操作的数据存储设备的系统的说明性示例的图;

图14是示出可以在图13的数据存储设备处执行的操作的某些示例的框图;

图15是示出可以在图13的数据存储设备处执行的操作的某些示例的梯形图;

图16是示出可以在图13的数据存储设备处执行的操作的某些示例的图。13;

图17是图13的数据存储设备的操作的方法的特定说明性示例的流程图。

具体实施方式

根据本公开的某些方面的数据存储设备被配置为执行非阻塞合并操作,该非阻塞合并操作将对存储在易失性存储器中的控制信息的第一副本的改变传播(例如,融合或合并)到存储在非易失性存储器处的控制信息的第二副本。例如,代替在更新控制信息的合并操作期间的“阻塞”操作,数据存储设备可以并行地执行操作,诸如通过并行地执行写入操作和合并操作。

在一些情况下,在执行写入操作之后并且在经由控制同步操作更新控制信息之前,可能发生非正常关机(ungracefulshutdown,ugsd)事件。例如,电源故障可能会引起ugsd事件。在这种情况下,数据存储设备可以执行存储器扫描以识别写入操作的结果(例如,由于控制信息的第二副本还未被更新来反映写入操作的结果,并且控制信息的第一副本可能在ugsd事件期间从易失性存储器中丢失)。例如,数据存储设备可以使用存储在非易失性存储器处的数据的元数据(例如,标头信息(headerinformation))来识别写入操作的结果,诸如通过识别自先前的控制同步操作以来修改的地址。数据存储设备可以基于结果来更新控制信息。因此,合并操作可以以非阻塞方式执行,而没有由于ugsd事件而造成数据丢失的风险。

在说明书中,共同的或相似的特征可以由共同的参考标号来指定。如本文所使用的,“示例性”可以指示示例、实施方式和/或方面,并且不应该被解释为限制或者指示偏好或者优选的实施方式。

参考图1,描绘了系统的特定说明性示例并且将其总体上标记为100。系统100包括数据存储设备102和设备180(例如,主机设备或接入设备)。数据存储设备102包括非易失性存储器104和控制器130。控制器130被耦合到非易失性存储器104。

非易失性存储器104包括被包括在一个或多个存储器裸芯(诸如第一存储器裸芯106和第二存储器裸芯108)中的非易失性存储元件阵列。为了进一步说明,作为说明性示例,非易失性存储器104可以包括快闪存储器(例如,nand快闪存储器)或电阻式存储器(诸如电阻式随机存取存储器(resistiverandomaccessmemory,reram))。非易失性存储器104可以具有三维(three-dimensional,3d)存储器配置。如本文所使用的,3d存储器设备可以包括存储元件的多个物理层级(而不是具有如平面存储器设备中的存储元件的单一物理层级)。作为示例,非易失性存储器104可以具有3d垂直位线(verticalbitline,vbl)配置。在特定实施方式中,非易失性存储器104具有3d存储器阵列配置,其单片地形成在存储器单元阵列的一个或多个物理层级中,该存储器单元阵列具有设置在硅衬底之上的有源区域。可替换地,非易失性存储器104可以具有另一配置,诸如二维(two-dimensional,2d)存储器配置或非单片3d存储器配置(例如,堆叠裸芯3d存储器配置)。

非易失性存储器104包括存储元件的一个或多个区域。存储区域的示例是块(block),诸如存储元件的nand闪存擦除组、或reram实施方式中的一组基于电阻的存储元件。存储区域的另一示例是存储元件的字线(例如,nand快闪存储元件的字线或基于电阻的存储元件的字线)。作为说明性示例,存储区域可以具有单级单元(single-level-cell,slc)配置、多级单元(multi-level-cell,mlc)配置或三级单元(tri-level-cell,tlc)配置。非易失性存储器104的每个存储元件可以被编程为指示一个或多个值的状态(例如,闪存配置中的阈值电压或电阻式存储器配置中的电阻状态)。作为示例,在说明性的tlc方案中,存储元件可以被编程为指示三个值的状态。作为附加示例,在说明性mlc方案中,存储元件可以被编程为指示两个值的状态。

控制器130包括到非易失性存储器104的存储器接口132,并且还包括到设备180的设备接口172(例如,主机接口)。控制器130还可以包括闪存转换层(flashtranslationlayer,ftl)138、控制电路140、数据队列142、易失性存储器144以及上电检测器146。作为说明性示例,易失性存储器144可以包括随机存取存储器(randomaccessmemory,ram)。

在操作期间,控制器130可以从设备180接收数据174,诸如结合对非易失性存储器104的写入访问的请求。控制器130可以基于数据174执行一个或多个操作以生成第一数据120,诸如通过对数据174编码来生成第一数据120。在一些实施方式中(例如,快闪存储器实施方式),控制器130的ftl138被配置为执行逻辑到物理地址转换以将与数据174相关联的逻辑地址转换成与第一数据120相关联的物理地址。控制器130可以被配置为在数据队列142处存储(例如,缓冲区或“队列”)数据174。

存储器接口132被配置为将第一数据120发送到非易失性存储器104。例如,控制器130可以从数据队列142中检索第一数据120并且可以将第一数据120提供给存储器接口132以将数据120发送到非易失性存储器104。非易失性存储器104可以将第一数据120存储到非易失性存储器104的特定区域(例如,通过将第一数据120写入到第一存储器裸芯106、写入到第二存储器裸芯108、写入到一个或多个其它存储器裸芯、或其组合)。

易失性存储器144被配置为存储控制信息184。为了说明,控制信息184可以包括映射表186,并且控制器130可以响应于将第一数据120存储到非易失性存储器104来更新映射表186,诸如通过更新映射表186以指示非易失性存储器104存储第一数据120。例如,控制电路140被配置为基于将第一数据120存储到非易失性存储器104来更新控制信息184以生成更新的控制信息124(例如,与映射表186的更新的版本相对应的更新的映射表)。

控制电路140可以被配置为生成指示126并且被配置为将指示126包括在更新的控制信息124中。指示126可以指定由非易失性存储器104存储的、已经被“安全地”写入到非易失性存储器104的数据。例如,指示126可以指定第一数据120(以及在第一数据120之前写入非易失性存储器104的其它数据)对应于“安全的”(或可靠的)数据。指示126可以使用与第一数据120相关联的逻辑地址、与第一数据120相关联的物理地址、其它信息或其组合来指定第一数据120。替代地或额外地,指示126可以指定诸如时间戳(timestamp)的“安全点”(或“同步点”),其中在安全点之前写入非易失性存储器104的数据对应于安全数据,并且其中在安全点之后写入非易失性存储器104的数据对应于易受损的数据。

控制器130可以将更新的控制信息124发送到非易失性存储器104(例如,“备份”更新的控制信息124的副本),以使得能够检索更新的控制信息124(例如,以使得能够在数据存储设备102的电力循环之后恢复更新的控制信息124)。结合非阻塞控制同步(controlsync,cs)操作(在本文中也被称为控制更新操作或控制程序操作),更新的控制信息124可以被发送到非易失性存储器104。

根据本公开的各方面,控制器130被配置为将更新的控制信息124与其它数据并行地发送到非易失性存储器104以将更新的控制信息124与其它数据存储在非易失性存储器104处(例如,不“阻塞“对非易失性存储器104的其它访问以及由非易失性存储器104执行的处理)。在说明性示例中,存储器接口132被配置为并行地发送第二数据122和更新的控制信息124以将第二数据122和更新的控制信息124存储在非易失性存储器104处。数据队列142可以被配置为存储第二数据122以将第二数据122写入到非易失性存储器104。在特定示例中,控制器130可以被配置为从数据队列142访问第二数据122,并且从易失性存储器144访问更新的控制信息124,并且并行地向存储器接口132提供第二数据122和更新的控制信息124。在说明性示例中,存储器接口132被配置为并行地将第二数据122发送到第一存储器裸芯106和第二存储器裸芯108中的一个以及将更新的控制信息124发送到第一存储器裸芯106和第二存储器裸芯108中的另一个。

如本文所使用的,“并行地”发送第二数据122和更新的控制信息124可以指使用至少一个公共时钟周期、至少一个公共分组或者另一常用技术来发送第二数据122和更新的控制信息124。为了说明,如果在公共时钟周期期间或者使用公共分组发送第二数据122的至少一部分和更新的控制信息124的至少一部分,则可以并行地发送第二数据122和更新的控制信息124。在一些情况下,存储器接口132可以包括耦合到非易失性存储器104的多通道总线,并且第二数据122和更新的控制信息124可以使用多通道总线并行地被发送到非易失性存储器104。

非易失性存储器104被配置为以非阻塞方式存储第二数据122和更新的控制信息124。例如,非易失性存储器104可以执行非阻塞cs操作,该非阻塞cs操作将更新的控制信息124写入到非易失性存储器104而不“阻塞”对第二数据122的写入。

在写入更新的控制信息124之后被写入到非易失性存储器104的数据可以对应于易受损的数据。为了说明,存储器接口132可以被配置为在发送更新的控制信息124之后将第三数据123发送到非易失性存储器104。指示126可以指定第三数据123对应于易受损的数据。例如,如果在将更新的控制信息124写入到非易失性存储器104期间或之后、并且在基于对第三数据123的写入重新更新控制信息184之前发生断电事件,则控制器130可能不能确定第三数据123是否已被成功编程(例如,导致“丢失”数据)。因此,第三数据123可以对应于“易受损的”数据。

取决于具体的实施方式,与写入更新的控制信息124并行地被写入到非易失性存储器104的数据可以对应于“安全的”数据或“易受损的”数据。在说明性示例中,控制电路140被配置为在生成更新的控制信息124期间访问数据队列142中的第二数据122。在此示例中,控制电路140可以被配置为使指示126指定第二数据122对应于安全数据(因为第二数据122将与更新的控制信息124并行地被编程)。在其它实施方式中,第二数据122可以对应于易受损的数据。

为了进一步说明,上电检测器146可以被配置为检测在将第二数据122和更新的控制信息124写入到非易失性存储器104之后发生的在数据存储设备102处的上电事件。控制器130可以被配置为响应于上电事件使用更新的控制信息124(例如,使用指示126)来执行扫描操作以识别第三数据123。

在隐式技术的特定示例中,指示126可以隐式地指定第三数据123是易受损的。例如,指示126可以指示在生成更新的控制信息124之前将第一数据120存储到非易失性存储器104,并且在第一数据120之后存储的数据是易受损的。控制器130可以从非易失性存储器104读取第一数据120以确定与第一数据120相关联的特定时间戳,并且可以扫描非易失性存储器104寻找指示在与第一数据120相关联的特定时间戳之后的时间戳的数据(例如,第三数据123)。

取决于特定的实施方式,数据存储设备102可以响应于检测诸如第二数据122的易受损的数据来执行一个或多个操作。作为说明性示例,数据存储设备102可以通知设备180第二数据122由于数据存储设备102处的断电事件而易受损。

数据存储设备102处的操作可以继续一个或多个存储器操作。例如,数据存储设备102可以执行写入操作以将第四数据写入到非易失性存储器104。数据存储设备102可以更新控制信息184以基于编程第四数据来生成控制信息184的第三版本,并且数据存储设备102可以并行地发送控制信息184的第三版本和第五数据以将控制信息184的第三版本和第五数据存储在非易失性存储器104中。控制信息184的第三版本可以指定第四数据(或第四数据和第五数据)对应于安全数据。

参考图1描述的一个或多个方面可以提高数据存储设备102处的性能。例如,数据存储设备102可以在非阻塞cs操作期间执行cs操作,而不“阻塞”其它存储器访问非易失性存储器104以及由非易失性存储器104执行的处理,诸如通过并行地将第二数据122和更新的控制信息124写入到非易失性存储器104中。作为结果,与在存储更新的控制信息的同时“阻塞”存储器访问操作的设备相比,可以提高吞吐量。

参考图2,描绘了编程过程的特定说明性示例,并将其总体上标记为200。编程过程200可以由图1的数据存储设备102执行。例如,可以使用图1的第一存储器裸芯106和第二存储器裸芯108来执行编程过程200。图2还描述了可以使用第三存储器裸芯202和第四存储器裸芯204来执行编程过程200。第三存储器裸芯202和第四存储器裸芯204可以被包括在图1的非易失性存储器104中。

图2描绘了在210处的第一组数据编程操作。例如,数据可以被编程到存储器裸芯106、108、202和204中的一个或多个。作为说明性的示例,数据可以包括图1的第一数据120。

编程过程200还包括在220处并行地执行控制程序操作222和一个或多个数据编程操作。例如,作为说明性的示例,图2描绘了可以在第一存储器裸芯106、第二存储器裸芯108和第四存储器裸芯204处执行数据编程操作。数据可以包括图1的第二数据122。图2还描绘了第三存储器裸芯202可以执行控制程序操作222。例如,执行控制程序操作222可以包括与写入图1的第二数据122并行地将图1的更新的控制信息124编程到第三存储器裸芯202。

图2还示出了在230处可以执行第三组一个或多个数据编程操作。为了说明,第一存储器裸芯106、第二存储器裸芯108和第三存储器裸芯202可以执行数据编程操作。在说明性示例中,在控制编程操作222之前被编程的数据可以对应于安全数据。例如,在210处被编程的数据可以对应于安全数据,并且图1的指示126可以指定在210处被编程的数据对应于安全数据。与控制程序操作222并行地或在控制程序操作222之后被编程的数据可以对应于易受损的数据。例如,在230处被编程的数据可以对应于易受损的数据,并且图1的指示126可以指定在230处被编程的数据对应于易受损的数据。取决于特定实施方式,与控制程序操作222并行地被编程的数据可以包括安全数据或易受损的数据。例如,在220处被编程的数据可以对应于安全数据或易受损的数据,并且图1的指示126可以指定在220处被编程的数据对应于安全数据或易受损的数据。

参考图2描述的一个或多个方面可以提高在数据存储设备(诸如图1的数据存储设备102)处的性能。例如,通过并行地执行控制程序操作222和一个或多个数据编程操作,与在存储更新的控制信息的同时“阻塞”数据写入操作的设备相比,提高了吞吐量。

参考图3,描绘了编程过程的另一特定说明性示例,并将其总体上标记为300。编程过程300描绘了与主机数据块302和控制数据块304相关联的操作。例如,主机数据块302可以对应于非易失性存储器104的区域(例如,物理区域、逻辑区域或虚拟区域),并且控制数据块304可以对应于非易失性存储器104的另一区域(例如,物理区域、逻辑区域或虚拟区域)。

编程过程300可以包括在310处执行第一控制更新。第一控制更新可以包括将更新的控制信息124存储到图1的非易失性存储器104。控制更新可以对应于图2的控制更新操作222。更新的控制信息124可以包括指示126,并且指示126可以指定在执行第一控制更新之前被编程的数据包括安全数据312。指示126可以进一步指定在执行第一控制更新之后被编程的数据可以包括易受损数据314。

编程过程300还包括在320处执行第二控制更新。第二控制更新可以包括将图1的控制信息184的重新更新的版本存储到图1的非易失性存储器104。通过重新更新控制信息184,重新更新的控制信息可以包括在重新更新控制信息184之前被编程到非易失性存储器104的数据对应于安全数据的指示。例如,易受损数据314可以被重新分类为安全数据。此外,在第二次控制更新之后编程的数据可能被指示为易受损的。例如,在第二次控制更新之后被编程的数据324可以被指示为易受损的。

图3示出了控制更新操作可以被用于指示安全数据、易受损数据或两者。控制更新操作可以“重新分类”先前被指示为易受损的数据。

参考图4,描绘了系统的特定说明性示例并且将其总体上标记为400。系统400包括数据存储设备402和设备480(例如,主机设备或访问设备)。数据存储设备402包括非易失性存储器404和控制器430。控制器430被耦合到非易失性存储器404。

非易失性存储器404包括被包括在一个或多个存储器裸芯(诸如第一存储器裸芯406和第二存储器裸芯408)中的非易失性存储元件阵列。在说明性示例中,第一存储器裸芯406和第二存储器裸芯408对应于图1的第一存储器裸芯106和第二存储器裸芯108。

控制器430包括到非易失性存储器404的存储器接口432,并且还包括到设备480的设备接口472(例如,主机接口)。控制器430还可以包括闪存转换层(ftl)438、控制电路440、命令队列442、易失性存储器444和计数器446。作为说明性示例,易失性存储器444可以包括随机存取存储器(ram)。

在操作期间,控制器430可以从设备480接收数据474,诸如结合对非易失性存储器404的写入访问请求。控制器430可以基于数据474执行一个或多个操作以生成第一数据422,诸如通过对数据474编码来生成第一数据422。在一些实施方式(例如,快闪存储器实施方式)中,控制器430的ftl438被配置为执行逻辑到物理地址转换以将与数据474相关联的逻辑地址转换成与第一数据422相关联的物理地址。

为了发起将第一数据422存储到非易失性存储器404,控制器430被配置为在命令队列442处排队一个或多个存储器命令。例如,控制器430可以被配置为在命令队列442处排队存储器命令的第一集合452以在非易失性存储器404处发起对第一数据422的存储。取决于特定示例,存储器命令的第一集合452可以以非易失性存储器存储器404的一个或多个裸芯(诸如第一存储器裸芯406、第二存储器裸芯408、一个或多个其它存储器裸芯、或其组合)为目标。

易失性存储器444被配置为存储控制信息484。为了说明,控制信息484可以包括映射表486,并且控制器430可以更新映射表486以响应于将数据存储到非易失性存储器404而生成更新的映射表428,诸如通过更新映射表486以指示非易失性存储器404存储第一数据422。控制电路440可以被配置为基于将第一数据422存储到非易失性存储器404来生成更新的控制信息。

为了保持更新的控制信息424的完整性(例如,在数据存储设备402处的电力循环之后),控制器430可以将更新的控制信息424发送到非易失性存储器404(例如,“备份“更新的控制信息424的副本)。结合非阻塞控制同步(cs)操作(在本文中也被称为控制更新操作),更新的控制信息424可以被发送到非易失性存储器404。

根据本公开的方面,控制器430可以被配置为随第一组存储命令452之后向命令队列442提供屏障(barrier)命令454。屏障命令454可以使存储器命令的第一集合452能够在发送更新的控制信息424以将更新的控制信息424存储在一个或多个存储器裸芯之前被运行。例如,如果控制器430向存储器裸芯406、408都发出屏障命令454,则控制器430可以在存储器裸芯406、408运行屏障命令454时从存储器裸芯406、408接收完成确认(acknowledgement,ack)。在这种情况下,完成ack可以指示存储器裸芯406、408已经运行了存储器命令的第一集合452。作为结果,控制器430可以响应于确定(基于完成ack)存储器命令的第一集合452已经完成(并且更新的控制信息424准确地表示非易失性存储器404的状态)来存储更新的控制信息424。在说明性示例中,存储器裸芯406和408被配置为在运行屏障命令454之后很少或没有延迟地立即继续处理来自命令队列442的命令。在此示例中,控制同步操作是非阻塞的操作。

为了进一步说明,控制器430可以通过将存储器命令的第一集合452提供给非易失性存储器404来发起对存储器命令的第一集合452的运行。控制器430可以在将存储器命令的第一集合452提供给非易失性存储器404之后,将屏障命令454提供给非易失性存储器404。存储器命令的第一集合452中的存储器命令可以被提供给第一存储器裸芯406、被提供给第二存储器裸芯408、或者被提供给非易失性存储器404的一个或多个其它存储器裸芯、或其组合。

在运行存储器命令的第一集合452中的一个或多个存储器命令时,非易失性存储器404的存储器裸芯可以运行屏障命令454。响应于运行屏障命令454,非易失性存储器404的存储器裸芯可以将消息(例如,完成ack)提供给控制器430。为了说明,图4描绘了控制器430可以从非易失性存储器404接收一个或多个消息426。一个或多个消息426与屏障命令454相关联,并且可以包括来自存储器裸芯406、408中的一个或多个的完成ack。例如,响应于第一存储器裸芯406运行屏障命令454,第一存储器裸芯406可以将一个或多个消息426中的第一消息提供给控制器430。作为另一示例,响应于第二存储器裸芯408运行屏障命令454,第二存储器裸芯408可以将一个或多个消息426中的第二消息提供给控制器430。

控制器430可以被配置为响应于接收到一个或多个消息426中的每一个来调整由计数器446指示的值450。取决于特定示例,控制器430可以并行地或顺序地接收一个或多个消息426。作为说明性示例,控制器430可以基于存储器裸芯406、408的不同工作负载和写入速度来顺序地接收一个或多个消息426。

控制器430被配置为确定是否满足与屏障命令454相关联的条件,诸如一个或多个消息426的数量是否满足阈值448。在说明性示例中,阈值448与要运行屏障命令454的非易失性存储器104的存储器裸芯的数量相对应。在此示例中,阈值448可以与将从非易失性存储器404接收的“预期”完成ack的数量相对应(基于接收屏障命令454的非易失性存储器404的存储器裸芯的数量)。控制器430可以使用值450(例如,通过响应于每个接收到的完成ack而递增值450)来监视接收到的完成ack的数量。

控制器430可以被配置为将值450与阈值448进行比较以确定该数量是否满足(例如,大于或大于或等于)阈值448。作为说明性示例,控制电路440可以包括耦合到计数器446的比较器电路。比较器电路可以被配置为将值450与阈值448进行比较以确定该数量是否满足阈值448。

如果该数量未能满足阈值448,则控制器430可以确定该条件未被满足。作为结果,控制器430可以等待接收一个或多个消息426中的至少一个其它消息。作为说明性示例,如果屏障命令454被提供给存储器裸芯406、408两者,则阈值448可以对应于二,并且等于零或等于一的数量不能满足阈值448。

可替换地,如果一个或多个消息426的数量满足阈值448,则控制器430可以确定与屏障命令454相关联的条件被满足。为了说明,如果屏障命令454被提供给存储器裸芯406、408两者,则阈值448可以对应于二,并且等于二的数量满足阈值448。在此示例中,控制器430可以确定存储器命令的每个第一集合452已经被运行并且更新的控制信息424准确地反映非易失性存储器404的状态(由于运行存储器命令的第一集合452)。在这种情况下,响应于一个或多个消息426的数量满足阈值448,控制器430被配置为发送更新的控制信息424以将控制信息424存储在非易失性存储器404中。

屏障命令454可以被称为“控制同步标记”。屏障命令454跟随存储器命令的第一集合452,并且屏障命令的运行的完成确保存储器命令的第一集合452是在写入更新的控制信息424之前被运行。存储器命令的第二集合456可以与屏障命令454并行地提供给非易失性存储器404(例如,使得cs操作的执行不“阻塞”写入命令到非易失性存储器404)。

结合图4的示例,cs操作由数据存储设备402以非阻塞的方式执行。例如,可以与将更新的控制信息424发送到非易失性存储器404并行地执行一个或多个存储器访问操作。为了进一步示出,在一些实施方式中,可以与发送更新的控制信息424并行地将存储器命令的第二集合456中的一个或多个存储器命令发送到非易失性存储器404,诸如通过使用可以被包括在存储器接口432中的多通道总线。

参考图4所描述的一个或多个方面可以提高在数据存储设备402处的性能。例如,数据存储设备402被配置为在非阻塞cs操作期间执行cs操作而不“阻塞”其它存储器访问操作。作为结果,与在存储更新的控制信息的同时“阻塞”存储器访问操作的设备相比,可以提高吞吐量。

参考图5,描绘了一组操作的说明性方面,并将其总体上标记为500。作为说明性示例,该组操作500可以在图4的数据存储设备402处执行。

该组操作500可以包括在502处检测触发事件。触发事件可以对应于指示控制信息484将被更新并存储在非易失性存储器404处的条件。例如,触发条件可以与非易失性存储器404处的操作的特定数量、自先前更新并存储控制信息484起的阈值持续时间、一个或多个其它条件、或其组合相对应。

该组操作500还包括在504处发送屏障命令。例如,控制器430可以将屏障命令454发送到非易失性存储器404。

该组操作500还包括在506处写入日志。例如,日志可以包括更新的控制信息424,并且日志可以被写入到非易失性存储器404中。响应于确定一个或多个消息426的数量满足阈值448,日志可以被写入到非易失性存储器404。

该组操作500还包括在508处检测触发事件。例如,响应于在非易失性存储器404处执行特定数量的操作、自先前更新并存储控制信息484起的阈值持续时间(例如,在506处)、一个或多个其它条件、或其组合,触发事件可以被检测到。

该组操作500还包括在510处发送屏障命令。例如,与屏障命令454相对应的另一屏障命令可以由控制器430提供给非易失性存储器404,诸如与重新更新的控制信息484相结合。

该组操作500还包括在512处写入日志。例如,可以基于在非易失性存储器404处执行的一个或多个存储器操作来重新更新控制信息484,并且重新更新的控制信息可以被提供给非易失性存储器404。

图5示出了可以结合将日志写入诸如非易失性存储器404的存储器来使用屏障命令(例如,屏障命令454)的示例。屏障命令可以确保先前的存储器命令在屏障命令之前被运行,并且确保随后的存储器命令在屏障命令之后被运行,维持日志相对于存储器命令的一致性。

图6描绘了图4的数据存储设备402的说明性方面。在图6中,参考图4的ftl438、第一处理器602和第二处理器604来描述操作。还参考命令队列606、命令队列608、命令队列610和命令队列612来描述操作。

在操作期间,处理器602、604可以响应于ftl438。例如,ftl438可以将指示提供给处理器602、604以生成屏障命令,诸如屏障命令454。在图6的示例中,命令队列606、608、610和612中的每一个可以与非易失性存储器404的特定存储器裸芯相关联。作为说明性示例,命令队列606可以与存储器裸芯n(例如,第一存储器裸芯406)相关联,并且命令队列608可以与存储器裸芯n+1(例如,第二存储器裸芯408)相关联,其中n是正整数。命令队列610可以与存储器裸芯0相关联,并且命令队列612可以与存储器裸芯1相关联。

在运行命令期间,屏障命令454可以通过命令队列606、608、610和612中的每一个来传播(例如,通过响应于运行先前的指令而“在队列中向上移动”)。由于不同的裸芯特性(诸如不同的裸芯工作负载或不同的裸芯写入速度等),所以非易失性存储器404的某些存储器裸芯可以在非易失性存储器404的其它存储器裸芯之前到达屏障命令454。例如,在图6中,命令队列608可以在指示屏障命令454准备运行的命令队列610之前,指示屏障命令454准备运行。

运行屏障命令454的每个存储器裸芯可以将一个或多个消息426的相应消息提供给图4的控制器430。为了说明,图6描绘了在614处,对应于命令队列610的特定存储器裸芯可以发送特定消息(诸如裸芯屏障响应)。在特定示例中,在614处发送裸芯屏障响应使得一个或多个消息426的数量满足阈值448。在此示例中,控制器430可以响应于从存储器裸芯n、n+1、0和1中的每一个接收裸芯屏障响应而发起将更新的控制信息424发送到非易失性存储器404。在该说明性示例中,阈值448可以对应于四。作为一个或多个消息426的数量满足阈值448的结果,控制器430可以检测到更新的控制信息424要被发送到非易失性存储器404,维持更新的控制信息424相对于在非易失性存储器404处执行的存储器操作的一致性。

参考图7,描绘了设备的说明性方面并且将其总体上标记为700。图7的设备700的一个或多个方面可以集成在图4的控制器430内。例如,图7描绘了图4的ftl438和图6的第一处理器602。

在图7中,多个队列被耦合在ftl438和处理器602之间。例如,图7描绘了队列702、队列704、队列706和队列708可以被耦合在ftl438和处理器602之间。

图7的示例示出了与不同数量的消息相关联的多个屏障命令。为了说明,图7的示例描绘了与为零的第一屏障标识(“barrierid”)相关联的第一屏障命令。第一屏障命令与一个或多个消息的第一数量(“numreqs”)相关联,该第一数量等于四(例如,因为在图7的示例中可以向四个存储器裸芯提供第一屏障命令)。作为另一示例,图7还描绘了与为2的第二屏障id相关联并且与一个或多个消息的第二数量相关联的第二屏障命令,该第二数量等于2(例如,因为第二屏障命令可以被提供给图7的示例中的两个存储器裸芯)。

图7中的屏障命令中的任何一个都可以对应于图4的屏障命令454,并且参考图7描述的消息的数量中的任何一个可以对应于图4的阈值448。队列702、704、706和708中的每一个可以与非易失性存储器404的对应裸芯相关联。

图7的示例示出了可以使用多个屏障消息,其中屏障消息中的每一个与对应标识(barrierid)和消息的对应数量(numreq)相关联。作为结果,图4的控制器430可以并行地调度使用屏障完成并且包括一个或多个cs操作的多个操作。取决于特定示例,上述多个操作可以包括一个或多个刷新操作、依赖于先前操作的完成的一个或多个依赖的控制操作、一个或多个其它操作、或其组合。

参考图8,描绘了图7的设备700的说明性方面并且将其总体上标记为800。图8的存储设备800可以被包括在图4的数据存储设备402中。

在图8的示例中,第一处理器602包括屏障模块806和屏障计数器(barriercounter,bc)808。在特定示例中,屏障模块806对应于控制电路440,而bc808对应于图4的计数器446。

在图8的示例中,第一处理器602还包括第一裸芯管理器810、第二裸芯管理器812和第三裸芯管理器814。裸芯管理器810、812和814中的每一个可以与非易失性存储器404的对应存储器裸芯相关联。作为说明性示例,第一裸芯管理器810可以管理在第一存储器裸芯406处被执行的存储器操作,并且第二裸芯管理器812可以控制图4的第二存储器裸芯408处的存储器操作。

在图8的示例中,裸芯810、812和814可以被配置为从非易失性存储器404的存储器裸芯接收消息。为了说明,第一裸芯管理器810可以被配置为从第一存储器裸芯406接收一个或多个消息426中的第一消息,并且第二裸芯管理器812可以被配置为从第二存储器裸芯408接收一个或多个消息426中的第二消息。裸芯管理器810、812和814中的每一个可以被配置为递增bc808,并且屏障模块806可以被配置为检测由bc808指示的值(例如,计数器446的值450)何时满足阈值448。

图9描绘了图4的数据存储设备402的说明性方面。在图9中,参考图4的ftl438和队列的集合(诸如命令队列606、608、610和612)来描述操作。图9还示出了该组队列还可以包括队列902、队列904和队列906。

图9的队列的集合可以具有一个分层的配置。例如,队列606、608、610和612可以对应于层级的“更低”级,并且队列902、904可以对应于层级的“更高”级。每个“更高”级队列可以被连接到多个“更低”级队列。例如,队列902被连接到队列606、608。作为附加示例,队列904被连接到队列606、608,并且队列906被连接到队列610、612。

在图9的示例中,ftl438可以将屏障命令发送到队列的集合中的一个或多个队列。发送到“更高”队列的屏障命令可以被传播到一个或多个“更低”队列。例如,图9示出了屏障命令454可以从队列902传播到队列606、608。作为另一示例,图9描绘了屏障命令454可以从队列904传播到队列606、608。响应于屏障命令454中的每一个的运行,完成消息可以被转发到ftl438。

参考图10,描绘了示出数据存储设备的操作的图,并且将数据存储设备总体上标记为1000。在说明性示例中,操作1000可以由图4的数据存储设备402执行。在图10的示例中,参考非易失性存储器404、ftl438和屏障模块806来描述操作1000。

操作1000可以包括在1010处生成预屏障(pre-barrier)请求。例如,ftl438可以向屏障模块806通知ftl438将要向屏障模块806提供屏障命令。

操作1000还可以包括在1012处生成屏障请求。例如,屏障请求可以对应于屏障命令454。ftl438可以将屏障请求提供给屏障模块806。在一些实施方式中,屏障模块806可以从ftl438获取屏障请求。在一些示例中,屏障模块806可以结合屏障请求将屏障id提供给屏障模块806。例如,屏障id可以对应于参考图7描述的屏障id中的任何一个。

操作1000还可以包括在1028处初始化计数器。例如,计数器446的值450可以响应于屏障命令454的发出而被重置。

操作1000还包括在1032处提供屏障服务请求。作为说明性示例,屏障服务请求可以由屏障模块806提供给非易失性存储器404,诸如提供给可以被包括在第一存储器裸芯406或第二存储器裸芯408中的裸芯状态机。

操作1000还可以包括在1052处将完成消息提供给屏障模块806。可以在1064处递减计数器,诸如通过递减计数器446的值450。操作1000还可以包括在1072处发送完成消息(例如,发送到与图4的ftl438相关联的ftl邮箱)。例如,完成消息可以对应于图4的一个或多个消息426中的特定消息。

参考图11,描绘了数据存储设备的操作的方法的说明性示例,并且将其总体上标记为1100。在说明性示例中,方法1100由图1的数据存储设备102执行。

方法1100包括在1102发送第一数据以将第一数据存储在数据存储设备的非易失性存储器处。例如,控制器130可以发送第一数据120以将第一数据120存储在数据存储设备102的非易失性存储器104处。

方法1100还包括:在1104处,响应于发送第一数据以将第一数据存储在非易失性存储器处来生成更新的映射表。例如,控制电路140可以被配置为访问在易失性存储器144处的控制信息184,并且被配置为更新映射表186以生成更新的控制信息124。

方法1100还包括:在1106处,在生成更新的映射表之后并行地发送更新的映射表和第二数据以将更新的映射表和第二数据存储在非易失性存储器处。例如,控制器130可以发送第二数据122和更新的控制信息124到非易失性存储器104。

方法1100还包括:在1108处,在非阻塞操作(例如,其中存储器裸芯未被暂停的非阻塞cs操作)中由非易失性存储器存储更新的映射表和第二数据。为了说明,非易失性存储器104可以在对更新的控制信息124和第二数据122的进行存储期间继续操作(例如,在将更新的控制信息124写入非易失性存储器的cs操作期间没有“暂停”操作)。

参考图12,描绘了数据存储设备的操作的方法的说明性示例,并且将其总体上标记为1200。在说明性示例中,方法1200由图4的数据存储设备402执行。

方法1200包括在1202处将存储器命令的第一集合和屏障命令提供给数据存储设备的命令队列。例如,存储器命令的第一集合452和屏障命令454可以被提供给图4的命令队列442。

方法1200还包括:在1204处,响应于存储器命令的第一集合的运行,从数据存储设备的一个或多个存储器裸芯接收一个或多个消息。例如,存储器裸芯406、408可以响应于运行屏障命令454(并且在运行存储器命令的第一集合452之后)而提供一个或多个消息426。

方法1200还包括:在1206处,响应于一个或多个消息的数量满足阈值,发送映射表数据以将映射表数据存储在一个或多个存储器裸芯处。在运行存储器命令的第一集合之后,屏障命令的运行触发发送映射表数据以将映射表数据存储在一个或多个存储器裸芯处。为了说明,响应于一个或多个消息426的数量满足阈值448,控制器430可以将更新的映射表428发送到非易失性存储器404。

方法1200还可以包括:在非阻塞控制同步操作期间,对由非易失性存储器的存储器裸芯写入到非易失性存储器的用户数据执行连续处理。例如,在将映射表428存储到非易失性存储器404之后,非易失性存储器404可以执行一个或多个附加的非阻塞控制同步操作,诸如通过重新更新映射表428并以非阻塞方式将映射表428重新存储到非易失性存储器404中(例如,在对被写入到非易失性存储器404的用户数据执行连续处理并且没有“阻塞”将用户数据写入到非易失性存储器404时)。

在另一示例中,数据存储设备被配置为相对于控制同步操作异步地执行合并操作。合并操作和控制同步操作可以作为分离的非阻塞处理来执行。在特定示例中,图4的数据存储设备402被配置为相对于控制同步操作异步地执行合并操作。

由数据存储设备执行的控制同步操作可以包括将主表和对主表的更新写入到非易失性存储器(例如,通过将主表从易失性存储器复制到非易失性存储器)。例如,主表可以包括指向存储在非易失性存储器(经由在先的控制同步操作)的先前的逻辑到物理(logical-to-physical,l2p)地址“区块(chunk)”(或l2p映射表的一部分)的指针。主表还可以包括指示l2p映射表的更新的“更新层”(自在前的控制同步操作起)。l2p映射可以基于l2p区块内的数据加上来自“更新层”的可能的增量(delta)。增量也可以被存储在称为cat(cachedaddresstranslation,高速缓存地址转换)的l2p区块的高速缓存内。cat表可以存储在易失性存储器中,诸如存储在静态随机存取存储器(staticrandomaccessmemory,sram)中。在一些实施方式中,不存在“更新层”,并且更新被存储在cat内,其可以经由合并过程被定期驱逐到闪存(或被定期驱逐到另一非易失性存储器)。

合并操作可以包括将更新层的更新(或者存储在cat中的更新)融合到存储在非易失性存储器处的l2p区块中。可以执行合并操作以释放更新层中的空间或将cat更新融合到闪存(或融合到另一非易失性存储器)。例如,更新层可以变为“满”,并且可以通过将与更新层相关联的更新从易失性存储器复制到非易失性存储器来“疏散”更新层。

通过对合并操作和控制同步操作进行分离,操作可以“更薄”,并且可以更有效地并且使用更少的时间和处理资源来被实施。此外,在一些情况下,合并操作的频率(例如,更新层变“满”的频率)可能大于控制同步操作的频率。通过分离操作,可以减少用于执行“不必要的”控制同步操作的时间和处理资源(例如,通过比合并操作更不频繁地执行控制同步操作)。

如果cat尚未更新,则非阻塞合并操作可以使用包括将更新层疏散到cat表的原子技术。可以一起执行更新层的疏散(evacuation)和更新层的压缩(compaction)(在更新层疏散之后)。如果在非阻塞合并操作之后(并且在随后的控制同步操作之前)发生非正常关机(ugsd),则数据存储设备可以被“回滚”到控制表的先前版本指示的状态,其中该控制表的先前版本使用先前的控制同步操作被存储到非易失性存储器中。

作为分离操作并且在ugsd的情况下回滚到最后控制同步状态的结果,可以在cat区块正被存储到非易失性存储器的同时执行对cat的更新。因此,写入操作不需要在合并操作期间被停止或延迟(例如,“阻塞”)。相反,与写入操作相关联的更新可以在特定合并操作期间被写入到更新层和cat。更新可以在随后的操作期间被写入到非易失性存储器中。

为了进一步说明,在合并操作的示例中,可以更新映射表的sram副本,诸如通过修改更新层并且可选地通过修改cat表的对应l2p地址区块的sram高速缓存。为了使合并操作能够是非阻塞的,对更新层的更新可以每个区块以原子方式(例如,在数据存储设备的中央处理单元(centralprocessingunit,cpu)的操作期间)融合到cat表中。在将更新融合到cat表中之后,选择的cat区块可以被写入到非易失性存储器(例如,使用合并操作)。在执行合并操作的同时,可以运行对访问非易失性存储器的请求,诸如通过运行请求以将数据写入到非易失性存储器。因为合并操作将cat表(而不是更新层)写入到非易失性存储器,所以更新层可以在合并操作期间被修改(例如,通过修改更新层以指示更新的l2p地址映射作为运行请求的结果),并且更新层可以随后经由在合并操作之后执行的控制同步操作被写入到非易失性存储器。

在一些情况下,在合并操作期间接收到的特定请求可以指示合并操作所针对的地址。作为结果,更新可以被应用于也正在被写入到非易失性存储器(例如,经由合并操作)的特定高速缓存的l2p“区块”。在这种情况下,更新可以提前被写入到非易失性存储器(例如,在与特定请求相关联的主机数据被提交给非易失性存储器之前)。根据本公开的技术有利地允许这样的状况,因为仅在存在附加的控制同步操作的情况下才能在电力循环之后使用写入到非易失性存储器的新区块(作为指向在控制同步期间写入区块的指针)。控制同步操作应该将先前写入的数据提交给非易失性存储器,包括由特定请求指示的数据。

虽然前面的描述涉及更新层和cat表的特定示例,但是应该理解,本公开不限于这样的特定示例。为了说明,参考控制表和高速缓存的l2p部分的一部分来描述图13至图16的非阻塞合并操作。

参考图13,描绘了系统的特定说明性示例并且将其总体上标记为1300。系统1300包括数据存储设备1302和设备1380(例如,主机设备或访问设备)。数据存储设备1302被配置为执行非阻塞合并操作。

数据存储设备1302包括非易失性存储器1304和控制器1330。控制器1330被耦合到非易失性存储器1304。

非易失性存储器1304包括被包括在一个或多个存储器裸芯中的非易失性存储元件阵列。非易失性存储器1304的一个或多个方面可以如参考图1的非易失性存储器104、图4的非易失性存储器404、或其组合所描述的那样。在说明性示例中,非易失性存储器1304包括图1的第一存储器裸芯106、图1的第二存储器裸芯108、图4的第一存储器裸芯406、或图4的第二存储器裸芯408中的一个或多个。非易失性存储器1304包括一个或多个存储元件组,诸如代表块1306。

控制器1330包括到非易失性存储器1304的存储器接口1332,并且还包括到设备1380的设备接口1372(例如,主机接口)。控制器1330还可以包括闪存转换层(ftl)1338、计数器1346、计数器1352和易失性存储器1344。作为说明性示例,易失性存储器1344可以包括随机存取存储器(ram)。

易失性存储器1344被配置为存储与非易失性存储器1304相关联的控制表的第一副本1384。非易失性存储器1304可以被配置为存储控制表的第二副本1310。控制器1330可以基于在非易失性存储器1304处执行的写入操作来修改第一副本1384,并且随后可以基于对第一副本1384的改变来更新第二副本1310(例如,通过将第一副本1384的改变传播到第二副本1310)。

在操作期间,控制器1330可以从非易失性存储器1304检索控制信息。作为示例,响应于数据存储设备1302处的上电事件,控制器1330可以从非易失性存储器1304检索第一副本1384并且在易失性存储器1344处模式存储(例如,高速缓存)第一副本1384。

控制器1330可以从设备1380接收对访问非易失性存储器1304的一个或多个请求。例如,设备接口1372被配置为从设备1380接收对访问非易失性存储器1304的第一请求1376。在特定示例中,第一请求1376指示数据1374要被写入到非易失性存储器1304。控制器1330可以基于数据1374执行一个或多个操作,诸如通过对数据1374进行编码以生成经编码的数据并发送经编码的数据以将经编码的数据存储在非易失性存储器1304处。

在一些实施方式中,控制器1330的ftl1338被配置为响应于第一请求1376执行逻辑到物理(l2p)地址转换。例如,ftl1338可以被配置为在将数据1374存储到非易失性存储器1304之前,将与数据1374相关联的逻辑地址转换为与数据1374相关联的物理地址。

控制器1330被配置为响应于第一请求1376执行第一副本1384的部分1340(例如,更新层)的第一更新。例如,部分1340可以在修改第二副本1310以指示l2p地址转换之前指示l2p地址转换。作为特定示例,控制器1330在发起第二更新之前可以执行部分1340的第一更新以指示响应于运行第一请求1376而执行的特定的l2p地址转换,其中第二更新将l2p地址转换与第二副本1310合并。第一更新可以包括将特定条目添加到由部分1340指示的l2p地址映射的列表。

在一些实施方式中,控制器1330被配置为响应于运行第一请求1376而更新有效计数1350。例如,有效计数1350可以指示与非易失性存储器1304相关联的无效页面的数量,并且控制器1330可以响应于将与特定物理地址相关联的数据移动到非易失性存储器1304的另一物理地址来更新有效计数1350。

在响应于第一请求1376而执行第一副本1384的部分1340的第一更新之后,控制器1330可以基于第一更新在非易失性存储器1304处发起第二副本1310的第二更新。例如,第二更新可以被包括在原子合并操作1324中,以将与易失性存储器1344处的第一副本1384相关联的修改与非易失性存储器1304处的第二副本1310融合,诸如通过将更新1328存储到非易失性存储器1304以指示与第一副本1384相关联的修改。

在特定示例中,响应于检测到对第一副本1384进行的修改的数量满足阈值1348,控制器1330可以执行第二更新。为了说明,计数器1352可以被配置为存储值1354,该值1354指示自对第二副本1310的先前更新以来执行的对第一副本1384的修改的数量。响应于接收到第一请求1376,控制器1330可以被配置为修改(例如,递增)值1354并被配置为确定值1354是否满足阈值1348。作为非限制性说明性示例,阈值1348可以对应于10个修改、20个修改或另一数量的修改,并且控制器1330可以被配置为响应于检测到值1354大于或等于10、20或另一数量而执行第二更新。

在特定示例中,控制器1330被配置为响应于执行第二更新而在易失性存储器1344处执行压缩操作。例如,在执行第二更新之后,控制器1330可以“清除”(或“清空”)对应于部分1340的数据结构(例如,使随后的l2p条目能够被添加到部分1340)。

第二更新对于可以由数据存储设备1302执行的一个或多个其它操作是非阻塞的。例如,数据存储设备1302可以被配置为与第二更新并行地执行一个或多个操作。为了进一步说明,控制器1330被配置为与第二更新并行地运行(例如,而不是阻塞第二请求1378的执行,直到完成第二更新,反之亦然)对访问非易失性存储器1304的第二请求1378。作为说明性示例,第二请求1378可以指示将数据1377写入到非易失性存储器1304的写入操作,并且第二请求1378可以与执行第二更新并行地将数据1377写入到非易失性存储器1304。

控制器1330被配置为执行控制同步操作1322。控制同步操作1322可以包括将第一副本1384存储到非易失性存储器1304(例如,通过将对第一副本1384进行的改变与第二副本1310“融合”)。控制器1330可以被配置为执行控制同步操作1322以与原子合并操作1324独立地将控制表的第一副本1384复制到非易失性存储器1304。

控制同步操作1322可以将与第二更新相关联的改变“提交”到非易失性存储器1304。为了进一步说明,第二更新可以在原子基础上执行,其中第二更新成功或失败。控制同步操作1322的执行可以使得第二更新成功,诸如通过“提交”与第二更新相关联的改变。

可替换地,在一些状况下,第二更新可能失败。例如,在一些情况下,在控制同步操作1322之前可能发生非正常关机(ugsd)事件。ugsd事件可能导致存储在易失性存储器1344处的信息从数据存储设备1302中丢失。例如,在控制同步操作1322之前发生的ugsd事件可能导致第一副本1384从易失性存储器1344(以及从数据存储设备1302)中丢失。

控制器1330被配置为在第二更新之后检测ugsd事件并且被配置为在ugsd事件之后重新执行与第二更新相关联的操作。例如,第二副本1310可以指示非易失性存储器1304的最后打开的块,诸如块1306。控制器1330可以被配置为通过扫描块1306以识别在ugsd事件之前写入到非易失性存储器1304的数据(诸如通过识别数据1374、数据1377、或两者)来重新执行操作。作为说明性示例,控制器1330可以扫描数据1374、1377的元数据(例如,标头信息)以确定数据1374、1377在先前的控制同步操作(例如,将第一副本1384写入到非易失性存储器1304的控制同步操作)之后并且在ugsd事件之前被写入到非易失性存储器1304。

控制器1330可以被配置为响应于在ugsd事件之前识别被写入到非易失性存储器1304的数据来重新执行与第二更新相关联的一个或多个操作。例如,在从非易失性存储器1304检索到第一副本1384并将第一副本1384存储(例如,高速缓存)在易失性存储器1344处之后,控制器1330可以更新第二副本1310(例如,以生成第一副本1384)并且可以重新执行控制同步操作1322。

控制同步操作1322可以相对于来自设备1380的一个或多个请求而被阻塞。例如,控制器1330可以被配置为阻塞请求的运行,直到完成控制同步操作1322(或者反之亦然)。

控制同步操作1322可以包括将指针信息从易失性存储器1344复制到非易失性存储器1304,诸如通过复制指示存储控制表(例如,包括更新1328)的第二副本1310的非易失性存储器1304的位置的指针。在这种情况下,控制器1330被配置为更新控制表内的指针以指示控制表的第二副本1310在非易失性存储器1304中的位置。

参考图13描述的一个或多个方面可以使合并操作(例如,原子合并操作1324)能够以非阻塞方式执行,而没有由于ugsd事件而导致的数据丢失的风险。如果在执行“提交”控制同步操作的改变的合并操作之前发生ugsd事件,则可以在数据存储设备1302启动之后重新执行(或“重放”)更新操作的操作。因此,合并操作可以以非阻塞的方式执行,而没有由于ugsd事件而导致数据丢失的风险。

图14是示出可以在图13的数据存储设备1302处执行的操作的某些示例的框图。在特定示例中,在图14的顶部部分中示出了与控制器1330相关联的特征,并且在图14的底部部分中示出了与非易失性存储器1304相关联的特征。

图14描绘了第一副本1384的某些说明性方面(例如,控制表的当前版本)。例如,第一副本1384可以包括指针1404(例如,指示当前区的指针,也被称为l2p表的“区块(chunk)”或“部分”)、可用于新写入的空闲块的列表1408、以及部分1340。在特定示例中,部分1340包括(或对应于)具有地址修改的多个列表的更新数据结构,多个列表中的每一个对应于不同的一组逻辑块地址(logicalblockaddresse,lba)。例如,部分1340可以指示在非易失性存储器1304处执行但尚未合并的l2p转换的列表。

控制器1330还可以存储高速缓存的l2p部分1412(例如,cat表)。为了进一步说明,图14的示例描绘了高速缓存的l2p部分1412可以包括部分1、2、12、32、57和953。为了说明,每个l2p部分可以对应于lba的范围(例如,将逻辑地址的32兆字节(megabyte,mb)范围映射到物理地址的32千字节(kilobyte,kb)部分)并且可以包括对于lba的物理地址转换。因此,不是将整个l2p表从非易失性存储器1304复制到易失性存储器1344,而是可以将要更新的表的段复制到易失性存储器1334作为高速缓存的l2p部分1412。

非易失性存储器1304可以存储l2p表1416。在图14的说明性示例中,l2p表1416包括部分1、2、3、4、5、6、...、100000。例如,部分1可以包括用于第一逻辑地址的32mb范围(例如,0-32mb)的转换数据,部分2可以包括用于第二逻辑地址的32mb范围(例如,32-64mb)的转换数据等等。虽然示出了100000个部分(例如,支持3.2tb(terabyte,兆兆字节)的逻辑地址范围),但是在其它实施方式中,l2p表1416可以包括少于100000个部分或多于100000个部分,诸如基于非易失性存储器1304的存储容量和l2p部分中的每一个的大小。

非易失性存储器1304还存储更新1328。例如,更新1328可以经由原子合并操作1324被存储到非易失性存储器1304中。在图14的说明性示例中,更新1328包括部分2和12。

非易失性存储器1304还存储第二副本1310(例如,控制表的提交版本)。第二副本1310可以包括与第一副本1384相比是“旧的”或“过时的”信息(例如,尚未经由图13的控制同步操作1322与第一副本1384“同步”的信息)。例如,第二副本1310可以包括指示“旧的”l2p部分的指针1422。

为了说明,第二副本1310的指针1422可以指示(例如,指向)l2p表1416的部分1、2、3和4。在图14的示例中,第一副本1384的指针1404指示对部分2的更新。例如,与特定逻辑地址相关联的数据可以从第一物理地址被复制到第二物理地址,并且第一物理地址处的数据可以失效。作为结果,更新1328可以被写入到非易失性存储器1304(例如,经由原子合并操作1324)以指示第二物理地址(而不是第一物理地址)。在执行控制同步操作1322之前,存储在非易失性存储器1304处的控制信息可以指示“旧的”物理地址(第一物理地址)。在执行控制同步操作1322时,存储在非易失性存储器1304处的控制信息可以指示“正确的”物理地址(第二物理地址)。参考图15还详细地描述了包括图14的组件的操作的具体示例。

图14的示例示出了合并操作和控制同步操作可以在数据存储设备1302处分离地执行。作为结果,如果在执行控制同步操作之前发生ugsd事件,则合并操作的一个或多个操作可以被“重放”。

图15是示出可以在图13的数据存储设备1302处执行的操作1500的某些示例的梯形图。在图13的例子中,参考设备1380、ftl1338、控制表的第一副本1384和非易失性存储器1304来描述操作1500。

操作1500包括在1502处接收指示第一逻辑地址的第一写入命令。例如,第一写入命令可以对应于从图13的设备1380接收的特定请求。

操作1500还包括在1504处将第一l2p地址映射添加到第一副本1384的部分1340。例如,控制器1330可以更新部分1340以指示第一逻辑地址与非易失性存储器1304的第一物理地址相关联,诸如通过向部分1340添加条目以指示第一逻辑地址与第一物理地址相关联。

操作1500还包括在1506处执行与第一物理地址相关联的第一写入操作以运行第一写入命令。例如,数据存储设备1302可以将由第一写入命令指示的数据写入到非易失性存储器1304。

操作1500还包括在1508处接收指示第二逻辑地址的第二写入命令。例如,第二写入命令可以对应于图13的第一请求1376。

操作1500还包括在1510处将第二l2p地址映射添加到部分1340。例如,控制器1330可以更新部分1340以指示第二逻辑地址与非易失性存储器1304的第二物理地址相关联。诸如通过向部分1340添加条目以指示第二逻辑地址与第二物理地址相关联。

操作1500还包括在1512处执行与第二物理地址相关联的第二写入操作以运行第二写入命令。例如,数据存储设备1302可以将数据1374写入到非易失性存储器1304。

操作1500还包括在1514处从非易失性存储器1304的第一位置读取与第一逻辑地址相关联的第一l2p部分。例如,第一l2p部分可以从非易失性存储器1304中的l2p表1416中被检索并且可以被存储(例如,高速缓存)在高速缓存的l2p部分1412内的易失性存储器1344处。

操作1500还包括在1516处将第一逻辑地址的更新融合到第一l2p部分中。例如,控制器1330可以修改第一l2p部分以指示第一l2p地址映射(例如,通过将第一l2p地址映射与第一l2p部分融合以生成更新的第一l2p部分)。

操作1500还包括在1518处将更新的第一l2p部分写入非易失性存储器1304的第二位置。例如,数据存储设备1302可以从易失性存储器1344检索更新的第一l2p部分,并且可以将更新的第一l2p部分复制到非易失性存储器1304中的更新1328中(例如,用以指示与第一逻辑地址相关联的“正确的”l2p映射)。

操作1500还包括在1520处更新与第一l2p部分相关联的指针以指示第二位置。例如,可以更新指针1404中的第一指针以指示第二位置而不是第一位置(例如,用以指示第二位置存储与第一逻辑地址相关联的“正确的”映射)。

操作1500还包括在1522处从非易失性存储器1304的第三位置读取与第二逻辑地址相关联的第二l2p部分。例如,第二l2p部分可以从非易失性存储器1304中的l2p表1416中被检索并且可以被存储(例如,高速缓存)在高速缓存的l2p部分1412内的易失性存储器1344处。

操作1500还包括在1524处将对第二逻辑地址的更新融合到第二l2p部分中。例如,控制器1330可以修改第二l2p部分以指示第二l2p地址映射(例如,通过将第二l2p地址映射与第二l2p部分融合以生成更新的第二l2p部分)。

操作1500还包括在1532处将更新的第二l2p部分写入到非易失性存储器1304的第四位置。例如,数据存储设备1302可以从易失性存储器1344检索更新的第二l2p部分,并且可以将更新的第二l2p部分复制到非易失性存储器1304中的更新1328(例如,用以指示与第二逻辑地址相关联的“正确的”l2p映射)。在特定示例中,操作1532对应于参考图13描述的第二更新。

操作1500还包括在1534处更新与第二l2p部分相关联的指针以指示第二位置。例如,可以更新指针1404的第二指针以指示第四位置而不是第三位置(例如,用以指示第二位置存储与第二逻辑地址相关联的“正确的”映射)。

在图15的示例中,结合非阻塞合并操作1550执行操作1514、1516、1518、1520、1522、1524、1532和1534。非阻塞合并操作1550可以对应于参考图13描述的原子合并操作1324。

非阻塞合并操作1550可以与数据存储设备1302处的一个或多个其它操作并行地执行。为了说明,图15的示例示出了在非阻塞合并操作1550期间可以执行与写入过程1560相关联的一个或多个操作。写入过程1560的一个或多个操作可以在非阻塞合并操作1550期间执行,并且不延迟(或者“阻塞”)写入过程1560直到完成非阻塞合并操作1550。

为进一步说明,写入过程1560可以包括在1526处接收指示第三逻辑地址的第三写入命令。例如,第三写入命令可以对应于从图13的设备1380接收的第二请求1378。写入过程1560还可以包括在1528处将第三l2p地址映射添加到第一副本1384的部分1340。例如,控制器1330可以更新部分1340以指示第三逻辑地址与非易失性存储器1304的第三物理地址相关联,诸如通过向部分1340添加条目以指示第三逻辑地址与第三物理地址相关联。写入过程1560还可以包括在1530处执行与第三物理地址相关联的第三写入操作以运行第三写入命令。例如,数据存储设备1302可以将由第三写入命令指示的数据写入到非易失性存储器1304,诸如通过将数据1377写入到非易失性存储器1304。

在执行非阻塞合并操作1550之后,操作1500还可以包括执行控制同步操作1570。在特定示例中,控制同步操作1570对应于图13的控制同步操作1322。可以执行控制同步操作1570以“提交”非阻塞合并操作1550的操作(例如,使得非阻塞合并操作1550的操作“成功”)。

控制同步操作1570可以包括在1536处将部分1340写入到非易失性存储器1304。控制同步操作1570还可以包括在1538处将高速缓存的l2p部分1412写入到非易失性存储器1304,并且包括在1540处将指针1404写入到非易失性存储器1304。例如,部分1340、高速缓存的l2p部分1412和指针1404可以通过将图13的第一副本1384写入到非易失性存储器1304来被写入到非易失性存储器1304。

控制同步操作1570可以可选地包括在1542处将来自控制表的其它信息写入到非易失性存储器1304。作为说明性示例,可用于新写入的空闲块的列表1408可以被写入非易失性存储器1304。

控制同步操作1570还可以包括在1544处更新指针以指示更新的控制表。例如,可以更新由非易失性存储器1304存储的指针以指示在执行控制同步操作1570时存储第一副本1384的非易失性存储器的特定位置存储器1304。

图15的示例示出了可以以非阻塞方式执行合并操作以避免写入过程(诸如写入过程1560)的延迟(或“阻塞”)操作。作为结果,可以减少等待时间。

除了由非阻塞合并操作1550引起的等待时间减少之外,基于部分1340的结构可以引起额外的等待时间减少。例如,在部分1340包括lba映射的单一的、未分类的列表的实施方式中,定位用于合并的列表内的、与单一l2p部分(例如,指定范围内的所有lba)相对应的所有lba映射可以包括:重复地对于要基于部分1340中的条目来被修改的l2p部分中的每一个,在列表中相对大数量的条目上进行相对冗长的、线性时间搜索。

与这种线性时间搜索相关联的等待时间可以通过将部分1340布置为lba映射的多个列表来被减少。与多个列表中的每一个相关联的地址范围可以在列表当中交错。例如,第一列表可以跟踪与l2p表的第一l2p部分相对应的l2p映射,第二列表可以跟踪与l2p表的第二l2p部分相对应的l2p映射,等等,直到与l2p的部分256相对应的第256列表。第一列表还可以跟踪与部分257相对应的映射,第二列表还可以跟踪与部分258相对应的映射,等等。一般而言,列表数量“n”(n=1至256)可以跟踪对于部分n、n+256、n+512等的映射。因为访问非易失性存储器1304的每个过程可以访问存储器地址的不大于8千兆字节(gigabyte,gb)的范围,所以每个过程只会影响分配给列表中的每一个列表的单一部分。因此,包含与过程相关联的映射信息的每个列表仅包含单一部分的映射信息(例如,第一列表仅包含对于部分1的映射,而不包含对于部分257、513等的映射)。因此可以减少或消除与部分1340的单一列表结构相关联的线性时间搜索。应该理解,列表(256)的数量和过程的地址范围(8gb)仅仅是说明性的,并且其它实施方式可以包括其它数量的列表和其它范围的地址。

图16描绘了可以由数据存储设备执行的操作1600的某些说明性示例。例如,可以由图13的数据存储设备1302执行图16的操作。

操作1600包括在1602处与主机通信。例如,数据存储设备1302可以接收对访问非易失性存储器1304的一个或多个请求,诸如通过接收第一请求1376。

操作1600还包括对易失性存储器中的更新层(u-层)的第一m-集合(m-集合1)和第二m-集合(m-集合2)执行更新,例如,控制器1330可以被配置为响应于第一请求1376更新由易失性存储器1344处的部分1340指示的l2p映射。

操作1600还包括执行原子疏散和压缩以将u-层并行地疏散和压缩到易失性存储器中的高速缓存的地址转换表(cat)(例如,用以生成m-集合1*和m-集合2*)。例如,控制器1330可以被配置成将部分1340疏散并压缩到缓存的l2p部分1412。

操作1600还包括在1608处执行非阻塞异步合并(例如,用以将m-集合1*和m-集合2*写入到闪存或其它非易失性存储器)。

例如,控制器1330可以被配置为执行原子合并操作1324或非阻塞合并操作1550。

操作1600还包括:在下一非阻塞控制同步操作(例如,控制同步操作1322、1570中的任一个)中,将包括指向新的更新的m-集合(例如,指向m-集合1*、2*)的指针的日志1620写入到非易失性存储器。与指示“旧的”m-集合(m-集合1、2)的“旧的”日志1610相比,更新指向新的更新的m-集合的指针可以更新日志。日志1610包括指向“旧的”m-集合(m-集合1、2)的指针,并且日志1620包括指向“新的”m-集合(m-集合1*、2*)的指针。例如,日志1610、1620可以分别对应于控制表的副本1310、1384,并且控制表的第二副本1310可以基于控制表的第一副本1384来被更新。如图14的示例中所描绘,第二副本1310可以包括指向“旧的”l2p部分的指针1422,并且第一副本1384可以包括指向“当前”l2p部分的指针1404。

非阻塞控制同步操作可以使用屏障命令以非阻塞方式执行。例如,屏障命令可以对应于图4的屏障命令454。屏障命令可以使被写入到非易失性存储器中的数据和控制信息能够一致。

操作1600可以可选地包括检测ugsd事件。在这种情况下,可以回滚和恢复控制表,诸如通过从非易失性存储器检索最后存储的日志并将最后存储的日志写入易失性存储器。在这种情况下,由控制器在易失性存储器u-层和cat中已经执行的最近更新将会丢失并被忽略,而不丧失一致性。

图17是设备的操作的方法1700的特定说明性示例的流程图。例如,方法1700可以由图13的数据存储设备1302来执行。

方法1700包括在1702处由第一设备从第二设备接收第一请求以执行对第一设备的非易失性存储器的第一写入操作。例如,第一设备可以对应于数据存储设备1302并且第二设备可以对应于设备1380。数据存储设备1302可以接收第一请求1376以将数据1374从设备1380写入到非易失性存储器1304。

方法1700还包括在1704处响应于执行第一写入操作而执行被存储在第一设备的易失性存储器处的控制表的第一副本的一部分的第一更新。例如,数据存储设备1302可以更新易失性存储器1344处的信息,诸如通过执行图15的操作1504或操作1510。

方法1700还包括在1706处在非易失性存储器处执行控制表的第二副本的第二更新以将对第一副本的修改传播到第二副本。例如,数据存储设备1302可以执行原子合并操作1324或非阻塞合并操作1550以将与第一写入操作相关联的l2p映射从易失性存储器1344写入到非易失性存储器1304,诸如通过执行图15的操作1518或操作1532。

方法1700还包括在1708处在执行第二更新期间执行对非易失性存储器的第二写入操作。例如,第二写入操作可以对应于基于第二请求1378执行的写入操作。作为另一示例,第二写入操作可以对应于图15的操作1530。

结合所描述的实施例,一种装置包括非易失性存储器(例如,非易失性存储器1304)和耦合到非易失性存储器的控制器(例如,控制器1330)。控制器包括易失性存储器(例如,易失性存储器1344)并且被配置为执行分离的非阻塞控制同步操作(例如,控制同步操作1322、1570)和非阻塞合并操作(例如,原子合并操作1324中的一个或多个、非阻塞合并操作1550或非阻塞异步合并1606)。

控制器可以被配置为按照更新层填满状态所要求的、相对于非阻塞控制同步操作以不同速率异步地执行非阻塞合并操作。例如,响应于检测到对部分1340的修改的数量1354满足阈值1348,控制器1330可以执行非阻塞合并操作(例如,响应于基于数量1354检测到部分1340的“填满状态”,控制器1330可以“疏散”部分1340)。非阻塞合并操作可以与非阻塞控制同步操作独立地(并且以与非阻塞控制同步操作相比不同的频率)发生。

非阻塞合并操作可以是原子操作,其包括将更新层(u-层)并行地疏散和压缩到易失性存储器中的高速缓存的地址转换表(cat)。例如,部分1340可以被并行地疏散和压缩到易失性存储器1344处的高速缓存的l2p部分1412。

控制器可以被配置为继续执行对易失性存储器中的u-层和cat(例如,对高速缓存的l2p区块,在本文中也被称为“m-集合”)的更新,更新的m-集合被写入到闪存或其它非易失性存储器。在此示例中,执行相对于一个或多个其它操作非阻塞的(例如,没有阻塞将更新的控制表写入到非易失性存储器,如在同步地执行控制同步操作和合并操作的某些设备中)合并操作。

控制器可以被配置为继续与非阻塞合并操作和非阻塞控制同步操作并行地执行对非易失性存储器的主机写入操作。例如,第二请求1378可以与非阻塞合并操作和非阻塞控制同步操作并行地被运行。

控制器可以被配置为:使用屏障命令在下一非阻塞控制同步操作中更新包括指向新的更新的m-集合的指针的日志并将日志存储在非易失性存储器中。屏障命令可以使被写入到非易失性存储器的数据和控制数据一致。为了说明,日志可以对应于第二日志1620,并且屏障命令可以对应于图4的屏障命令454。

控制器可以被配置为:在非正常关机(ugsd)事件的情况下,根据来自非易失性存储器中最后存储的控制同步的最后存储的日志来将控制表回滚和恢复到易失性存储器,并且在这种情况下,由控制器已经在u-层和cat中执行的最近更新将会丢失并被忽略,而不丧失一致性。例如,“回滚”可以包括从非易失性存储器1304检索第二副本1310并且将第二副本1310存储到易失性存储器1344。

结合所描述的实施例,一种装置包括非易失性存储器(例如,非易失性存储器1304)和耦合到非易失性存储器的控制器(例如,控制器1330)。控制器包括易失性存储器(例如,易失性存储器1344)并且被配置为执行非阻塞控制同步操作(例如,控制同步操作1322、1570)。控制器还被配置为相对于非阻塞控制同步操作异步地执行非阻塞合并操作(例如,原子合并操作1324、非阻塞合并操作1550或非阻塞异步合并1606中的一个或多个)。在特定说明性示例中,非阻塞合并操作是原子操作,该原子操作包括将更新层(例如,部分1340)并行地疏散和压缩到易失性存储器中的高速缓存的地址转换表(例如,高速缓存的l2p部分1412)。控制器可以被配置为(例如,通过运行第二请求1378)执行与非阻塞合并操作并行的对非易失性存储器的主机写入操作。

结合所描述的实施例,一种装置包括用于存储数据的装置(例如,非易失性存储器1304)。这种装置还包括用于从访问设备(例如,从设备1380)接收对访问用于存储数据的装置的第一请求(例如,第一请求1376)的装置(例如,设备接口1372)。这种装置还包括用于存储与用于存储数据的装置相关联的控制表的第一副本(例如,第一副本1384)的部分(例如,部分1340)的装置(例如,易失性存储器1344)。这种装置还包括用于响应于第一请求执行控制表的第一副本的部分的第一更新、用于基于第一更新在用于存储数据的装置处发起控制表的第二副本的第二更新、以及用于与所述第二更新并行地执行对访问用于存储数据的装置的第二请求(例如,第二请求1378)的装置(例如,控制器1330)。在说明性示例中,这种装置还包括用于将控制表的第一副本的更新的部分提供给用于存储数据的装置的装置(例如,存储器接口1332)。

虽然本文描绘的各种组件被示出为块组件并且用一般术语描述,但是这样的组件可以包括被配置为使得这样的组件能够执行本文描述的一个或多个操作的一个或多个微处理器、状态机或其它电路。例如,控制器130、430和1330的一个或多个方面可以表示物理组件,诸如硬件控制器、状态机、逻辑电路或其它结构,以使控制器130、430和1330能够执行非阻塞操作。

可替换地或额外地,数据存储设备102、402和1302的某些方面可以使用微处理器或微控制器来实施。在特定实施例中,控制器130、430和1330的一个或多个方面可以使用运行存储在非易失性存储器104、404和1304处的指令(例如,固件)的处理器来实施。可替换地,或者额外地,由处理器运行的可运行指令可以被存储在不是非易失性存储器104、404和1304的一部分的分离的存储器位置处,诸如在可以被包括在控制器130、430和1330中的只读存储器(rom)处。

数据存储设备102、402和1302可以被耦合、附接到或嵌入到一个或多个访问设备内,诸如在设备180的外壳内。例如,数据存储设备102、402和1302可以根据联合电子设备工程委员会(jointelectrondevicesengineeringcouncil,jedec)固态技术协会通用闪存(solidstatetechnologyassociationuniversalflashstorage,ufs)配置被嵌入在设备180、480和1380内。为了进一步说明,数据存储设备102、402和1302可以被集成在电子设备(例如,设备180或设备480)内,诸如移动电话、计算机(例如,膝上型计算机、平板计算机、或笔记本电脑)、音乐播放器、视频播放器、游戏设备或操作台、电子书阅读器、个人数字助理(personaldigitalassistant,pda)、便携式导航设备、或使用内部非易失性存储器的其它设备。

在一个或多个其它实施方式中,数据存储设备102、402和1302可以在被配置为选择性地耦合到一个或多个外部设备(诸如主机设备)的便携式设备中实施。例如,数据存储设备102、402和1302可以从设备180、480和1380(即,“可移除地”耦合到设备180、480和1380)移除。作为示例,数据存储设备102、402和1302可以根据可移除通用串行总线(universalserialbus,usb)配置可移除地耦合到设备180、480和1380。

设备180、480和1380可以对应于移动电话、计算机(例如,膝上型计算机、平板计算机或笔记本计算机)、音乐播放器、视频播放器、游戏设备或操作台、电子书阅读器、个人数字助理(pda)、便携式导航装置、另一电子设备、或其组合。设备180、480和1380可以经由控制器进行通信,其可以使设备180、480和1380能够与数据存储设备102、402和1302进行通信。设备180、480和1380可以遵照jedec固态技术协会行业规范,诸如嵌入式多媒体卡(multimediacard,emmc)规范或通用闪存存储器(universalflashstorage,ufs)主机控制器接口规范。作为说明性示例,设备180、480和1380可以遵照一个或多个其它规范(诸如安全数字(securedigital,sd)主机控制器规范)进行操作。可替换地,设备180、480和1380可以根据另一通信协议与数据存储设备102、402和1302进行通信。在一些实施方式中,作为说明性示例,数据存储设备102、402和1302可以被集成在网络可访问的数据存储系统(诸如企业数据系统、nas系统、或云数据存储系统)内。

在一些实施方式中,数据存储设备102、402和1302中的一个或两个可以包括固态驱动器(solidstatedrive,ssd)。作为说明性的、非限制性的示例,数据存储设备102、402和1302中的一个或两个可以用作嵌入式存储驱动器(例如,移动设备的嵌入式ssd驱动器)、企业存储驱动器(enterprisestoragedrive,esd)、云存储设备、网络附加存储(network-attachedstorage,nas)设备或客户端存储设备)。在一些实施方式中,数据存储设备102、402和1302中的一个或两个可以经由网络被耦合到设备180、480和1380。例如,网络可以包括数据中心存储系统网络、企业存储系统网络、存储区域网络、云存储网络、局域网(localareanetwork,lan)、广域网(wideareanetwork,wan)、互联网、和/或其它网络。

为了进一步说明,作为说明性示例,数据存储设备102、402和1302中的一个或两个可以被配置为被耦合到设备180、480和1380作为嵌入式存储器,诸如与嵌入式多媒体卡()(弗吉尼亚州阿灵顿的jedec固态技术协会的商标)配置。数据存储设备102、402和1302中的一个或两个可以对应于emmc设备。作为另一示例,数据存储设备102、402和1302中的一个或两个可以对应于存储器卡,诸如安全数字()卡、卡、minisdtm卡(特拉华州威尔明顿sd-3cllc的商标)、multimediacardtm(mmctm)卡(弗吉尼亚州阿灵顿的jedec固态技术协会的商标)、或(cf)卡(加利福尼亚州米尔皮塔斯sandisk公司的商标)。数据存储设备102、402和1302中的一个或两个可以遵照jedec行业规范进行操作。例如,数据存储设备102、402和1302可以遵照jedecemmc规范、jedec通用闪存存储器(ufs)规范、一个或多个其它规范、或其组合来进行操作。

非易失性存储器104、404和1304可以包括电阻式随机存取存储器(reram)、快闪存储器(例如,nand存储器、nor存储器、单级单元(slc)快闪存储器、多级单元(mlc)快闪存储器、分位线nor(dividedbit-linenor,dinor)存储器、and存储器、高电容耦合比(highcapacitivecouplingratio,hicr)设备、非对称非接触晶体管(asymmetricalcontactlesstransistor,act)设备、或另一闪存)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、只读存储器(rom)、一次性可编程存储器(one-timeprogrammablememory,otp)、另一类型的存储器、或其组合。非易失性存储器104、404和1304可以包括半导体存储设备。

半导体存储器设备包括易失性存储器设备(诸如动态随机存取存储器(dynamicrandomaccessmemory,“dram”)或静态随机存取存储器(staticrandomaccessmemory,“sram”)设备)、非易失性存储器设备(诸如电阻式随机存取存储器(“reram”)、磁阻式随机存取存储器(magnetoresistiverandomaccessmemory,“mram”)、电可擦除可编程只读存储器(electricallyerasableprogrammablereadonlymemory,“eeprom”)、快闪存储器(其也可以被认为是eeprom的子集)、铁电随机存取存储器(ferroelectricrandomaccessmemory,“fram”)、以及能够存储信息的其它半导体元件。每种类型的存储设备可以具有不同的配置。例如,快闪存储器设备可以以nand或nor配置来配置。

存储器设备可以由无源和/或有源元件以任何组合形成。作为非限制性示例,无源半导体存储器元件包括reram设备元件,其在一些实施例中包括诸如反熔丝、相变材料等的电阻率切换存储元件,以及可选地包括诸如二极管等的转向元件(steeringelement)。另外,作为非限制性示例,有源半导体存储器元件包括eeprom和快闪存储器设备元件,在一些实施例中,快闪存储器设备元件包括包含电荷区的元件,诸如浮栅、导电纳米颗粒或电荷存储介电材料。

多个存储器元件可以被配置为使得它们串联连接或者使得每个元件可单独访问。作为非限制性示例,nand配置(nand存储器)中的快闪存储器设备通常包含串联连接的存储器元件。nand存储器阵列可以被配置为使得阵列由多个存储器串组成,其中串由共享单一位线的多个存储器元件构成并且作为一组来访问。可替换地,存储器元件可以被配置为使得每个元件都是单独可访问的,例如,nor存储器阵列。nand和nor存储器配置是示例性的,并且可以以其它方式配置存储器元件。

位于衬底内和/或上方的半导体存储器元件可以以二维或三维布置,诸如二维存储器结构或三维存储器结构。在二维存储器结构中,半导体存储器元件被布置在单一平面或单一存储器设备级中。通常地,在二维存储器结构中,存储器元件被布置在大体上平行于支撑存储器元件的衬底的主表面延伸的平面(例如,在x-z方向平面中)。衬底可以是在其上或其中形成存储元件的层的晶圆,或者可以是在存储元件形成之后附着到存储元件的载体衬底。作为非限制性示例,衬底可以包括诸如硅的半导体。

存储器元件可以按照有序阵列(诸如以多个行和/或列)布置在单一存储器设备级中。然而,存储器元件可以以非规则或非正交配置来布置。存储器元件可以每个具有两个或多个电极或接触线,诸如位线和字线。

三维存储器阵列被布置成使得存储器元件占据多个平面或多个存储器设备级,从而形成三维的结构(即,在x、y和z方向上,其中y方向大体上垂直于衬底的主表面,并且x和z方向基本平行于衬底的主表面)。作为非限制性示例,三维存储器结构可以被垂直地布置为多个二维存储器设备级的堆叠。作为另一个非限制性示例,三维存储器阵列可以被布置成多个垂直列(例如,大体上垂直于衬底的主表面,即在y方向上),其中每个列具有在每个列中的多个存储器元件。列可以以二维配置(例如,在x-z平面中)被布置,使得存储器元件的三维布置具有在多个垂直堆叠的存储器平面上的元件。三维存储器元件的其它配置也可以构成三维存储器阵列。

作为非限制性的示例,在三维nand存储器阵列中,存储器元件可以被耦合在一起以形成单一水平面(例如,x-z)存储器设备级内的nand串。可替换地,存储器元件可以被耦合在一起以形成穿过多个水平面存储器设备级的垂直nand串。能够预想其它三维配置,其中一些nand串包含单一存储器级中的存储器元件,而其它串包含跨越多个存储器级的存储器元件。也可以以nor配置和reram配置来设计三维存储器阵列。

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

可替换地,可以分离地形成二维阵列,然后封装在一起以形成具有多层存储器的非单片存储器设备。例如,能够通过在分离的衬底上形成存储器级并且然后将存储器级堆叠在彼此顶部来构建非单片堆叠存储器。衬底可以在堆叠之前减薄或从存储器设备级去除,但是当存储器件级最初形成在分离的衬底上时,所得到的存储器阵列不是单片三维存储器阵列。另外,多个二维存储器阵列或三维存储器阵列(单片或非单片)可以被形成在分离的芯片上,然后被封装在一起以形成堆叠芯片的存储器设备。

存储器元件的操作和与存储器元件的通信通常需要相关电路。作为非限制性示例,存储器设备可以具有用于控制和驱动存储器元件以完成诸如编程和读取的功能的电路。此相关电路可以在与存储器元件相同的衬底上和/或在分离的衬底上。例如,用于存储器读取-写入操作的控制器可以位于分离的控制器芯片上和/或位于与存储器元件相同的衬底上。

本领域技术人员将认识到,本公开不限于所描述的二维和三维示例性结构,而是覆盖在本文所述的并且如本领域技术人员所理解的本公开的精神和范围内的所有相关存储器结构。本文描述的实施例的例示意图提供对各种实施例的一般理解。可以从本公开中利用和推导出其它实施例,使得可以在不脱离本公开的范围的情况下做出结构的和逻辑的替换和改变。本公开意图覆盖各种实施例的任何和所有随后的适应或变化。本领域技术人员将认识到这样的修改是在本公开的范围内。

以上公开的主题将被认为是例示性的而不是限制性的,并且所附权利要求意图覆盖落入本公开的范围的所有这样的修改、增强、和其它实施例。因此,到法律所允许的最大程度,本发明的范围要由对所附权利要求及其等同物的最宽的可允许解释来确定,并且不应该被前述详细描述所约束或限制。

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