利用自适应写缓冲区释放的存储介质编程的制作方法

文档序号:21550367发布日期:2020-07-21 10:55阅读:190来源:国知局
利用自适应写缓冲区释放的存储介质编程的制作方法

相关申请的交叉引用

本公开要求2019年1月11提交的美国临时专利申请no.62/791,542的优先权以及2020年1月8日递交的美国专利申请no.16/737,137的优先权,它们的全部内容通过引用而并入本文。



背景技术:

许多计算和电子设备都包括用于存储软件、应用或设备数据的非易失性存储器。附加地,大多数用户通过数据网络从各个位置或在移动中利用其设备(诸如多介质内容或社交介质应用)来流式传输数据或访问服务。随着用户对数据和服务的需求不断增长,存储提供方已扩大了存储驱动器的容量和性能,以支持与用户和其他数据存储客户端的这些活动相关联的数据访问。通常,设备的存储驱动器包括设备数据写其中的存储介质。为此,设备向存储驱动器发出写命令,存储驱动器又如由每个命令所指定的来将数据写存储介质。因此,存储驱动器的写性能通常取决于存储驱动器能够完成设备或存储客户端的数据写命令的速率。

存储驱动器通常包括写缓冲区,以用于从设备接收与写命令相对应的数据。然后,存储驱动器将数据从写缓冲区发送到存储介质的编程接口。然而,存储介质的编程或写速度通常比写缓冲区的速度慢得多。附加地,大多数存储驱动器在写缓冲区中保留数据的副本,直到数据被成功编程到存储介质上,以在存储介质编程失败并且数据丢失时实现恢复数据。这样,由于存储介质较慢的编程速度,因此存储驱动器的写缓冲区可能会长时间被保留或占用。这防止了写缓冲区接收后续数据,直到存储介质编程完成为止,这会降低存储驱动器的写吞吐量,或需要增加数量的写缓冲区来维护写吞吐量。



技术实现要素:

提供本发明内容以介绍主题,该主题将在具体实施方式和附图中进一步被描述。因此,该本发明内容不应当被视为描述基本特征,也不应当被用于限制要求保护的主题的范围。

在一些方面,存储介质系统的介质写管理器实现了一种方法,该方法将从包括存储介质的存储系统的主机接口所接收的数据存储到写缓冲区中。该方法经由基于奇偶校验的编码器来确定针对存储到写缓冲区的数据的奇偶校验信息。备选地或附加地,数据可以被传递到存储介质系统的另一内部缓冲区。然后,响应于对针对数据的奇偶校验信息的确定完成,写缓冲区被释放。该方法还包括在写缓冲区从存储数据中被释放之后,数据的至少一部分被写到存储系统的存储介质。

在其他方面,一种装置包括:主机接口,其被配置为与主机系统通信;写缓冲区,其可操作地耦合到主机接口;存储介质;以及介质接口,其被配置为允许访问存储介质。该装置还包括基于奇偶校验的编码器和介质写管理器,该介质写管理器被配置为经由写缓冲区中的一个写缓冲区从主机接口接收数据。介质写管理器经由基于奇偶校验的编码器计算针对由写缓冲区所接收的数据的奇偶校验信息,并且将奇偶校验信息存储到基于奇偶校验的编码器的缓冲区。响应于对针对数据的奇偶校验信息的计算,介质写管理器释放写缓冲区,并且在写缓冲区从存储数据中被释放之后,数据的至少一部分被写到装置的存储介质。

在其他方面,描述了一种片上系统(soc),其包括与主机系统通信的主机接口、可操作地与主机接口耦合的写缓冲区、用以访问存储系统的存储介质的介质接口以及基于奇偶校验的编码器。soc还包括基于硬件的处理器和存储处理器可执行指令的存储器,该指令可响应于基于硬件的处理器的执行而实现介质写管理器,以将从主机接口所接收的数据存储到写缓冲区。介质写管理器还经由基于奇偶校验的编码器来确定针对被存储到写缓冲区的数据的奇偶校验信息,并且响应于对针对数据的奇偶校验信息的确定而释放写缓冲区。然后,在写缓冲区从存储数据中被释放之后,介质写管理器将数据的至少一部分写到存储介质。

在附图和以下说明书中阐述了一个或多个实现的细节。根据说明书和附图以及根据权利要求书,其他特征和优点将是明显的。

附图说明

在附图和以下详细说明中,阐述了利用自适应写缓冲区释放的存储介质编程的一个或多个实现的详细信息。在附图中,附图标记的最左边的数字标识该附图标记首次出现的附图。在描述和附图中的不同实例中使用相同的附图标记指示相似的元素:

图1示出了根据本公开的一个或多个方面的示例操作环境,该示例操作环境具有在其中介质写管理器被实现的设备。

图2示出了固态驱动器的示例配置,在其中图1的介质写管理器、写缓冲区和独立磁盘冗余阵列(raid)编码器根据各个方面被实现。

图3示出了各种硬件和固件组件的示例配置,以用于利用自适应写缓冲区释放来实现存储介质编程的各方面。

图4a至图4e示出了在管芯级数据冗余的上下文中利用自适应写缓冲区释放的存储介质编程的示例。

图5a至图5d示出了在平面级数据冗余的情况下利用自适应写缓冲区释放的存储介质编程的示例。

图6描绘了根据一个或多个方面的利用自适应写缓冲区释放的存储介质编程的示例方法。

图7描绘了用于基于奇偶校验信息的计算来释放写缓冲区的示例方法。

图8描绘了用于利用基于奇偶校验的数据重建来从编程故障中恢复的示例方法。

图9示出了示例片上系统(soc)环境,在其中利用自适应写缓冲区释放的存储介质编程的各个方面可以被实现。

图10示出了根据本公开的一个或多个方面的示例存储系统控制器,在其中介质写管理器被实现。

具体实施方式

用于将数据写入到存储介质的传统技术通常将数据保持在写缓冲区中,直到数据被编程到存储介质上为止,这导致存储驱动器的写吞吐量降低或对写缓冲区的要求增加(例如,写缓冲区的数目或大小)。通常,存储驱动器固件被用于以端对端的方式来管理存储驱动器的数据路径,诸如通过转换数据命令并且管理沿着主机接口和存储介质接口之间的数据路径的数据移动。例如,固件可以处理写命令以在主机接口处接收对应的数据,并且将该数据发送到存储介质接口以用于编程到存储介质的适当区域。

许多存储驱动器以“高速缓存开启”模式操作,在该模式中,一旦写命令的数据由存储驱动器的控制器接收到,固件就会向主机发送针对写命令的确认。通常,优选高速缓存开启模式,因为高速缓存开启模式中的写命令延时较短,并且主机无需较快地保持数据。在高速缓存开启模式中,固件通常将数据保持在控制器的写缓冲区中,直到确认从存储介质被接收到为止,该确认指示将数据传递到存储介质的程序操作是成功的。这是必要的,因为在程序故障的情况下(例如,错误的字线或错误的块),固件仍具有数据,并且可能尝试将数据重新编程到存储介质中。

