首页> 中国专利> 用于存储器子系统的媒体管理的快照读取优化

用于存储器子系统的媒体管理的快照读取优化

摘要

本申请涉及用于存储器子系统的媒体管理的快照读取优化。存储与多个传递单元的媒体管理操作相关联的多个条目。结合垃圾处理过程确定相应传递单元中的每一个的相应目的地位置,使得所述多个传递单元的子集与存储器页上的码字边界对准。至少部分地基于所述确定发布与所述媒体管理操作相关的多个写入命令。

著录项

  • 公开/公告号CN113010447A

    专利类型发明专利

  • 公开/公告日2021-06-22

    原文格式PDF

  • 申请/专利权人 美光科技公司;

    申请/专利号CN202011493111.2

  • 申请日2020-12-17

  • 分类号G06F12/02(20060101);

  • 代理机构11287 北京律盟知识产权代理有限责任公司;

  • 代理人王龙

  • 地址 美国爱达荷州

  • 入库时间 2023-06-19 11:32:36

说明书

本专利申请主张比安克(Bianco)等人在2019年12月19日申请的标题为“用于存储器子系统的媒体管理的快照读取优化”的第16/721,712号美国专利申请的优先权,所述美国专利申请转让给本受让人并且明确地以全文引用的方式并入本文中。

技术领域

技术领域涉及用于存储器子系统的媒体管理的快照读取优化。

背景技术

存储器子系统可包含存储数据的一或多个存储器组件。存储器组件可为例如非易失性存储器组件及易失性存储器组件。一般来说,主机系统可利用存储器子系统以在存储器组件处存储数据且从存储器组件检索数据。

发明内容

描述了一种方法。在一些实例中,所述方法包含:存储与用于多个传递单元的一组媒体管理操作相关联的多个条目,每个条目包括多个传递单元中的相应传递单元在与存储器子系统相关联的存储器页上的位置;确定与所述一组媒体管理操作相关的相应传递单元中的每一个的相应目的地位置,使得多个传递单元的子集与存储器页上的码字边界对准;及至少部分地基于所述确定发布与所述一组媒体管理操作相关的多个写入命令,每个写入命令包括将子集中的一个传递单元写入到存储器页上的相应目的地位置的指令。

描述了一种系统。在一些实例中,所述系统可包含多个存储器装置及处理装置,所述处理装置与多个存储器装置可操作地耦合以:存储对应于与用于多个存储器装置的一组媒体管理操作相关联的多个传递单元的多个条目;确定多个传递单元中的每一个的相应目的地位置,使得多个传递单元的子集对应于存储器页上的码字;及至少部分地基于所述确定发布与所述一组媒体管理操作相关的多个写入命令,所述多个写入命令包括将多个传递单元的子集写入到存储器页上的相应目的地位置的指令。

描述了一种非暂时性计算机可读存储媒体。在一些实例中,非暂时性计算机可读存储媒体可包含指令,所述指令在由处理装置执行时使处理装置:存储与用于多个传递单元的一组媒体管理操作相关联的多个条目,每个条目包括多个传递单元中的相应传递单元在与存储器子系统相关联的存储器页上的位置;确定与所述一组媒体管理操作相关的相应传递单元中的每一个的目的地位置,使得多个传递单元的子集与存储器页上的码字边界对准;及至少部分地基于所述确定发布与所述一组媒体管理操作相关的多个写入命令,每个写入命令包括将子集中的一个传递单元写入到存储器页上的相应目的地位置的指令。

附图说明

根据下文给出的详细描述以及本公开的各种实例的附图,将更充分地理解本公开。然而,附图不应将本公开限于具体实例,而是仅用于解释及理解。

图1说明根据本公开的一些实例的包含存储器子系统的实例计算系统。

图2是根据本公开的一些实例的用于优化用于存储器子系统的媒体管理的快照读取的实例方法的流程图。

图3是根据本公开的一些实例的用于优化用于存储器子系统的媒体管理的快照读取的实例方法的框图。

图4是根据本公开的一些实例的用于执行用于存储器子系统的媒体管理的快照读取优化的实例记分板的图式。

图5是其中可操作本公开的实例的实例计算机系统的框图。

具体实施方式

本公开的方面涉及一种用于存储器子系统的媒体管理的快照读取优化。存储器子系统可为存储装置、存储器模块,或存储装置和存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含存储数据的一或多个存储器装置的存储器子系统。主机系统可提供数据以存储在存储器子系统处并且可请求从存储器子系统检索数据。

存储器装置可为非易失性存储器装置。非易失性存储器装置是一或多个裸片的封装。每个裸片可由一或多个平面组成。对于一些类型的非易失性存储器装置(例如,与非(NAND)装置),每个平面由一组物理块组成。每一块由一组页组成。每一页由存储数据位的一组存储器单元组成。对于例如NAND装置的一些存储器装置,块是可擦除的最小区域且块内的页无法个别地擦除。对于此类装置,一次一个块地执行擦除操作。