然而,与通过写缓冲区的数据的典型传输时间(其是几十微秒的量级)相比,对存储介质进行编程花费相对较长的时间(三毫秒)。换言之,从主机接收到的数据占据写缓冲区的时长延长了,这主要因为编程故障的偶然性,这是罕见的事件。附加地,由于实际问题,诸如布局面积、数据路径架构、功耗、成本等,由控制器所实现的写缓冲区的数目通常被限制。当控制器的有限写缓冲区不断被等待编程确认的数据占用时,控制器将无法从主机接收附加的数据,直到写缓冲区变为可用为止。这样,写缓冲区的有限数目且低效率利用会给写吞吐量强加上限,并且可以对存储驱动器的写性能产生负面影响。

本公开描述了用于利用自适应写缓冲区释放的存储介质编程的装置和技术。与用于写到存储介质的传统技术相反,所描述的装置和技术可以实现用于存储介质的数据写方案,该数据写方案包括基于奇偶校验的编码(例如,raid),以在存储介质编程故障的情况下实现数据恢复。通过这样做,一旦奇偶校验信息被计算以用于被写到存储介质的数据,存储控制器的介质写管理器就可以释放写缓冲区。备选地或附加地,在计算奇偶校验信息之前或同时,数据可以被传递到存储介质系统的另一内部缓冲区。换言之,当奇偶校验信息(例如,xor信息)的raid计算完成时(例如,数十微秒),写缓冲区被释放,而不是一直保持直到编程成功确认从存储介质被接收到为止(例如,三毫秒)。备选地或附加地,写缓冲区的释放也可以以数据从写缓冲区被复制到存储系统的另一内部缓冲区或用于编程到存储介质的存储介质接口为条件。一旦被释放,则在一些情况下,当先前保持的数据被编程到存储介质的同时,写缓冲区可以从主机接收后续数据。这样,写缓冲区的自适应释放可以导致较有效的写缓冲区利用率和/或使得存储驱动器利用较少或较小的写缓冲区被实现。写缓冲区或写缓冲区大小的这种减小可以进而减小存储控制器的功耗,有利于改进的集成电路布局等。

在利用自适应写缓冲区释放的存储介质编程的各个方面,存储介质系统的介质写管理器将从主机接口所接收的数据存储到写缓冲区。在数据被存储在写缓冲区中的同时,介质写管理器确定针对数据的奇偶校验信息,然后在确定针对数据的奇偶校验信息完成时释放写缓冲区。然后,在写缓冲区被释放之后,介质写管理器可以将数据的至少一部分写到存储介质。通过在确定奇偶校验信息之后释放存储介质系统的写缓冲区,写缓冲区可以较快地自由,这可以引起改进的写缓冲区利用率和增加的存储介质系统的写吞吐量。

以下讨论描述了操作环境、可以在操作环境中采用的技术、以及在其中可以体现操作环境的组件的片上系统(soc)。在本公开的上下文中,仅通过示例的方式参考操作环境。

操作环境

图1示出了具有主机系统102的示例操作环境100,主机系统102能够存储或访问各种形式的数据或信息。主机系统102的示例可以包括膝上型计算机104、台式计算机106和服务器108,其中任何一项可以被配置作为用户设备、计算设备或作为存储网络或云存储的一部分。主机系统102的其他示例(未示出)可以包括平板计算机、机顶盒、数据存储设备、可穿戴智能设备、电视、内容流设备、高清多媒体接口(hdmi)介质棒、智能家电、家庭自动化控制器、智能恒温器、物联网(iot)设备、移动互联网设备(mid)、网络附加存储(nas)驱动器、聚合存储系统、游戏机、汽车娱乐设备、汽车计算系统、汽车控制模块(例如发动机或动力传动控制模块)等。通常,主机系统102可以出于任何合适的目的通信或存储数据,诸如以实现特定类型的设备的功能、提供用户界面、启用网络访问、实现游戏应用、回放介质、提供导航、编辑内容、提供数据存储等。

主机系统102包括处理器110和计算机可读介质112。处理器110可以被实现为任何合适类型或数目的单核或多核的处理器,以用于执行操作系统的指令或命令或主机系统102的其他应用。计算机可读介质112(crm112)包括存储器(未示出)和主机系统102的存储系统114。主机系统102的存储器可以包括任何合适的类型的易失性存储器或非易失性存储器或其组合。例如主机系统102的易失性存储器可以包括各种类型的随机存取存储器(ram)、动态ram(dram)、静态ram(sram)等。非易失性存储器可以包括只读存储器(rom)、电可擦除可编程rom(eeprom)或闪存(例如nand闪存)。这些存储器个体地或组合地可以存储与用户、应用和/或主机系统102的操作系统相关联的数据。

主机系统102的存储系统114可以被配置为任何合适类型的数据存储系统,诸如存储设备、存储驱动器、存储阵列、存储卷等。尽管参考主机系统102进行了描述,但是存储系统114也可以单独地被实现为独立设备或较大存储集合体的一部分,诸如网络附接的存储设备、外部存储驱动器、数据中心、服务器群或虚拟存储系统(例如,用于基于云的存储或服务)。存储系统114的示例包括非易失性存储器快速(nvme)固态驱动器116、外围组件互连快速(pcie)固态驱动器118、固态驱动器120(ssd120)和存储器阵列122,其可以利用存储设备或存储驱动器的任何组合来实现。

存储系统114包括存储介质124和用于管理存储系统114的各种操作或功能的存储介质控制器126(存储控制器126)。存储介质124可以包括非易失性存储设备,或从其被形成,数据128或主机系统102的信息被存储在该非易失性存储设备上。存储介质124可以利用诸如闪存、nand闪存、ram、dram(例如,用于高速缓存)、sram等的任何类型的固态存储介质或其组合来实现。在一些情况下,被存储到存储介质124的数据128被组织成数据(例如,内容)文件或数据对象,其被存储到存储系统114并且由主机系统102访问。数据128的文件类型、大小或格式可能根据与文件关联的相应来源、用途或应用而有所不同。例如存储到存储系统114的数据128可以包括音频文件、视频文件、文本文件、图像文件、多媒体文件、电子表格等。尽管参考固态存储器进行了描述,但是利用自适应写缓冲区释放的存储介质编程的各方面也可以被植入基于磁性或基于光学的介质类型。

通常,存储控制器126管理存储系统114的操作,并且使得主机系统102能够访问存储介质124以用于数据存储。存储控制器126可以通过硬件、固件或软件的任何适当的组合来实现,以提供存储系统114的各种功能。存储控制器126还可以管理或实施与存储介质124相关联的内部任务或操作,诸如数据高速缓存、数据迁移、垃圾收集、热管理(例如,节流)、功率管理等。这样,存储控制器126可以从主机系统102接收主机i/o以用于数据访问,并且将与存储介质124的内部操作相关联的内部i/o排队(或生成)。

在该示例中,存储控制器126还包括存储介质写管理器130(介质写管理器130)、写缓冲区132和基于奇偶校验的编码器,其被示为独立磁盘冗余阵列(raid)编码器134。写缓冲区132可以接收或存储从主机系统102所接收的数据,以用于写到存储介质124。raid编码器134可以计算用于被写到作为raid条带的一部分的存储介质124的数据的奇偶校验信息(例如,xor位)。raid条带的成员或单元可以包括存储介质的任何合适的分区或区域,诸如管芯、平面、块、页面、字线等。通常,由raid编码器提供的奇偶校验信息可用于与来自其他raid条带成员的信息结合在一起,以在该成员的编程操作失败时,恢复raid条带成员的数据。raid或基于奇偶校验的数据恢复可以提供增强的数据可靠性,并且保护免于存储介质的完全块或页故障。

在各个方面,介质写管理器130可以与raid编码器134交互以计算针对存储到写缓冲区132的数据的奇偶校验信息。在一些情况下,数据还可以在计算奇偶校验信息之前或其期间被传递到存储介质系统的另一内部缓冲区。如果将数据写到存储介质的编程操作失败,则介质写管理器130可以使用该奇偶校验信息来实现数据恢复,而不是依赖于写缓冲区中保持的数据。因为奇偶校验信息能够实现数据恢复,所以介质写管理器然后可以响应于对奇偶校验信息的计算(和/或数据被传递到另一内部缓冲区或存储介质)而释放写缓冲区,从而使写缓冲区132自由以用于在将数据编程到存储介质之前或在数据被编程到存储介质中时重复使用。通过这样做,写缓冲区的自适应释放可以导致改进的写缓冲区利用率和增加的存储介质写吞吐量。

主机系统102还可以包括i/o端口136、图形处理单元138(gpu138)和数据接口140。通常,i/o端口136允许主机系统102与其他设备、外围设备或用户交互。例如,i/o端口136可以包括通用串行总线、人机接口设备、音频输入、音频输出等或与其耦合。gpu138处理并且绘制与图形相关的数据以用于主机系统102,诸如操作系统的用户界面元素、应用等。在一些情况下,gpu138访问本地存储器的一部分以绘制图形,或包括用于绘制主机系统102的图形(例如,视频ram)的专用存储器。

主机系统102的数据接口140提供到一个或多个网络以及被连接到那些网络的其他设备的连接。数据接口140可以包括有线接口(诸如以太网或光纤接口),以用于通过局域网、内联网或互联网进行通信。备选地或附加地,数据接口140可以包括促进通过无线网络(诸如无线局域网(lan)、广域无线网络(例如蜂窝网络)和/或无线个人区域网络(wpan))进行通信的无线接口。根据利用自适应写缓冲区释放的存储介质编程的一个或多个方面,通过i/o端口136或数据接口140传送的任何数据可以被写到主机系统102的存储系统114或从其被读取。

图2在200处图示了固态驱动器202的示例配置,其中介质写管理器、写缓冲区和raid编码器可以根据一个或多个方面来实现。在该示例中,在被实现为固态存储驱动器(ssd)202的存储系统114的上下文中示出了介质写管理器130和其他组件。ssd202可以耦合到任何合适的主机系统102,并且植入包括多个nand闪存设备204-0至204-n的存储介质124,其中n是任何合适的整数。在一些情况下,nand闪存设备204包括在通道级(设备组)或设备级(个体设备)上可访问或管理的存储设备、管芯或芯片的多个闪存通道。尽管被示为存储控制器126的组件,但是介质写管理器130可以与存储控制器分离地实现或在其外部。在一些情况下,介质写管理器130被实现为存储器接口的一部分(诸如dram控制器)或与存储控制器相关联的接口。

通常,ssd202的操作由存储控制器126的实例启用或管理,在该示例中,该实例存储控制器包括用于实现与主机系统102通信的主机接口206和用于实现访问存储介质124的介质接口208。主机接口206可以被配置为实现任何合适类型的存储接口或协议,诸如串行高级技术附接(sata)、通用串行总线(usb)、pcie、高级主机控制器接口(ahci)、nvme、fabric上nvm(nvm-of)、nvm主机控制器接口规范(nvmhcis)、小型计算机系统接口(scsi)、串行附接scsi(sas)、安全数字i/o(sdio)、光纤通道,其任何组合(例如m.2或下一代形状因子(ngff)组合接口)等。备选地或附加地,介质接口208可以实现任何合适类型的存储介质接口,诸如闪存接口、闪存总线通道接口、nand通道接口、物理页面寻址(ppa)接口等。

在各个方面,ssd202或存储控制器126的组件提供主机接口206到主机系统102和介质接口208到存储介质124之间的数据路径。在该示例中,存储控制器126包括处理器核210,以用于执行内核、固件或驱动器以实现存储控制器126的功能。在一些情况下,处理器核210还可以执行处理器可执行指令以实现存储控制器126的介质写管理器130。备选地或附加地,介质写管理器130可以从与raid编码器134相关联的硬件执行或在其上运行。

如图2所示,存储控制器126的结构212(其可以包括控制和数据总线)可操作地耦合并且支持存储控制器126的组件之间的通信。例如,介质写管理器130可以与写缓冲区132、raid编码器134或处理器核210(例如,固件)通信,以在存储控制器126内交换数据、信息或控制信令(例如,缓冲区释放中断)。存储控制器126的静态随机存取存储器214可以存储处理器可执行指令或用于存储控制器的固件或驱动器的代码,其可以由处理器核210执行。备选地或附加地,存储控制器126的写缓冲区132可以在控制器的sram214中被实现。

在该示例中,存储控制器126包括动态随机存取存储器(dram)控制器216和相关联的dram218,以用于在存储控制器126在主机系统102、存储介质124或存储控制器的其他组件之间移动数据时存储或高速缓存各种数据。如图2中所示,写缓冲区132的实例在dram218中实现,并且可以通过dram控制器216被访问或管理。存储控制器126还包括纠错码(ecc)编码器220,其可以被用于对被编程或写到ssd202的存储介质124的数据进行ecc编码。

图3在300处示出了各种硬件和固件组件的示例配置,以用于实现利用自适应写缓冲区释放的存储介质编程的各方面。在该示例中,存储控制器126的组件被示为可以在存储控制器的固件302和/或硬件304中实现的抽象实体。这只是各种组件的一个示例实现,其中任何一个组件都可以与本文所述的其他组件分离地实现或与其组合而被实现。备选地或附加地,参考图2或图3描述的组件中的任何组件可以被实现为知识产权块(ip块)或ip核,其被配置为提供组件的各种描述特征的逻辑单元、单元和/或集成电路(ic)。例如,存储控制器126的组件(例如,介质写管理器130)可以被实现为包括硬件、固件或软件的组合的ip核或ip块,以提供相应功能或实现组件的相应操作。

在该示例中,存储控制器126的硬件304包括nand闪存设备204、主机接口206、介质接口208、处理器210(未示出)和ecc编码器220,其可以如参考图2所描述地被实现。硬件304还可以包括写缓冲区132和raid编码器134,其可操作地与raid缓冲区306耦合。在该示例中单独示出,raid缓冲区306可以被实现为raid编码器134的一部分并且存储raid编码器所生成或计算的奇偶校验信息。介质写管理器130可以至少部分地在硬件304中被实现,并且与写缓冲区132或raid编码器134交互以执行写缓冲区132的自适应释放,如贯穿本公开所描述的。备选地或附加地,介质写管理器130可以在存储控制器126的处理器核210上执行。