块的页可含有有效数据、无效数据或无数据。无效数据是标记为过时的数据,因为所述数据的新版本存储在所述存储器装置上。无效数据包含先前写入但不再与有效逻辑地址(例如主机系统在物理到逻辑(P2L)映射表中所参考的逻辑地址)相关联的数据。有效数据是正存储在存储器装置上的此数据的最近版本。存储器子系统可基于例如从操作系统接收到的信息,将数据标记为无效。不含数据的页包含先前已擦除且尚未写入到的页。

存储器子系统控制器可执行用于媒体管理算法(例如耗损均衡、刷新、垃圾收集、擦除等)的操作。块可具有含有有效数据的一些页及含有无效数据的一些页。为了避免等待块中的所有页具有无效数据以便擦除及再用所述块,可调用下文称为“垃圾收集”的算法,以允许所述块被擦除及释放,作为用于后续写入操作的闲置块。垃圾收集是一组媒体管理操作,其包含例如:选择含有有效及无效数据的块;选择所述块中含有有效数据的页;将所述有效数据复制到新位置(例如,另一块中的自由页);将先前选择的页中的数据标记为无效;及擦除选定块。

下文的“垃圾收集”是指选择块;将有效数据从选定块重写到另一块;及擦除存储在所述选定块处的所有无效数据及有效数据。可将来自多个选定块的有效数据复制到较小数目个其它块,且可接着擦除所述选定块。因此,可增加已经擦除的块的数目,使得更多的块可用于存储来自主机系统的后续数据。

在垃圾收集期间,基于由存储器子系统控制器发布的一或多个读取命令,将待擦除的块的有效数据最初读取到缓冲器中且由所述缓冲器存储,且擦除对应页(例如,上面可含有有效数据的页)。接着可将有效数据写入(例如,重写)到存储器装置(例如,存储器装置的不同页)。

在快照读取过程期间,可基于单个读取命令读取单个码字(包含多个TU)。为了成功地执行快照读取,用于快照读取的数据(一或多个TU)与存储器装置的页上的码字边界对准。然而,在一些情况下,数据可能会跨越存储器装置的页上的多个码字,使得给定大小(例如,4千字节(KB)或8KB)的一组数据与存储器装置的页上的码字边界不对准。由于与码字边界未对准的数据不符合快照读取的条件,因此以这种方式布置数据会降低快照读取操作的性能及可能性。

本公开的方面通过具有存储器子系统来解决上述及其它缺陷,所述存储器子系统包含用于基于与数据相关联的码字对条目进行分组(例如,在垃圾收集过程期间)的记分板。举例来说,当在垃圾收集过程期间从块读取TU时,记分板可根据从其读取TU的码字边界对条目进行分组。举例来说,可对记分板的条目进行排序,使得有效TU与存储器装置的页上的码字边界对准。因此,可基于码字边界将有效数据写入到目的地位置(例如,块)。通过在垃圾收集过程期间保持码字边界或与码字边界对准,可增加存储器子系统的整体性能并且可写入先前符合快照读取的条件的数据,使得其仍符合快照读取,这可改进存储器子系统的读取性能。

图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。计算环境可包含主机系统105及存储器子系统110。存储器子系统110可包含媒体,例如一或多个非易失性存储器装置(例如,存储器装置130)、一或多个易失性存储器装置(例如,存储器装置140),或其组合。

存储器子系统110可为存储装置、存储器模块,或存储装置及存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器、安全数字(SD)卡,及硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小外形DIMM(SO-DIMM)及非易失性DIMM(NVDIMM)。

计算系统100可为计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、交通工具(例如,飞机、无人机、火车、汽车或其它运输工具)、具有物联网(IoT)功能的装置、嵌入式计算机(例如,交通工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器及处理装置的此类计算装置。

计算系统100可包含与一或多个存储器子系统110耦合的主机系统105。在一些实例中,主机系统105与不同类型的存储器子系统110耦合。图1说明与一个存储器子系统110耦合的主机系统105的一个实例。如本文中所使用,“耦合到……”或“与……耦合”通常指代组件之间的连接,其可为间接通信连接或直接通信连接(例如,不具有介入组件),无论有线或无线,包含例如电连接、光学连接、磁性连接等连接。

主机系统105可包含处理器芯片组及由处理器芯片组执行的软件堆叠。处理器芯片组可包含一或多个核心、一或多个高速缓存、存储器控制器(例如,NVDIMM控制器),及存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统105使用存储器子系统110,例如,将数据写入到存储器子系统110及从存储器子系统110读取数据。

主机系统105可使用物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、小型计算机系统接口(SCSI)、串行附接SCSI(SAS)、双列直插式存储器模块(DIMM)接口(例如,支持双数据速率(DDR)的DIMM套接接口)等。物理主机接口可用于在主机系统105与存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与主机系统105耦合时,主机系统105可进一步利用非易失性存储器快速(NVMe)接口来存取存储器组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统105之间传递控制、地址、数据及其它信号的接口。

存储器装置可包含不同类型的非易失性存储器装置及/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可为但不限于随机存取存储器(RAM),例如动态RAM(DRAM)及同步DRAM(SDRAM)。

非易失性存储器装置的一些实例(例如,存储器装置130)包含NAND型快闪存储器。非易失性存储器装置的另一实例是就地写入存储器,例如三维交叉点(“3D交叉点”)存储器。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来执行位存储。另外,与许多基于闪存的存储器相比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。

存储器装置130中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如单层单元(SLC)可每单元存储一个位。其它类型的存储器单元,例如多层单元(MLC)、三层单元(TLC)及四层单元(QLC)可每单元存储多个位。在一些实施例中,存储器装置130中的每一个可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC或这些的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分,及MLC部分、TLC部分或QLC部分。存储器装置130的存储器单元可分组为页,页可指用于存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,NAND),页可进行分组以形成块。

尽管描述了例如NAND型快闪存储器的非易失性存储器装置,但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫族化物的存储器、铁电RAM(FeRAM)、磁性RAM(MRAM)、或非(NOR)快闪存储器、电可擦除可编程ROM(EEPROM)。

存储器子系统控制器115(或简称为控制器115)可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据,及其它这类操作。存储器子系统控制器115可包含硬件,例如一或多个集成电路及/或离散组件、缓冲存储器或其组合。硬件可包含具有专用(即,硬译码)逻辑的数字电路系统以执行本文中所描述的操作。存储器子系统控制器115可为微控制器、专用逻辑电路(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)、数字信号处理器(DSP)),或其它合适的处理器。

存储器子系统控制器115可包含处理器120(例如,处理装置),其经配置以执行存储在本地存储器125中的指令。在所示的实例中,存储器子系统控制器115的本地存储器125包含嵌入式存储器,其经配置以存储用于执行各种过程、操作、逻辑流及控制存储器子系统110的操作的例程的指令,包含处理存储器子系统110与主机系统105之间的通信。

在一些实例中,本地存储器125可包含存储存储器指针、提取的数据等的存储器寄存器。本地存储器125还可包含用于存储微码的只读存储器(ROM)。虽然图1中的实例存储器子系统110已示出为包含存储器子系统控制器115,但在本公开的另一实例中,存储器子系统110不包含存储器子系统控制器115,而是可依靠外部控制(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供)。

通常,存储器子系统控制器115可从主机系统105接收命令或操作,且可将所述命令或操作转换为指令或适当命令来实现对存储器装置130的所要存取。存储器子系统控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测及错误校正码(ECC)操作、加密操作、高速缓存操作,及与存储器装置130相关联的逻辑地址(如,逻辑块地址(LBA)、名称空间)与物理地址(例如,物理块地址)之间的地址转换。存储器子系统控制器115可进一步包含主机接口电路系统以经由物理主机接口与主机系统105通信。主机接口电路系统可将从主机系统接收到的命令转换成存取存储器装置130的命令指令,以及将与存储器装置130相关联的响应转换成用于主机系统105的信息。

存储器子系统110还可包含未说明的额外电路系统或组件。在一些实例中,存储器子系统110可包含高速缓存或缓冲器(例如,DRAM)及地址电路系统(例如,行解码器及列解码器),所述地址电路系统可从存储器子系统控制器115接收地址,并对地址进行解码以存取存储器装置130。

在一些实施例中,存储器装置130包含本地媒体控制器135,其与存储器子系统控制器115结合操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器装置130是受管理存储器装置,其为与本地控制器(例如,本地控制器135)组合以在同一存储器装置封装内进行媒体管理的原始存储器装置。受管理存储器装置的实例是受管理NAND(MNAND)装置。

存储器子系统110包含可执行媒体管理操作的码字管理器150,其中可独立于任何直接的主机系统交互将数据从一个位置迁移到另一位置。在一些实例中,码字管理器150可将有效数据打包在一起以释放空间用于新写入、避免错误、耗损均衡,及/或在发生错误的情况下恢复独立节点的冗余阵列(RAIN)奇偶校验保护。另外或替代地,码字管理器150可根据与数据相关联的一或多个码字边界将数据从一或多个块(例如,NAND单元的一或多个块)移动或复制到目的地块。

在一些实例中,存储器子系统控制器115包含码字管理器150的至少一部分。举例来说,存储器子系统控制器115可包含处理器120(例如,处理装置),其经配置以执行存储在本地存储器125中以用于执行本文中所描述的操作的指令。在一些实例中,码字管理器150是主机系统105、应用程序或操作系统的一部分。

码字管理器150可存储与媒体管理操作相关联的各种条目,及确定与每个条目相关联的码字边界。举例来说,码字管理器150可基于每个条目的边界对一或多个条目进行分组。在已由码字管理器150或另一组件擦除块之后,可基于分组将有效数据的页写入(例如,重写)到块。也就是说,码字管理器150可保留码字内的数据(例如,TU)次序,以确保可在后续的快照读取中读取数据。举例来说,可将跨越具有有效数据及无效数据两者的多个页的数据块写入到一或多个码字,使得保持保持符合未来快照读取的条件。下文描述关于码字管理器150的操作的其它细节。