通常,存储控制器126的固件302辅助硬件304管理主机系统102和存储介质124之间的数据路径。换言之,固件302可以转换针对从主机系统102所接收的数据的命令或请求,以实现对存储介质124的访问。如图3所示,固件302包括用于在主机侧实现主机命令处理器310的主机接口驱动器308和用于在存储介质侧实现介质命令管理器314的介质接口驱动器312。如图3中所示,用于数据318(例如,与写命令相对应的数据)的主机输入/输出命令316(主机i/o316)由主机命令处理器310接收,并且被发送到存储控制器126的闪存转换层320(ftl320)的i/o调度器。ftl320和/或i/o调度器可以处理和调度主机i/o316,然后其可以作为对应的介质输入/输出命令322(介质i/o322)被执行,以用于通过介质命令管理器314的存储介质访问。

ftl320可以管理命令处理(例如,主机i/o316转换和调度),以促进主机系统数据318在存储系统114内和/或通过存储控制器126的移动,诸如到存储介质124。如图3中所示,在将主机数据写到存储介质的上下文中,ftl320处理主机i/o316,以管理或促进数据318从主机接口206通过数据路径到介质接口208的移动,其中数据318被编程到nand闪存设备204。为此,ftl320或固件302可以管理硬件304的各种组件,以促进数据318从一个组件移动到下一个组件。例如,固件302可以使硬件304从主机接口206获取数据318或将其从主机接口206移动到写缓冲区132,将数据318(例如,通过传递或复制)提供给raid编码器134,和/或将数据318提供给ecc编码器220以用于编码。固件302还可以使硬件304将数据318或经ecc编码的数据324发送到介质接口208,以用于写或编程到nand闪存设备204。

在各个方面,介质写管理器130可以与写缓冲区132、raid编码器134、固件302或硬件304的其他组件交互,以实现利用自适应写缓冲区释放的存储介质编程的各方面。在一些情况下,介质写管理器130监测raid编码器134,以用于对针对数据318(例如,一个主机写命令的数据)的奇偶校验信息的计算完成的指示。基于奇偶校验信息计算的完成和数据的副本被存储到另一内部缓冲区(例如,ecc缓冲区),写缓冲区130生成到固件302的中断以引起释放存储数据318(例如,一个主机写命令的数据)的写缓冲区132。通过这样做,写缓冲区132自由并且可以被重用于主机的下一个写命令的数据318。这还可以使得存储驱动器能够利用较少或较小的写缓冲区来实现,而不影响存储驱动器的写吞吐量。

图4a至图4e示出了在管芯级数据冗余的上下文中利用自适应写缓冲区释放的存储介质编程的示例。如图4a中的400所示,将主机数据存储到存储介质通常包括处理在写缓冲区132处所接收到的数据318和将其移动到nand闪存204以编程到nand介质中。在此,nand闪存204被图示为个体nand管芯1204-1至nand管芯n204n,其中n是任何合适的整数。图4a至图4e的实体中的任何实体可以类似于参考图1至图3所描述的对应实体而被实现。在该示例中,存储控制器126包括raid编码器134的实例以实现raid编码,这可以为存储控制器提供改进的数据可靠性,并且实现在nand编程故障期间丢失的数据的恢复。

通常,raid条带可以跨越驻留在存储介质的不同管芯或平面上的存储块。在高代码速率应用(低开销)中,raid条带可能还包括来自存储介质的同一管芯或平面的块。在该示例中,raid编码器134以管芯raid方案(或管芯级raid)实现,其可以防止存储介质管芯(例如,nand管芯)的故障。在其他方面,可以代替raid编码器来实现reed-solomon代码编码器,以针对多个raid条带成员(例如,平面或管芯)中的故障事件实现保护。

如图4a所示,第一写缓冲区0132-0可以从主机(诸如主机系统102)接收第一数据318-0。然后,第一数据318-0被提供给raid编码器134以用于计算针对第一数据318-0的奇偶校验信息,并且被提供给ecc编码器220以用于ecc编码,以及被编程到第一nand管芯0204-0的第一平面(平面0406-0)。通常,第一写缓冲区0132-0中的数据可以被并行地传递到ecc编码器和/或存储介质以及用于xor生成的raid编码器。这样,第一写缓冲区0132-0被编程到存储介质,并且raid缓冲区306累积xor信息,直到所有raid成员都已经通过raid编码器134,然后raid缓冲区306的内容可以被写到介质。

在该示例中,raid编码器134包括xor引擎402,以计算针对第一数据318-0的xor位,其被存储到raid缓冲区306的第一平面(平面0404-0)。如所指出的,与raid编码器134奇偶校验信息的计算(例如40至50微秒)或到存储介质的传递时间相比,将第一数据318-0的编程到nand闪存可能花费更多的时间(例如3到4毫秒)。

继续图4b,响应于raid编码器134对xor位的计算,介质写管理器130可以释放第一写缓冲区0132-0,如在408所示。在第一数据318-0到第一nand管芯204-0的编程410之前或其期间,第一写缓冲区0132-0可以被释放。因此,在第一数据318-0到nand闪存204的编程完成之前,第一写缓冲区0132-0可以被释放并且可用于重用。与传统的存储介质编程相反,在第一数据318-0完成编程之前,第一写缓冲区0132-0可以从主机接收附加的数据,这可以改进存储控制器126或存储系统114的写吞吐量。

如图4b中所示,当第二写缓冲区1132-1从主机接收第二数据3181,继续存储主机数据。然后,第二数据3181被提供给raid编码器134,以用于计算针对第二数据3181的奇偶校验信息,并且被提供给ecc编码器220以用于ecc编码,以及被编程到第一nand管芯0204-0的第二平面(平面1406-1)。xor引擎402计算第二数据3181的xor位,其被存储到raid缓冲区306的第二平面(平面1404-1)。

继续图4c,基于raid编码器134对第二数据318-1的xor位的计算完成,介质写管理器130可以释放第二写缓冲区1132-1,如在412所示。类似于第一写缓冲区0132-0,在第二数据318-1到第一nand管芯204-0的编程414之前或其期间,第二写缓冲区1132-1可以被释放。因此,在第二数据3181到nand闪存204的编程完成之前,第二写缓冲区112-12-1可以被释放并且可用于重用。在一些情况下,在第二数据3181到nand闪存204的编程完成之前,第一写缓冲区0132-0和第二写缓冲区1132-1可以被释放以用于重用。

参考在图4c的上下文中主机数据的存储,第三写缓冲区2132-2从主机接收第三数据318-2。然后,第三数据318-2被提供给raid编码器134以计算针对第三数据318-2的奇偶校验信息,并且被提供给ecc编码器220以用于ecc编码,以及被编程到第二nand管芯1204-1的第一平面(平面0406-0)。xor引擎402可以计算用于第三数据318-2的xor位,其可以被存储到raid缓冲区306的第一平面(平面0404-0)。