图2是根据本公开的一些实例的用于优化用于存储器子系统的媒体管理的快照读取的实例方法的流程图200。由流程图200示出的方法可由处理逻辑执行,所述处理逻辑可包含硬件(例如处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实例中,流程图200所说明的方法由图1的码字管理器150执行。虽然以特定序列或次序来示出,但是除非另外规定,否则可修改操作的次序。因此,应理解,所示出的实例仅为实例,且所示出的操作可以不同次序执行,且一些操作可并行地执行。另外,在各种实例中可省略一或多个操作。因此,并非在每个实例中都需要所有操作。其它方法流是可能的。

在操作205处,处理装置可存储与用于一组传递单元(TU)的一组媒体管理操作相关联的一组条目。在一些实例中,每个条目可包含所述一组TU中的相应TU在与存储器子系统相关联的存储器页上的位置。在一些实例中,流程图200所说明的方法可包含至少部分地基于相应TU的位置对所述一组条目进行排序。在一些实例中,可至少部分地基于排序确定相应的目的地位置。在一些实例中,流程图200所说明的方法可包含对所述一组条目进行排序,使得对应于所述一组TU的子集的条目是连续的。在一些实例中,流程图200所说明的方法可包含根据排序算法对所述一组条目进行排序,所述排序算法至少部分地基于存储器页的码字大小对所述一组TU的子集的条目进行分组。在一些实例中,所述一组TU的子集中的每一个对应于码字大小。在一些实例中,对应于所述一组TU的子集的数据大小和与存储器页上的码字边界相关联的码字大小相同。

在操作210处,处理装置可确定与所述一组媒体管理操作相关的相应TU中的每一个的相应目的地位置,使得所述一组TU的子集与存储器页上的码字边界对准。在一些实例中,流程图200所说明的方法可包含确定所述一组TU的第二子集的相应目的地位置,使得第二子集与存储器页上的第二码字边界对准。在一些实例中,第二子集可与第一子集不重叠。

在操作215处,处理装置可至少部分地基于所述确定发布与所述一组媒体管理操作相关的一组写入命令。在一些实例中,每个写入命令可包含将子集的一个TU写入到存储器页上的相应目的地位置的指令。在一些实例中,流程图200所说明的方法可包含在发布所述一组写入命令之后,执行所述一组TU的子集的读取操作。

图3说明根据本文公开的实例的用于存储器子系统的媒体管理的快照读取优化的方法图300的实例。方法图300说明用于识别有效数据(例如,在阶段305)、读取有效数据(例如,在阶段310)及发布写入命令(例如,在阶段315)的阶段。在一些实例中,如参考图3所描述而执行的操作可在存储器子系统处实施,且可利用记分板302。此外,操作可根据主机系统及/或本地媒体控制器的操作执行,并且可基于状态机的设置实施。在一些实例中,方法图300可说明在媒体管理操作(例如,范围流过程320及重放流过程325)期间用于优化快照读取的一或多个过程。

方法图300可说明用于媒体管理(例如,针对垃圾收集的媒体管理操作)的一或多个操作。在媒体管理操作期间,可独立于任何直接的主机系统交互将数据从一个位置(例如,从源存储器地址)迁移到(例如,在存储器子系统内内部)另一位置(例如,到目的地存储器地址)。可执行垃圾收集以将有效数据打包在一起,以释放空间用于新写入、避免错误、耗损均衡,及/或在发生错误的情况下恢复RAIN奇偶校验保护。另外或替代地,垃圾收集可由将数据从一或多个源块(例如,一或多个NAND单元块)移动或复制到一或多个目的地块组成。在一些实例中,垃圾收集可引起数据合并,以释放资源(例如,NAND单元)用于后续的擦除及新写入处理。

在一些实例中,在媒体管理操作期间传递的数据可为或可称为传递单元(TU),并且可为由存储器子系统控制器(例如,由如参考图1描述的处理器120)、本地媒体控制器或主机系统(例如,图1的主机系统105)在内部管理的数据的最小大小。一或多个TU可与码字相关联(例如,位于码字内),及可对应于逻辑地址(例如,TU地址(TUA))及物理地址(例如,可与称为平台物理地址(PPA)的NAND单元的物理地址有关的抽象物理地址,例如快闪逻辑地址(FLA))。为了合并数据及/或空闲资源以用于后续存取操作,可将TU写入新位置(例如,目标地址),并且可擦除原始块(例如,从其移动TU的块)。可使用数(池、列表、队列等)选择用于垃圾收集的候选者(例如,块)。在一些实例中,候选者可由记分板302保持。如本文所述,将TU写入新块,使得给定的一组TU驻存在同一码字的边界内以允许写入的数据保持符合快照读取的条件可能是有益的。也就是说,以与TU最初由主机系统写入相同的方式将TU写入新块可能是有益的。在写入操作期间保持相同的码字边界可提高存储器子系统的整体性能。

为了将有效TU移动(例如,写入)到同一码字内的目的地块,在将TU写出到目的地块之前,可使用记分板302对与有效TU相关联的条目进行分组。每个条目可至少包含与TU相关联的TUA以及FLA。另外或替代地,在可包含于链表中的其它参数之中,链表可包含下一节点标识符。下一节点标识符可指示用于媒体管理操作的后续TU。因此,利用其中每个条目指示下一(例如后续)TU的列表可允许有效TU写入到目的地块,使得TU与特定码字边界对准。

在一些实例中,一个或多个条目可由记分板302保持。条目可由用于媒体管理操作的TU的列表(例如,队列、池等)组成。举例来说,可发生读取操作,及可根据与TU相关联的码字将每个TU的TUA及/或FLA存储(例如,分组)到记分板302。存储每个TUA及/或FLA可在记分板302处生成列表(例如,链表)。列表的次序(例如,读取命令基于相关联码字进行分组的次序)可允许TU写入到目的地块,使得TU与相关联码字的边界对准。在其它实例中,可使用预测算法(例如,用于预测主机系统可发布读取命令的次序的算法)动态地计算链表的次序。

在阶段305,可执行一或多个操作以识别有效数据(例如TU)。尽管块中的有效TU的计数可容易地可用(例如,可用于控制器),但可识别每一有效TU的位置。在一些实例中,可使用范围流过程320或重放流过程325来识别有效TU的位置。范围流过程320可包含处理移动或复制整个存储器子系统的命令。另外或替代地,重放流过程325可使用缓冲器(例如,读取缓冲器335),且可循环通过块中的物理位置。

在阶段310,可执行一或多个操作以读取在305识别的有效数据(例如TU)。举例来说,在识别到有效TU之后,可将对应于每一有效TU的FLA与记分板302所保持的条目进行比较。如果对应于有效TU的FLA与记分板302所保持的FLA匹配,则与有效TU相关联的读取命令可出现。相反,如果FLA不匹配,则可释放记分板302所保持的条目(例如,移动到链表的尾部)。在其它实例中,如果FLA不匹配,则系统可经配置以继续循环通过有效TU,直到FLA与记分板302所保持的条目匹配为止。

在阶段315,可执行一或多个操作以写入在阶段310读取的有效数据(例如TU)。如本文所论述,对应于有效TU的FLA与记分板102所保持的FLA匹配时,发布与有效TU相关联的读取命令。另外或替代地,基于正发布的读取命令,可将与有效TU相关联的数据写入(例如,移动)到目的地块(例如,到目的地地址)。由于使用链表,可将与有效TU相关联的数据依序地写入到目的地块。

在阶段305,可使用各种方法来确定有效数据(例如有效TU)。举例来说,重放流过程325可通过使存储在缓冲器内(例如,读取缓冲器335内)的各种TU迭代来支持有效数据的确定。缓冲器可包含对应于从中读取相应TU的块中的位置的一或多个地址(例如,TUA及/或FLA)。在一些实例中,重放流过程325可基于与模式寄存器及/或控制器(例如,存储器子系统控制器、本地媒体控制器)相关联的一或多个设置来选择。也就是说,使用重放流过程325可为任选的。在一些实例中,可在多个阶段(例如,第一阶段330及第二阶段340)执行重放流过程325。

当使用重放流过程325时,读取缓冲器335可在第一阶段330期间接收信号371。信号371可起始读取缓冲器335以循环通过一或多个TU(例如,如373所示))。也就是说,读取缓冲器335可根据发布读取命令的次序来映射(例如,确定、识别等)潜在有效的TU的TUA及FLA。在第二阶段340期间,可识别每一TU的TUA及FLA,并将其提供给记分板302(例如,经由信号375及/或信号369)。在一些实例中,第一阶段330及第二阶段340可为异步的(例如,持续时间可在第一阶段330的开始与第二阶段340的完成之间发生)。

在识别TUA及FLA并将TUA及FLA提供给记分板之后,可在记分板302处编译列表(例如,链表)。在一些实例中,随后可发布TUA及FLA的查找(例如,在350处)以确定相关联数据是否保持有效,且如果是,则可将有效数据写入到目的地块(例如,依序地)。在一些实例中,查找350可以接收读取响应的次序发生,且可执行查找350以确定TUA及FLA是否与存储在记分板302处的条目匹配。因为系统可利用链表,所以存储到记分板302的TUA及FLA可与每个接收到的读取响应的相应TUA及FLA相比较(例如,依序比较)。取决于比较的结果,可发布写入命令并且可将TU写入到目的地块。在一些实例中,可将与同一码字相关联的TU分组在一起并连续地写入到目的地块。

范围流过程320可包含折叠整个存储器子系统的数据(例如,移动及组织数据)的处理命令。举例来说,可基于与模式寄存器及/或控制器(例如存储器子系统控制器、本地媒体控制器)相关联的一或多个设置来选择范围流过程320。也就是说,使用范围流过程320可为任选的。在一些实例中,范围流过程320可包含为指示要扫描的TUA的开始及结束列表所作出的请求。在一些实例中,当作出此请求(即,由控制器及/或主机系统识别)时,设定标记以沿着要扫描的TUA的列表引导固件。