如图4d中所示,响应于raid编码器134对第三数据318-2的xor位的计算的完成,介质写管理器130释放第三写缓冲区2132-2,如在416所示。在第三数据318-2到第二nand管芯204-1的编程418之前或其期间,第三写缓冲区2132-2可以被释放。因此,在第三数据318-2到nand闪存204的编程完成之前,第三写缓冲区2132-2可以被释放并且可用于重用。在一些情况下,在第三数据318-2到nand闪存204的编程完成之前,第一写缓冲区0132-0、第二写缓冲区1132-1和第三写缓冲区2132-2可以被释放以用于重用。

在该示例中结束主机数据的存储,第四写缓冲区3132-3从主机接收第四数据3183。然后,第四数据3183被提供给raid编码器134以用于计算第四数据3183的奇偶校验信息,并且被提供给ecc编码器220以用于ecc编码,以及被编程到第二nand管芯1204-1的第二平面(平面1406-1)。xor引擎402计算第四数据318-3的xor位,其被存储到raid缓冲区306的第二平面(平面1404-1)。类似于其他写缓冲区132,在第四信息318-3的奇偶校验信息的计算完成时,介质写管理器可以释放第四写缓冲区3132-3。

参考图4e,由raid编码器134所计算出的奇偶校验信息或xor位可以被存储或保持在raid缓冲区306中,直到最后的nand管芯204的编程完成为止。在管芯级raid的情况下,raid编码器134的奇偶校验信息从raid缓冲区306被编程到raid条带的最后的nand管芯n204-n的两个平面406。通过回顾,主机的数据318跨raid条带的其他nand管芯204成员被条带化,诸如nand管芯0204-0至nand管芯n-1(未示出)。在该示例中,ecc编码器220(为了视觉清晰示出两个实例)对第一平面0406-0和第二平面1406-1的相应奇偶校验信息(例如,xor位)编码。然后,ecc编码的奇偶校验信息分别被编程到最后的nand管芯n204-n的第一平面0406-0和第二平面1406-1。通过实现raid编码,无法编程的管芯(例如,管芯k<n)的任一平面的数据还可以如公式1和2所示被恢复。

(管芯k,平面0)=(管芯0,平面0)xor(管芯1,平面0)xor…xor(管芯k-1,平面0)xor(管芯k+1,平面0)xor…xor(管芯n,平面0)

公式1:管芯k的平面0的数据恢复

(管芯k,平面1)=(管芯0,平面1)xor(管芯1,平面1)xor…xor(管芯k-1,平面1)xor(管芯k+1,平面1)xor…xor(管芯n,平面1)

公式2:管芯k的平面1的数据恢复

在将奇偶校验信息编程到管芯n失败的情况下,奇偶校验信息可以被保持在raid缓冲区306中,直到管芯n的编程完成为止,使得奇偶校验数据可以直接从raid缓冲区306被恢复。

备选地,一旦已知raid条带的所有(非奇偶校验)成员已经成功编程到存储介质,则raid缓冲区306也可以提前被释放。在这种情况下,raid缓冲区306可以提前被释放,并且如果到存储介质的编程失败,则奇偶校验信息可以通过再次读取所有raid成员来重建。备选地,当不需要重建奇偶校验时,条带可能缺乏raid保护,并且条带可以被重新定位到有效地重建奇偶校验信息的其他位置。

图5a至图5d示出了在平面级数据冗余的上下文中利用自适应写缓冲区释放的存储介质编程的示例。如图5a中在500处所示,将主机数据存储到存储介质通常包括处理在写缓冲区132处所接收到的数据318和将其移动到nand闪存204,以用于编程到nand介质中。在此,nand闪存204被示为个体nand管芯1204-1至nand管芯n204n,其中n是任何合适的整数。图5a至图5d的实体中的任何实体可以类似于参考图1至图4所描述的对应实体来实现。在该示例中,存储控制器126包括raid编码器134的实例以实现raid编码,这可以为存储控制器提供改进的数据可靠性,并且实现在nand编程操作期间丢失的数据的恢复(例如,块或页面故障)。

在本示例中,raid编码器134在平面raid方案(或平面级raid)中被实现,这可以针对存储介质平面(例如nand平面)的故障进行保护。在一些情况下,使用平面raid可以减少管芯raid(例如,图4a至图4e)所涉及的计算开销。在其他方面,可以代替raid编码器来实现reed-solomon代码编码器,以针对多个raid条带成员(例如,平面或管芯)中的故障事件实现保护。

如图5a中所示,第一写缓冲区0132-0可以从主机(诸如主机系统102)接收第一数据318-0。然后,第一数据318-0被提供给raid编码器134用于计算针对第一数据318-0的奇偶校验信息,并且被提供给ecc编码器220以用于ecc编码,以及然后被编程到第一nand管芯0204-0的第一平面(平面0506-0)。在该示例中,raid编码器134包括xor引擎502,以计算用于第一数据318-0的xor位,其被存储到raid缓冲区306的第一平面(平面0504-0)中。如所指出的,与raid编码器134或xor引擎502的奇偶校验信息的计算相比,对第一数据318-0进行编程可以消耗多得多的时间。

继续图5b,响应于raid编码器134对xor位的计算,介质写管理器130可以释放第一写缓冲区0132-0,如在508处所示。在第一数据318-0到第一nand管芯204-0的编程510之前或其期间,第一写缓冲区0132-0可以被释放。因此,在第一数据318-0到nand闪存204的编程完成之前,第一写缓冲区0132-0可以被释放并且可用于重用。与传统的存储介质编程相反,在第一数据318-0完成编程之前,第一写缓冲区0132-0可以从主机接收附加的数据,这可以改进存储控制器126或存储系统114的写吞吐量。

如图5b所示,当第二写缓冲区1132-1从主机接收第二数据3181,继续主机数据的存储。然后,第二数据3181被提供给raid编码器134以用于计算针对第二数据3181的奇偶校验信息,并且被提供给ecc编码器220以用于ecc编码,以及然后被编程到第一nand管芯0204-0的第二平面(平面1506-1)。xor引擎502计算第二数据3181的xor位,其被存储到raid缓冲区306的第二平面(平面1504-1)。

继续图5c,基于raid编码器134对用于第二数据318-1的xor位的计算的完成,介质写管理器130可以释放第二写缓冲区1132-1,如在512处所示。与第一写缓冲区0132-0类似,在第二数据318-1到第一nand管芯204-0的编程514之前或其期间,第二写缓冲区1132-1可以被释放。因此,在第二数据3181到nand闪存204的编程完成之前,第二写缓冲区1132-1可以被释放并且可用于重用。在此,假定奇偶校验信息还已经针对第三数据(未示出)被计算,其已经被发送到nand闪存204的编程接口。响应于针对第三数据的奇偶校验信息的计算,介质写管理器130释放第三写缓冲区2132-2,如在516处所示。这样,第三写缓冲区2132-2的释放可以在第三数据的编程518之前或其期间发生,从而在相应的数据被编程到nand闪存204中之前,使第三写缓冲区2132-2自由以用于重用。