当使用范围流过程320时,可发布针对特定块中的每一FLA的读取命令。可将对应TUA及FLA存储到记分板302,作为列表(例如链表)的一部分。在一些实例中,可(例如在350处)接着发布TUA及FLA的查找,以确定相关联的数据是否保持有效,并将有效数据写入(例如依序)到目的地块。由于系统可利用链表,因此所识别的TUA及FLA可与列表的第一条目(例如,列表的头部)进行比较。取决于比较的结果,可发布写入命令并且可将TU写入到目的地块。在一些实例中,可将与同一码字相关联的TU分组在一起并连续地写入到目的地块。

在一些实例中,范围流过程320及重放流过程325两者可导致执行查找350,以确定读取响应(例如,对应于读取响应的TUA及FLA)是否与存储在记分板302处的条目匹配。因此,可经由信号381将与读取响应相关联的TUA及FLA提供给记分板302。可通过控制器或其它组件将信号381传输到记分板302。在一些实例中,可在第一时间(例如,在350处;未展示)将信号381传输到记分板302,及可在第二时间(例如,在355处,经由信号383)接收比较的结果。因此,在一些实例中,比较的部分可在阶段305处(例如,在其期间)及在阶段310处(例如,在其期间)出现。在一些实例中,在350处及在355处执行的操作可为异步的(例如,可在由各个组件在350及355处执行的操作之间出现持续时间)。

在接收到读取响应时,对应TUA及FLA可与存储在记分板302处的条目中的第一条目(例如,列表的头部)进行比较。在一些例子中,TUA及FLA可能与第一条目不匹配。举例来说,第一条目与首先接收到的TUA及FLA的比较可指示所述条目不匹配。在此实例中,可释放列表的第一条目(例如,移动到列表的底部)。因此,可将TUA及FLA与列表中的一后续条目(或多个条目)进行比较,直到确定匹配为止。一旦确定匹配,就可发布(例如在360处)相关联TU的读取,且可随后将TU写入到目的地块(例如在365处,其可在阶段315处发生)。在一些实例中,阶段310及阶段315可为异步的(例如两个阶段之间可出现持续时间)。

根据一些方面,与同一码字(或多个码字)相关联的条目可一起分组在记分板302中。举例来说,与同一码字相关联的条目可一起分组在记分板302中,使得当写入到目的地块时(例如,当发布写入命令时),条目保持与在目的地块处的同一码字相关联。也就是说,可发布写入命令用于分组在一起的条目,使得将有效TU写入同一码字并且有效TU与目的地块上的码字边界对准。在一些实例中,为了对记分板302的条目进行分组,可基于目的地块处的存储器页的码字大小或基于TU相对于源存储器页(例如,相对于源存储器页上的码字边界)的相对位置使用对TU的条目进行分组的排序算法对条目进行排序。举例来说,给定大小(例如,4KB或8KB)的一组TU选择用于媒体管理操作并进行排序,使得对应于所述一组TU的条目一起分组在记分板302中。通过将对应于所述一组TU的条目一起分组在记分板302中,可针对所述302中的每个条目依序(或根据某一其它次序)发布写入命令,使得在目的地块处将TU写入到同一码字(例如,与码字边界对准)。此类技术可允许先前存储在同一码字内(及因此符合快照读取条件)的数据(例如TU)保持在媒体管理操作之后符合快照读取的条件(例如,由于在目的地块的存储器页上的同一码字处或码字边界内,TU被写入到目的地块)。

图4是根据本公开的一些实例的用于执行用于存储器子系统的媒体管理的快照读取优化的实例记分板的框图400。媒体管理操作说明读取序列405、读取响应410及写入命令415。在一些实例中,写入命令415可基于在媒体管理操作期间读取序列405及读取响应410的次序。另外或替代地,可使用记分板425来实施媒体管理操作,所述记分板可为如参考图3所描述的记分板302的实例。在一些实例中,记分板425可包含有助于媒体管理操作的一或多个记分板条目420,例如,如参考图3描述的记分板302的条目。

在一些实例中,图4说明媒体管理操作的操作。如本文所论述,媒体管理操作可发生,以独立于任何直接主机系统交互将数据从一个位置迁移到另一位置。在图4的上下文中,读取序列405、读取响应410及写入命令415中的每一者可与块(例如数据块)相关联。每一块可包含能够存储有限数据量的一或多个页。举例来说,每个块可包含32个页,其各自能够存储4KB或8KB的数据(或其它数据量)。出于说明性目的,读取序列405、读取响应410及写入命令415中的每一者说明十二(12)个有效数据块(编号为1到12)及各种脏/过期数据及/或擦除数据的块。脏数据是高速缓冲存储器中尚未保存到媒体(例如NAND)的最新版本的数据。过期数据包含先前写入但不再与有效逻辑地址,例如主机系统所参考的逻辑地址(例如,在物理到逻辑(P2L)映射表中)相关联的数据。每个有效数据块(例如,1到12)可为TU或可称为TU。

在一些实例中,每个TU可与一或多个码字(例如,码字430、435中的一个)相关联。每个码字可包含边界,及多个TU可处于单个边界内。举例来说,如图4所示,码字430的边界可包含第一及第二TU。也就是说,第一及第二TU可与第一码字相关联。