如图5c中所示结束主机数据的存储,最后的写缓冲区2n132-2n(例如,针对条带的最后的写缓冲区)从主机接收raid条带的最后的平面成员的数据318-2n。然后,数据318-2n被提供给raid编码器134以用于计算针对数据318-2n的奇偶校验信息,并且被提供给ecc编码器220以用于ecc编码,以及被编程到第n个nand管芯n204-n的第一平面(平面0506-0)。xor引擎502计算用于数据318-2n的xor位,其被存储到raid缓冲区306的第一平面(平面0504-0)。类似于其他写缓冲区132,在信息318-2n的奇偶校验信息的计算完成时,介质写管理器可以释放最后的写缓冲区2n132-2n。

参考图5d,由raid编码器134所计算出的奇偶校验信息或xor位可以被存储或保持在raid缓冲区306中,直到最后的nand管芯204的编程完成为止。在平面级raid的情况下,针对raid编码器134的每个平面(504-0和504-1)的奇偶校验信息在编程到raid条带的最后的nand管芯n204-n的第二平面(平面0506-1)之前,通过xor运算被组合。通过回顾,主机的数据318跨raid条带的其他nand平面成员被条带化,诸如nand管芯0204-0的平面到nand管芯n的第一平面。在该示例中,ecc编码器220对第一平面0506-0和第二平面1506-1的组合的奇偶校验信息(例如,xor位)编码。然后,经ecc编码的奇偶校验信息被编程到最后的nand管芯n204-n的第二平面1506-1。通过实现raid编码,无法编程的管芯(例如,管芯k<n)的任一平面的数据还可以如公式3和4所示被恢复。

(管芯k,平面0)=(管芯0,平面0)xor(管芯1,平面0)xor…xor(管芯k-1,平面0)xor(管芯k+1,平面0)xor…xor(管芯n,平面0)

公式3:管芯k的平面0的数据恢复

(管芯k,平面1)=(管芯0,平面1)xor(管芯1,平面1)xor…xor(管芯k-1,平面1)xor(管芯k+1,平面1)xor…xor(管芯n,平面1)

公式4:管芯k的平面1的数据恢复

在奇偶校验信息到管芯n的编程失败的情况下,该奇偶校验信息可以被保留在raid缓冲区306中,直到管芯n的第二平面的编程完成为止,使得奇偶校验数据从raid缓冲区306直接可恢复。这些只是利用自适应写缓冲区释放的存储介质编程的少许示例,贯穿本公开中实现和描述了示例中的其他示例。

用于自适应写缓冲区释放和数据恢复的技术

以下讨论描述了用于利用自适应写缓冲区释放和/或基于奇偶校验的数据恢复的存储介质编程的技术。可以使用本文描述的环境和实体中的任何环境和实体(诸如介质写管理器130、写缓冲区132和/或raid编码器134)来实现这些技术。这些技术包括图6至图8所示的各种方法,该方法中的每个方法被示为可以由一个或多个实体执行的操作的集合。

方法600到800不一定限于在相关联的图中所示的操作顺序。而是,该操作中的任何操作可以被重复、跳过,替换或重新排序,以实现本文描述的各个方面。此外,这些方法可以全部或部分地彼此结合使用,而不管是由同一实体、单独实体还是其任何组合来执行。在以下讨论的部分中,例如将参考图1的操作环境100以及图2至图5d的各种实体或配置。这样的参考不应当被视为将所描述的各方面限制到操作环境100、实体或配置,而是作为各种示例中的一个示例的说明。备选地或附加地,方法的操作也可以由参考图9的片上系统和/或图10的存储系统控制器所描述的实体实现或与其一起实现。

图6描绘了用于利用自适应写缓冲区释放的存储介质编程的示例方法600,包括由存储介质控制器的介质写管理器130、写缓冲区132或raid编码器134来执行或与其一起执行的操作。

在602处,从主机接口接收的数据被存储到写缓冲区。写缓冲区可以在存储控制器的sram或dram中被实现。在一些情况下,从主机接口所接收的数据对应于主机系统的写命令,数据经由主机接口从该主机系统被接收。写命令可以指定存储介质(诸如存储系统的nand闪存)中数据的目的地。

在604处,奇偶校验信息针对存储到写缓冲区的数据利用基于奇偶校验的编码器被确定。在确定奇偶校验信息之前或其期间,数据可以被传递到存储系统的内部缓冲区或存储介质。基于奇偶校验的编码器可以包括具有xor引擎或xor缓冲区的raid编码器,以用于确定奇偶校验信息(例如,xor位)。奇偶校验信息可以对应于将被写存储介质的平面或管芯的数据以及被写到存储介质的至少一个其他平面或至少一个其他管芯的其他数据。例如,奇偶校验数据可以对应于跨越nand闪存的多个管芯或平面的raid条带的数据成员的xor位。

在606处,针对数据的奇偶校验信息被存储到基于奇偶校验的编码器的缓冲区中。奇偶校验信息可以基于数据被编程到的存储介质中的相应平面来被存储到缓冲区的平面。备选地或附加地,针对数据和其他数据的奇偶校验信息可以被保持在基于奇偶校验的编码器的缓冲区中,直到奇偶校验信息成功地被编程到存储介质中为止。

在608处,响应于奇偶校验信息的确定,写缓冲区被释放。在数据被完全编程到存储介质中之前,写缓冲区被释放。基于奇偶校验的编码器可以提供指示对奇偶校验信息的确定的完成的通知。在一些情况下,基于奇偶校验的编码器被监测以检测何时对奇偶校验信息的确定或计算完成和/或被存储到基于奇偶校验的编码器的缓冲区中。响应于通知或检测到奇偶校验信息的完成的确定,通知或中断可以被发送到存储控制器的固件以引起写缓冲区的释放。当被释放,写缓冲区可用于重用,诸如从主机接口接收后续数据。

在610处,在写缓冲区从存储数据中被释放之后,数据的至少一部分被写到存储介质。因为在确定奇偶校验信息之后写缓冲区被释放,所以在数据被写到或编程到存储介质之前写缓冲区可以被释放。这样,在释放写缓冲区之后,可以继续向存储介质写或编程数据。在编程故障的情况下,数据可以基于奇偶校验信息并且不使用先前在写缓冲区中所保持的数据来恢复。

可选地在612处,在完成数据到存储介质的写之前,其他数据被存储到写缓冲区。如所指出的,数据的编程可以在释放写缓冲区之后继续,其可以被存储控制器的固件或其他组件自由地重用。在一些情况下,在将先前的数据被编程到存储介质时,附加的数据被存储到写缓冲区。通过使写缓冲区自由和重用写缓冲区,自适应缓冲区释放的各个方面可以改进写缓冲区利用率或增加存储介质的写吞吐量。