范围流过程(例如,如参考图3所描述的范围流过程320)及/或重放流过程(例如,如参考图3所描述的重放流过程325)可与读取序列405相关联。举例来说,范围流过程及/或重放流过程可发布用于读取媒体管理操作的TU的一或多个读取命令。如图4中所示且仅出于说明性目的,读取序列405可发布TU 1到12的一或多个读取命令。读取序列405可同时发布读取命令,使得针对每一后续TU的读取命令按序发布(即,连续发布针对每一TU的读取命令)。可将读取命令存储到记分板425作为列表(例如链表、树循环缓冲器,或树)。在一些实例中,与每个TU相关联的TUA及FLA可作为记分板条目420存储在记分板425(例如,图3的记分板302)中。通过存储与每个码字相关联的条目,具有同一码字的条目可分组在一起。因此,当写入到目的地块时,条目可与同一码字相关联。

在一些实例中,记分板条目420可存储与每一TU相关联的相应值。因此,当接收到相关联读取响应(即,与存储到记分板425的TUA、FLA及/或码字相关联的响应)时,可更新相应值。基于存储在记分板条目420中的值,可按顺序次序将TU写入到目的地块。下文在表1中示出单个记分板条目的潜在状态的列表。

表1

如表1中所示,记分板425可包含多种条目。页(及TU 1到12)中的每一者可与相应条目相关联。举例来说,一些页(及TU)可与同一条目相关联,且其它页(及TU)可与不同条目相关联。每一条目表示相应的页及/或TU的当前状态。

在一些实例中,条目“0”表示空状态。空状态可指示所述页是空的(例如其先前已擦除),且无有效数据将从所述页读取及/或所述页被自由写入。在一些实例中,条目“1”表示已识别到TUA及FLA。在一些实例中,条目“2”表示已对TUA及FLA执行查找,以确定相关联的数据是否仍有效。

在一些实例中,条目“3”表示关于与TUA及FLA相关联的数据是否有效的响应。如果所述数据有效,则所述条目保留在记分板上。如果所述数据无效,则可将所述条目移动到链表的尾部并指派“0”。在一些实例中,条目“4”表示有效数据正被分配给缓冲器(例如,参考图3的读取缓冲器335)。在一些实例中,条目“5”表示已读取与TUA及FLA相关联的有效数据。

在一些实例中,条目“6”表示已接收到与TUA及FLA相关联的有效数据。在一些实例中,条目“7”表示将写入有效读取数据。在已写入数据之后,条目可被指派“0”及可移动到链表的尾部。这可指示数据被成功地(且依序地)回写。

在发布读取序列405之后,可以非顺序次序接收读取响应410(例如,在记分板425处)。举例来说,如图4中所示,可以非顺序次序或至少不同于发布读取序列405的次序接收每个响应。在一些实例中,可以不同于读取序列405的次序接收有效数据,接收到的有效数据可由脏及/或过期数据,或两者的一或多个块分离。以非顺序次序接收读取响应序列410可归因于多种原因,包含但不限于特定信道是临时用于不同操作(例如,用于主机读取操作)。如果以接收到的次序(即,非顺序次序)将读取响应410写入到目的地块,则可降低存储器子系统的整体性能。因此,如图4所示,基于确定与所识别的条目相关联的码字边界来发布写入命令415可能是有益的。

另外或替代地,一或多个码字(例如,码字440)可能未由主机装置映射。举例来说,由于在移动或传递数据时出现一或多个错误(例如,由于来自主机装置的一或多个命令)、码字映射的不当更新,码字440可变为未映射,这可引起数据丢失或其它问题。在传统存储器系统中,可以不同于接收读取响应410的次序的次序读取(例如,作为读取序列405的一部分)未映射的码字(例如,码字440),及将其写入(例如,作为写入命令415的一部分)到存储器子系统。在写入之后,可更新(例如,在P2L表中)未映射的码字440的映射,从而允许主机将其它存取命令(例如,读取命令、写入命令)发布到码字440。这还允许以能够利用例如快照读取的快速读取操作的次序将码字440写入到目的地块,从而提高存储器子系统的整体性能。

为了发布写入命令415,使得TU与码字边界对准,与相应TU相关联的条目可由记分板425保持。如本文所论述,在接收到读取响应410时,可根据相应TU的位置对条目进行排序。举例来说,记分板425可经配置以及与相关联码字或TU相对于码字边界的相对位置来对每个条目进行排序。举例来说,TU“1”及“2”可与码字435相关联,及TU“7”及“8”可与码字430相关联。在接收到读取响应410之后,记分板425可经配置以根据码字430及435对每个条目(例如,条目“1”、“2”、“7”及“8”)进行排序。因为条目“1”及“2”与码字435相关联,及因为条目“7”及“8”与码字430相关联,所以条目“1”及“2”可进行分组及条目“7”及“8”可进行分组。也就是说,可发布与条目“1”及“2”相关联的写入命令415,使得条目保持与同一码字相关联。类似地,可发布与条目“7”及“8”相关联的写入命令415,使得条目保持与同一码字相关联。在将类似地分组的条目之间接收到脏及/或过期数据的情况下,记分板可更新与每个TU相关联的条目,使得重新布置有效数据及/或脏及/或过期数据。因此,当发布写入命令415时,可写入TU,使得每一个与在读取序列405中相同的码字相关联。