图7描绘了用于基于奇偶校验信息的计算来释放写缓冲区的示例方法700,包括由存储介质控制器的介质写管理器130、写缓冲区132和/或raid编码器134执行的或与其一起执行的操作。

在702处,来自主机系统的数据在写缓冲区处被接收。数据从主机系统通过存储控制器的主机接口被接收。在一些情况下,数据作为i/o命令的一部分从主机系统被接收或获取,以将数据写到与存储控制器关联的存储介质。

在704处,数据从写缓冲区被传输到raid编码器。通常,数据被传输、传递或发送到raid编码器,而存储系统的另一内部缓冲区维护数据。换言之,raid编码器可以在另一缓冲区保持数据副本或数据被发送到存储介质以用于编程的同时处理数据。通过这样做,主机系统可以从数据解脱(例如,高速缓存开启模式),并且存储控制器在数据处理或编程故障的情况下可以具有本地副本。

在706处,奇偶校验信息利用raid编码器被计算以用于数据。raid编码器可以包括用于计算或生成写缓冲区中的数据的xor位的xor引擎或xor缓冲区。xor位(或针对数据的奇偶校验信息)可以被保持在基于奇偶校验的编码器的缓冲区中。在一些情况下,raid编码器被配置为生成中断或提供对奇偶校验信息的计算完成的通知。例如,raid编码器可以向存储控制器的固件提供中断,该中断指示奇偶校验信息的计算完成和/或针对数据的奇偶校验信息被保持在raid编码器的缓冲区中。

在708处,响应于针对数据的奇偶校验信息的计算完成,写缓冲区被释放。在释放写缓冲区之前,数据可以被复制到存储系统的另一内部缓冲区或被编程到存储介质。在数据被完全编程到存储介质中之前,写缓冲区可以被释放。在一些情况下,在开始数据到存储介质的编程之前,写缓冲区被释放。备选地或附加地,响应于raid编码器、ecc编码器或存储控制器的其他组件所提供的中断或通知,写缓冲区可以被释放。

在710处,数据利用ecc编码器被编码,以提供经ecc编码的数据。ecc编码器可以在raid编码之后或与raid编码并行地对数据进行编码。在一些情况下,在奇偶校验信息根据数据被计算之后,ecc编码器从raid编码器接收数据。

在712处,在写缓冲区从存储数据中被释放后,经ecc编码数据的至少一部分被写到存储介质。因为在确定奇偶校验信息之后写缓冲区被释放,所以在数据由ecc编码器进行ecc编码之前或与其同时,写缓冲区被释放。这样,在释放写缓冲区之后,可能发生或继续将经ecc编码的数据写或编程到存储介质。在编程故障的情况下,数据可以基于奇偶校验信息并且不使用先前保持在写缓冲区中的数据而被恢复。

可选地在714处,奇偶校验信息被写到存储介质。奇偶校验信息可以被写存储介质的任何合适区域,诸如raid条带的最后的管芯或平面。通常,当奇偶校验信息由raid缓冲区保持时,奇偶校验信息可以被写到raid条带的最后的成员。通过这样做,在存储介质编程故障的情况下,奇偶校验信息可以从raid缓冲区中被恢复。

可选地在716处,其他数据在写缓冲区处被接收。如所指出的,经ecc编码的数据的编程可以在释放写缓冲区之后继续,该写缓冲区自由以由存储控制器的固件或其他组件重用。在一些情况下,在先前的数据被编程到存储介质时,其他数据在写缓冲区处被接收。通过释放和重用写缓冲区,自适应缓冲区释放的各方面可以改进写缓冲区利用率或增加存储介质的写吞吐量。

图8描绘了用于利用基于奇偶校验的数据重建从编程故障中恢复的示例方法800,包括由存储介质控制器的介质写管理器130、写缓冲区132和/或raid编码器134执行或与其一起执行的操作。

在802处,奇偶校验信息利用raid编码器被计算以用于从主机接口所接收的数据。raid编码器可以包括用于计算或生成用于写缓冲区中的数据的xor位的xor引擎或xor缓冲区。

在804处,奇偶校验信息被存储到raid编码器的缓冲区中。xor位(或针对数据的奇偶校验信息)可以被保持在基于奇偶校验的编码器的缓冲区中。在一些情况下,raid编码器被配置为生成中断或提供奇偶校验信息的计算完成的通知。

在806处,在计算奇偶校验信息之后写缓冲区被释放。在数据被完全编程到存储介质中之前,写缓冲区可以被释放。备选地或附加地,响应于存储控制器的raid编码器、ecc编码器、介质写管理器或其他组件所提供的中断或通知,写缓冲区被释放。

在808处,启动数据到存储介质的区域的编程。数据可以被释放到存储介质接口以用于编程到存储介质的区域(例如,块、平面或管芯)。在一些情况下,数据经由存储控制器的闪存接口被发送到闪存控制器,以用于编程到闪存的区域。例如,提供有数据的介质i/o可以指定闪存控制器将数据写存储介质的平面。

在810处,针对数据到存储介质的编程,编程故障被检测到。编程故障可以包括页面故障、块故障、平面故障、管芯故障等。在写缓冲区从存储数据中被释放之后,编程故障可以被检测到。

在812处,数据基于奇偶校验信息和来自存储介质的其他区域的相应数据被重建。通过实现raid,存储控制器可以基于raid缓冲区中的奇偶校验信息和来自raid条带的其他成员(例如,管芯或平面)的数据来重建编程故障的丢失数据。通过这样做,存储控制器能够重建先前由释放的写缓冲区所保持的数据。

在814,重建的数据被编程到存储介质的不同区域。在编程故障的情况下,存储控制器能够重建由于编程故障而丢失的数据,并且尝试将数据重新编程到存储介质的不同区域,这可以确保由存储控制器所管理的数据的可靠性。备选地或附加地,如果在尝试将奇偶校验信息写到raid条带的最后的成员时发生编程故障,则raid缓冲区的奇偶校验信息还可以被重新编程到存储介质的不同区域。如所指出的,奇偶校验信息被保持在raid缓冲区中,直到成功完成到存储介质的编程为止,以确保从这样的编程故障中恢复的能力。备选地,raid缓冲区还可以在条带被重新分配并且使其奇偶校验信息重新生成时被释放。

片上系统

图9示出了示例性片上系统(soc)900,其可以实现利用自适应写缓冲区释放的存储介质编程的各个方面。soc900可以在任何合适的系统或设备中实现,诸如智能手机、上网本、平板电脑、接入点、网络附接存储装置、相机、智能设备、打印机、机顶盒、服务器、数据中心、固态驱动器(ssd)、硬盘驱动器(hdd)、存储驱动器阵列、内存模块、汽车计算系统或任何其他合适类型的设备(例如本文所述的其他设备)。尽管参考soc进行了描述,但是图9的实体也可以被实现为其他类型的集成电路或嵌入式系统,诸如专用集成电路(asic)、存储器控制器、存储控制器、通信控制器、专用标准产品(assp)、数字信号处理器(dsp)、可编程soc(psoc)、系统级封装(sip)或现场可编程门阵列(fpga)。

soc900可以与电子电路、微处理器、存储器、输入-输出(i/o)控制逻辑、通信接口、固件和/或用于提供计算设备、主机系统或存储系统的功能的软件(诸如本文描述的设备或组件(例如存储驱动器或存储阵列)中的任何一项)集成在一起。soc900还可以包括集成数据总线或互连结构(未示出),其耦合soc的各种组件以用于控制组件之间的信令、数据通信和/或路由。可以通过外部端口、并行数据接口、串行数据接口、基于结构的接口、外围组件接口或任何其他合适的数据接口来公开或访问soc900的集成数据总线、互连结构或其他组件。例如soc900的组件可以通过外部接口或片外数据接口来访问或控制外部存储介质。

在该示例中,soc900包括各种组件,诸如输入-输出(i/o)控制逻辑902和基于硬件的处理器904(处理器904),诸如微处理器、处理器核、应用处理器、dsp等。soc900还包括任何类型的存储器906,其可包括ram、sram、dram、非易失性存储器、rom、一次性可编程(otp)存储器、多次可编程(mtp)存储器、闪存和/或其他合适的电子数据存储装置和/或其组合。在一些方面,处理器904和存储在存储器906上的代码被实现为存储系统控制器或存储聚合器,以提供与利用自适应写缓冲区释放的存储介质编程相关联的各种功能。在本公开的上下文中,存储器906经由非暂态信号存储数据、代码、指令或其他信息,并且不包括载波或暂态信号。替代地或另外地,soc900可以包括用于访问附加的或可扩展的片外存储介质的数据接口(未示出),诸如固态存储器(例如闪存或nand存储器)、基于磁性的存储器介质,或基于光学的存储器介质。

soc900还可以包括固件908、应用、程序、软件和/或操作系统,其可以体现为在存储器906上维护的处理器可执行指令,用于由处理器904执行以实现soc900的功能。soc900还可以包括其他通信接口,诸如用于控制本地片上(未示出)或片外通信收发机的组件或与本地片上(未示出)或片外通信收发机的组件通信的收发机接口。替代地或另外地,收发机接口还可包括或实现信号接口以片外传送射频(rf)、中频(if)或基带频率信号,以促进通过收发机、物理层收发机(phy)或者耦合到soc900的介质访问控制器(mac)的有线或无线通信。例如soc900可以包括收发机接口,其被配置为允许通过有线或无线网络进行存储,诸如以提供能够利用自适应写缓冲区释放来实现存储介质编程的网络附接存储(nas)卷。

soc900还包括介质写管理器130、写缓冲区132和raid编码器134,其可以如所示分离地实现,也可以与存储组件、数据接口组合在一起,也可以通过片外接口可访问。根据利用自适应写缓冲区释放的存储介质编程的各个方面,介质写管理器130可以与raid编码器134交互以计算用于写缓冲区132中所存储的数据的奇偶校验信息。然后,响应于奇偶校验信息的计算,介质写管理器可以释放写缓冲区,从而在数据被编程到存储介质之前或同时释放写缓冲区132以供重用。通过这样做,写缓冲区的自适应释放可以导致改进的写缓冲区利用率和增加的存储介质写吞吐量。如参考本文所呈现的各个方面所描述的,这些实体中的任何实体可以被体现为不同的或组合的组件。参考图1的环境100的相应组件或实体、图2至图5d中所示的相应配置和/或图6至图8中所示的方法描述了这些组件和/或实体或相应功能的示例。介质写管理器130的全部或部分可以被实现为由存储器906维护并且由处理器904执行的处理器可执行指令,以利用自适应写缓冲区释放来实现存储介质编程的各个方面和/或特征。

介质写管理器130可以独立地或与任何适当的组件或电路系统组合地被实现以实现本文描述的各方面。例如,介质写管理器130可以被实现为dsp、处理器/存储桥、i/o桥、图形处理单元,存储器控制器、存储控制器、算术逻辑单元(alu)等的一部分。介质写管理器130还可以内部与soc900的其他实体一起被提供,诸如与soc900的处理器904、存储器906、存储介质接口或固件908集成在一起。备选地或附加地,soc900的介质写管理器130、raid编码器134、raid编码器134和/或其他组件可以被实现为硬件、固件,固定逻辑电路或其任何组合。

作为另一示例,考虑图10,其示出了根据利用自适应写缓冲区释放的存储介质编程的一个或多个方面的示例存储系统控制器1000。在各个方面,存储系统控制器1000或其组件的任何组合可以被实现为用于固态存储介质或其他类型的存储介质的存储驱动器控制器、存储介质控制器、nas控制器、结构接口、nvme目标或存储聚合控制器。在一些情况下,类似于或参考图9所描述的soc900的组件,存储系统控制器1000被实现。换言之,soc900的实例可以被配置为存储系统控制器,诸如存储系统控制器1000,以用于管理固态(例如,基于nand闪存的)介质。

在该示例中,存储系统控制器1000包括输入/输出(i/o)控制逻辑1002和处理器1004,诸如微处理器、处理器核、应用处理器、dsp等。在一些方面,存储系统控制器1000的处理器1004和固件可以被实现为提供与利用自适应写缓冲区释放的存储介质编程相关联的各种功能,诸如参考方法600至800中的任何方法所描述的那些功能。存储系统控制器1000还包括主机接口1006(例如,sata、pcie、nvme或结构接口)和存储介质接口1008(例如,nand接口),其分别实现访问主机系统和存储介质。存储系统控制器1000还包括闪存转换层1010(ftl1010)、设备级管理器1012和i/o调度器(未示出)。在利用自适应写缓冲区释放的存储介质编程的一些方面中,ftl1010处理经由主机接口1006所接收的写命令,以管理在存储系统控制器1000内或通过其的数据移动。

存储系统控制器1000还包括介质写管理器130、写缓冲区132、raid编码器134和ecc编码器220的实例。这些组件中的任何组件或全部组件可以如所示的单独地被实现,也可以与处理器1004、主机接口1006、存储介质接口1008、闪存转换层1010、设备级管理器1012和/或i/o调度器组合在一起。参考图1的环境100的相应组件或实体或图2至图5d所示的相应配置来描述这些组件和/或实体或相应功能的示例。根据利用自适应写缓冲区释放的存储介质编程的各个方面,介质写管理器130可以与raid编码器134交互,以用于计算用于在写缓冲区132中所存储的数据的奇偶校验信息。然后,介质写管理器可以响应于奇偶校验信息的计算而释放写缓冲区,从而在数据被编程到存储介质之前或同时使写缓冲区132自由以供重用。通过这样做,写缓冲区的自适应释放可以导致改进的写缓冲区利用率和增加的存储介质写吞吐量。介质写管理器130可以全部或部分地被实现为由控制器的存储器维护并且由处理器1004执行的处理器可执行指令,以实现利用自适应写缓冲区释放的存储介质编程的各个方面和/或特征。

尽管用结构特征和/或方法操作专用的语言描述了本主题,但应理解,所附权利要求书中定义的主题不必限于本文所描述的具体示例、特征或操作,包括它们被执行的顺序。

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