在一些情况下,当重新布置有效数据及/或脏及/或过期数据时,数据可插入TU之间,以便确保(例如,给定大小的)一组TU与(例如,给定大小的)同一码字相关联。举例来说,可插入无效数据、不与读取操作相关联的数据等,以确保当写入到目的地块时,每个TU保持与同一码字相关联。另外或替代地,在垃圾收集之前符合快照读取的条件的数据(例如,由于数据与同一码字相关联)可在收集之后保持符合快照读取的条件。举例来说,可对记分板425中的条目进行排序,使得存储在源位置处及跨越多个码字的TU可分组在一起,及可发布在目的地位置处将TU写入到同一码字(例如,在码字边界内)的写入命令415。

图5说明根据本文所公开的实例的支持用于一组媒体管理操作的快照读取优化的计算机系统500的实例机器。计算机系统500可包含用于致使机器执行本文中所描述的技术中的任何一或多种的指令集。在一些实例中,计算机系统500可对应于主机系统(例如,参考图1描述的主机系统105),所述主机系统包含存储器子系统(例如,参考图1描述的存储器子系统110),与所述存储器子系统耦合,或利用所述存储器子系统,或可用于执行控制器的操作(例如,执行操作系统以执行对应于参考图1描述的码字管理器150的操作)。在一些实例中,机器可与局域网(LAN)、内联网、外联网及/或因特网中的其它机器连接(例如,联网)。机器可作为对等(或分散式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。

机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络器具、服务器、网络路由器、开关或桥接器,或能够(依序或以其它方式)执行指定由所述机器采取的动作的一组指令的任何机器。此外,虽然示出了单个机器,但是术语“机器”还可包含单独地或共同地执行指令集(或多个指令集)以执行本文讨论的任何一或多种方法的机器的任何集合。

实例计算机系统500可包含处理装置505、主存储器510(例如,ROM、快闪存储器、例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等的DRAM)、静态存储器515(例如快闪存储器、静态RAM(SRAM)等),及数据存储系统525,其经由总线545彼此通信。

处理装置505表示一或多个通用处理装置,例如微处理器、中央处理单元等等。更具体来说,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置505也可为一或多个专用处理装置,例如ASIC、FPGA、DSP、网络处理器等等。处理装置505经配置以执行指令535以用于执行本文中所论述的操作及步骤。计算机系统500可进一步包含网络接口装置520以在网络540上通信。

数据存储系统525可包含机器可读存储媒体530(也称为计算机可读媒体),其上存储有体现本文中所描述的任何一或多种方法或功能的指令535或软件的一或多个集合。指令535还可在其由计算机系统500执行期间完全地或至少部分地驻存在主存储器510内及/或处理装置505内,主存储器510及处理装置505也构成机器可读存储媒体。机器可读存储媒体530、数据存储系统525及/或主存储器510可对应于存储器子系统。

在一个实例中,指令535包含用于实施对应于码字管理器550(例如,参考图1描述的码字管理器150)的功能性的指令。尽管机器可读存储媒体530被示为单个媒体,但术语“机器可读存储媒体”可包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还可包含能够存储或编码供机器执行的指令集合且致使机器执行本公开的方法中的任何一或多种的任何媒体。术语“机器可读存储媒体”可包含但不限于固态存储器、光学媒体及磁性媒体。

已关于计算机存储器内的数据位的操作的算法及符号表示而呈现先前详细描述的一些部分。这些算法描述及表示是数据处理领域的技术人员用于将其工作的主旨最有效地传达给本领域的其它技术人员的方式。算法在这里并且通常被认为是产生期望结果的操作的自洽序列。操作是要求对物理量进行物理控制的操作。这些量通常但未必呈能够被存储、组合、比较及以其它方式控制的电或磁信号的形式。有时,主要出于通用的原因,已经证明将这些信号称为位、值、元件、符号、字符、术语、数目或类似物是方便的。

然而,应牢记,所有这些及类似术语应与适当物理量相关联,且仅仅是应用于这些量的方便标签。本公开可指控制及变换计算机系统的寄存器及存储器内的表示为物理(电子)数量的数据为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作及过程。

本公开还涉及一种用于执行本文中的操作的设备。此设备可专门构造用于所需目的,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、CD-ROM及磁光盘、ROM、RAM、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令并且各自耦合到计算机系统总线的任何类型的媒体。

本文中呈现的算法及显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或其可证明构造用于执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现多种这些系统的结构。另外,并不参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文所描述的本公开的教示。

本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以进行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如ROM、RAM、磁盘存储媒体、光学存储媒体、快闪存储器组件等。

在前述说明书中,已参考其特定实例描述了本公开的实例。将显而易见的是,可在不脱离所附权利要求书中阐述的本公开的实施例的更广精神及范围的情况下对其进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书及图式。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号