首页 / 专利分类库 / 信息存储 / 用于控制存储器件中的存储块的方法

用于控制存储器件中的存储的方法

申请号 CN202211610579.4 申请日 2022-12-12 公开(公告)号 CN118053480A 公开(公告)日 2024-05-17
申请人 长江存储科技有限责任公司; 发明人 胡海洋;
摘要 本公开描述了一种控制存储 块 的方法。该方法包括:确定多个地址单元(AU)中的第一组AU的第一写入版本号,其中,第一组AU中的每个AU包括多个存储块的至少一个逻辑块地址(LBA);以及确定第一组AU的第二写入版本号。该方法包括:计算第一写入版本号与第二写入版本号之间的差;以及确定多个AU中的第二组AU的第三写入版本号。该方法还包括:使用第一写入版本号、差和第三写入版本号来确定第一组AU的动态属性;使用动态属性来确定第一组AU的活跃状态;以及基于活跃状态来移动数据。
权利要求

1.一种控制存储的方法,包括:
确定多个地址单元(AU)中的第一组AU的第一写入版本号,其中,所述第一组AU中的每个AU包括多个存储块的至少一个逻辑块地址(LBA);
确定所述第一组AU的第二写入版本号;
计算所述第一写入版本号与所述第二写入版本号之间的差;
确定所述多个AU中的第二组AU的第三写入版本号;
使用所述第一写入版本号、所述差和所述第三写入版本号来确定所述第一组AU的动态属性;
使用所述动态属性来确定所述第一组AU的活跃状态;
确定多个数据单元的擦除计数;
确定第一数据单元具有较高擦除计数;
确定第二数据单元具有较低擦除计数;以及
基于所述活跃状态,将存储在所述第一组AU中的数据移动到所述多个数据单元中的所述第一数据单元或所述第二数据单元中。
2.根据权利要求1所述的方法,其中,确定所述动态属性还包括:将所述第二写入版本号与所述差相加并且减去所述第三写入版本号。
3.根据权利要求1所述的方法,其中,确定所述第一数据单元具有较高擦除计数还包括:确定所述第一数据单元的擦除计数高于预定擦除计数阈值
4.根据权利要求1所述的方法,其中,确定所述第一数据单元具有较高擦除计数还包括:确定所述第一数据单元的擦除计数高于平均擦除计数。
5.根据权利要求1所述的方法,其中,确定所述第二组AU的所述第三写入版本号还包括:确定所述多个存储块的最新全局版本,其中,所述第二组AU是最后更新的一组AU。
6.根据权利要求1所述的方法,其中,计算所述差还包括:确定主机控制器在所述第一写入版本号与所述第二写入版本号之间已经访问所述多个AU的次数。
7.根据权利要求1所述的方法,其中,响应于确定所述第一组AU要求更新来确定所述动态属性。
8.根据权利要求1所述的方法,还包括:使用所述动态属性来确定所述第一组AU的活跃状态。
9.根据权利要求8所述的方法,其中,确定所述活跃状态还包括:
响应于所述动态属性小于阈值,为所述第一组AU指派热数据状态;以及
响应于所述动态属性大于阈值,为所述第一组AU指派冷数据状态。
10.根据权利要求9所述的方法,还包括:
响应于为所述第一组AU指派所述冷数据状态,将存储在所述第一组AU中的所述数据移动到所述第一数据单元;以及
响应于为所述第一组AU指派所述热数据状态,将存储在所述第一组AU中的所述数据移动到所述第二数据单元。
11.一种电子系统,包括:
存储介质,所述存储介质包括多个闪存阵列,其中,所述多个闪存阵列中的每个闪存阵列包括多个数据单元;
主机计算机;以及
主机控制器,所述主机控制器被配置为:
确定多个地址单元(AU)中的第一组AU的第一写入版本号,其中,所述第一组AU中的每个AU包括多个存储块的至少一个逻辑块地址(LBA);
确定所述第一组AU的第二写入版本号;
计算所述第一写入版本号与所述第二写入版本号之间的差;
确定所述多个AU中的第二组AU的第三写入版本号;
使用所述第一写入版本号、所述差和所述第三写入版本号来确定所述第一组AU的动态属性;
使用所述动态属性来确定所述第一组AU的活跃状态;
确定所述多个数据单元的擦除计数;
确定第一数据单元具有较高擦除计数;
确定第二数据单元具有较低擦除计数;以及
基于所述活跃状态,将存储在所述第一组AU中的数据移动到所述多个数据单元中的所述第一数据单元或所述第二数据单元中。
12.根据权利要求11所述的电子系统,其中,为了确定所述动态属性,所述主机控制器还被配置为:将所述第二写入版本号与所述差相加并且减去所述第三写入版本号。
13.根据权利要求11所述的电子系统,其中,为了确定所述第一数据单元具有较高擦除计数,所述主机控制器还被配置为:确定所述第一数据单元的擦除计数高于预定擦除计数阈值。
14.根据权利要求11所述的电子系统,其中,为了确定所述第一数据单元具有较高擦除计数,所述主机控制器还被配置为:确定所述第一数据单元的擦除计数高于平均擦除计数。
15.根据权利要求11所述的电子系统,其中,为了确定所述第二组AU的所述第三写入版本号,所述主机控制器还被配置为:确定所述多个存储块的最新全局版本,其中,所述第二组AU是最后更新的一组AU。
16.根据权利要求11所述的电子系统,其中,为了计算所述差,所述主机控制器还被配置为:确定主机控制器在所述第一写入版本号与所述第二写入版本号之间已经访问所述多个AU的次数。
17.根据权利要求11所述的电子系统,其中,所述主机控制器还被配置为响应于确定所述第一组AU要求更新来确定所述动态属性。
18.一种包含计算机可执行程序的非暂时性计算机可读介质,所述计算机可执行程序在由处理器执行时,用于实施用于控制存储块的方法,所述方法包括:
确定多个地址单元(AU)中的第一组AU的第一写入版本号,其中,所述第一组AU中的每个AU包括多个存储块的至少一个逻辑块地址(LBA);
确定所述第一组AU的第二写入版本号;
计算所述第一写入版本号与所述第二写入版本号之间的差;
确定所述多个AU中的第二组AU的第三写入版本号;
使用所述第一写入版本号、所述差和所述第三写入版本号来确定所述第一组AU的动态属性;
使用所述动态属性来确定所述第一组AU的活跃状态;
确定多个数据单元的擦除计数;
确定第一数据单元具有较高擦除计数;
确定第二数据单元具有较低擦除计数;以及
基于所述活跃状态,将存储在所述第一组AU中的数据移动到所述多个数据单元中的所述第一数据单元或所述第二数据单元中。
19.根据权利要求18所述的非暂时性计算机可读介质,其中,确定所述动态属性包括:
将所述第二写入版本号与所述差相加并且减去所述第三写入版本号。
20.根据权利要求18所述的非暂时性计算机可读介质,其中,确定所述第一数据单元具有较高擦除计数还包括:确定所述第一数据单元的擦除计数高于预定擦除计数阈值。

说明书全文

用于控制存储器件中的存储的方法

技术领域

[0001] 本公开总体上涉及用于控制存储器件中的存储块的方法。

背景技术

[0002] 随着半导体技术的进步,对更高存储容量、更快处理系统、更高性能和更低成本的需求已经不断增加。为了满足这些需求,半导体行业持续缩小半导体器件的维度。
[0003] 本公开涉及存储器件以及存储器件的操作方法。闪存器件是一种低成本、高密度、非易失性固态存储介质,可以对该闪存器件进行电擦除和重新编程。闪存器件可以包括NOR闪存器件和NAND闪存器件。可以由闪存器件执行各种操作(例如,读取、编程(写入)和擦除),以将每个存储单元的阈值电压改变到标称电平。对于NAND闪存器件,可以在块级别执行擦除操作,并且可以在页级别执行编程操作或读取操作。发明内容
[0004] 在本公开中描述了用于模拟电源电路的方法和用于执行该方法的系统的实施例
[0005] 本公开的一些实施例涉及一种控制存储块的方法。该方法包括:确定多个地址单元(address unit,AU)中的第一组AU的第一写入版本号,其中,第一组AU中的每个AU包括多个存储块的至少一个逻辑块地址(logical block address,LBA);确定第一组AU的第二写入版本号;计算第一写入版本号与第二写入版本号之间的差;以及确定多个AU中的第二组AU的第三写入版本号。该方法还包括:使用第一写入版本号、差和第三写入版本号来确定第一组AU的动态属性;使用动态属性来确定第一组AU的活跃(activeness)状态;确定多个数据单元的擦除计数;以及确定第一数据单元具有较高擦除计数。该方法还包括:确定第二数据单元具有较低擦除计数;以及基于活跃状态,将存储在第一组AU中的数据移动到多个数据单元中的第一数据单元或第二数据单元中。
[0006] 本公开的一些实施例涉及一种电子系统,包括:存储介质,该存储介质包括多个闪存阵列、主机计算机和主机控制器。多个闪存阵列中的每个闪存阵列包括多个数据单元。主机控制器被配置为:确定多个地址单元(AU)中的第一组AU的第一写入版本号,其中,第一组AU中的每个AU包括多个存储块的至少一个逻辑块地址(LBA);确定第一组AU的第二写入版本号;计算第一写入版本号与第二写入版本号之间的差;以及确定多个AU中的第二组AU的第三写入版本号。主机控制器还被配置为:使用第一写入版本号、差和第三写入版本号来确定第一组AU的动态属性;使用动态属性来确定第一组AU的活跃状态;确定多个数据单元的擦除计数;以及确定第一数据单元具有较高擦除计数。主机控制器还被配置为:确定第二数据单元具有较低擦除计数;以及基于活跃状态,将存储在第一组AU中的数据移动到多个数据单元中的第一数据单元或第二数据单元中。
[0007] 本公开的一些实施例涉及一种包含计算机可执行程序的非暂时性计算机可读介质,该计算机可执行程序在由处理器执行时,用于实施用于控制存储块的方法。该方法包括:确定多个地址单元(AU)中的第一组AU的第一写入版本号,其中,第一组AU中的每个AU包括多个存储块的至少一个逻辑块地址(LBA);确定第一组AU的第二写入版本号;计算第一写入版本号与第二写入版本号之间的差;以及确定多个AU中的第二组AU的第三写入版本号。该方法还包括:使用第一写入版本号、差和第三写入版本号来确定第一组AU的动态属性;使用动态属性来确定第一组AU的活跃状态;确定多个数据单元的擦除计数;以及确定第一数据单元具有较高擦除计数。该方法还包括:确定第二数据单元具有较低擦除计数;以及基于活跃状态,将存储在第一组AU中的数据移动到多个数据单元中的第一数据单元或第二数据单元中。
附图说明
[0008] 并入本文并形成说明书的一部分的附图示出了本公开的实施例,并且连同说明书一起进一步用于解释本公开的原理,并使相关领域技术人员能够制造和使用本公开。
[0009] 图1示出了根据一些实施例的示例性闪存系统的框图
[0010] 图2是根据一些实施例的存储器件的映射表的示意图。
[0011] 图3是根据一些实施例的用于将动态属性指派给地址单元(AU)的示例图。
[0012] 图4是根据一些实施例的用于冲洗和更新页指针表(page pointer table,PPT)的示例性方法的流程图
[0013] 本发明的特征和优点将从以下结合附图的详细描述中变得更加明显,在附图中相同的附图标记始终标识对应的元素。在附图中,相似的附图标记通常指示相同的、功能相似的和/或结构相似的元素。元素首次出现的附图由对应的附图标记中最左边的数字指示。
[0014] 将参考附图描述本公开的实施例。

具体实施方式

[0015] 尽管讨论了具体的配置和布置,但应当理解,这样做只是出于说明性的目的。相关领域的技术人员将认识到,在不脱离本公开的精神和范围的情况下,可以使用其他配置和布置。对于相关领域的技术人员将显而易见的是,本公开还可以在各种其他应用中采用。
[0016] 注意,说明书中对“一个实施例”、“实施例”、“示例实施例”、“一些实施例”等的引用指示所描述的实施例可以包括特定特征、结构或特性,但每个实施例不一定包括该特定特征、结构或特性。此外,这种短语不一定指代相同的实施例。此外,当结合实施例描述特定特征、结构或特性时,结合其他实施例实现这种特征、结构或特性将在相关领域的技术人员的知识范围内,而无论是否明确描述。
[0017] 通常,术语可以至少部分地根据上下文中的使用来理解。例如,本文所使用的术语“一个或多个”至少部分地取决于上下文,可以用于以单数意义描述任何特征、结构或特性,或者可以用于以复数意义描述特征、结构或特性的组合。类似地,再次强调,诸如“一(a)”、“一个(an)”或“该(the)”之类的术语可以被理解为传达单数用法或传达复数用法,这至少部分地取决于上下文。此外,术语“基于”可以被理解为不一定旨在传达一组排他的因素,而是可以允许存在不一定明确描述的附加因素,再次强调,这至少部分地取决于上下文。
[0018] 对于非易失性存储器件,对数据块重复执行擦除和写入操作可能逐渐导致存储单元磨损(wear)。随着时间的推移,存储单元可能丢失被编程的能或保留代表所存储的数据的电荷的能力,这进而可以导致可能使得存储器件的部分不可用的位错误。为了改进存储单元磨损均衡和存储效率,存储在非易失性存储器件中的数据可以被标记有活跃状态,例如,热数据或冷数据。通常,热数据可以是预计被相对频繁地更新和使用的一种类型的数据。与热数据相比,冷数据可以是被相对不频繁地更新或使用的一种类型的数据。例如,在考虑跨整个闪存芯片的块的静态磨损均衡模型下,如果数据的版本号小于阈值,则该数据被确定为冷数据。然而,由于冷数据也可能被定期更新,因此仅使用静态版本号来标记数据可能会导致磨损均衡性能恶化、较低的总字节写入(total bytes written,TBW)、以及非易失性存储器件的不期望的写入放大(write amplification,WA)。因此,需要高效地识别热数据和冷数据,以在非易失性存储器件的存储块之间高效地分配写入操作。高效且一致地操作非易失性存储器可以通过使跨非易失性存储器件的所有存储块的擦除/写入循环的次数均匀来延长该非易失性存储器的寿命。
[0019] 根据本公开的一些实施例,本公开中的各种实施例描述了用于通过动态地标记和布置存储在存储块中的数据来控制对存储块的写入和擦除的方法。在一些实施例中,可以为存储在超级块(例如,相邻物理块的集合)中的数据指派一个或多个动态属性(例如,版本号),该一个或多个动态属性是至少基于最新的全局最新写入版本号和历史写入版本间隔来确定的。在一些实施例中,可以将多个地址单元(AU)分组在一起并为该组指派单个动态属性。在一些实施例中,AU也可以被称为分配单元。历史写入版本间隔可以是在有效AU的当前版本号与上次AU被更新时AU的先前版本号之间的间隔。指派动态属性的好处可以包括但不限于更准确地确定热数据或冷数据以及改进存储器件的磨损均衡。例如,冷数据(例如,不太可能在预定时间量内更新的数据)可以被识别并被移动到具有较高计数(例如,写入、读取和/或擦除计数)的超级块,以平衡跨存储器件的磨损平。
[0020] 图1示出了根据一些实施例的电子系统100的框图。电子系统100可以包括但不限于移动电话、台式计算机、膝上型计算机、平板计算机、车辆计算机、游戏机打印机定位设备、可穿戴电子设备、智能传感器虚拟现实(virtual reality,VR)设备、增强现实(argument reality,AR)设备、物联网(Internet of Things,IoT)设备或其中具有存储设备的任何其他合适的电子设备。电子系统100可以包括主机计算机102、主机控制器104和存储系统110。在一些实施例中,存储系统110可以被称为存储介质、NAND存储系统或固态驱动器(solid state drive,SSD)。存储系统110可以包括I/O接口106、处理器120、本地存储器130、闪存转换层140和闪存芯片150的阵列(例如,NAND闪存器件的阵列)。闪存芯片150可以包括解码器152、页缓冲器154、外围电路156和闪存阵列160。存储系统110和闪存芯片150可以包括附加电路装置或设备,为简单起见,未在本文中描述这些附加电路装置或设备。
[0021] 存储系统110通过I/O接口106与主机控制器104通信。主机控制器104可操作以通过经由I/O接口106发送命令和/或数据来请求存储系统110执行对闪存芯片150的读取操作、编程操作和擦除操作。处理器120可以被配置为从一个或多个闪存芯片150取回数据,并且经由I/O接口106将数据发送到主机控制器104。主机控制器104可以将数据发送到主机计算机102或图1中未示出的其他系统组件。
[0022] 主机计算机102可以包括合适的处理器芯片组和由处理器芯片组执行的软件。处理器芯片组可以包括核心、高速缓存、存储协议控制器(例如,PCIe控制器或SATA控制器)以及任何合适的电路装置。主机计算机102发送要被存储在存储系统110处的数据或通过读取存储系统110来取回数据。
[0023] 主机控制器104发送要被存储在存储系统110处的数据,或通过指示处理器120从闪存芯片150读取数据来取回数据。主机控制器104可以处理从主机计算机102接收到的I/O请求,确保数据完整性和高效存储,并管理存储系统110。
[0024] 接口106可以包括合适的数据总线,该数据总线用于提供在存储系统110与主机控制器104之间的数据和控制通信。在一些实施例中,I/O接口106可以包括串行高级技术附件(serial advanced technology attachment,SATA)接口、快速外围组件互连(peripheral component interconnect express,PCIe)接口、通用串行总线(universal serial bus,USB)接口、快速非易失性存储器(non‑volatile memory express,NVMe)接口或任何合适的接口。
[0025] 存储系统110可以包括处理器120、本地存储器130、闪存转换层140和闪存芯片150。其他合适的组件可以被包括在存储系统110中,并且为了简单起见未在图1中示出或在本文描述。
[0026] 处理器120可以是任何合适的集成电路装置,该集成电路装置被配置为从主机控制器104接收指令,并且通过利用闪存芯片150发送命令和/或数据来执行对闪存芯片150的读取操作、编程操作、擦除操作,如本领域普通技术人员所良好理解的。例如,处理器120可以通过主机控制器104从外部设备或主机计算机102接收针对闪存介质访问的请求,例如,读取操作或写入操作。处理器120还可以被配置为与存储系统110的其他组件通信并控制所述其他组件。例如,处理器120可以针对地址映射信息扫描本地存储器130,并将地址映射信息发送到闪存转换层140。处理器120还可以与闪存芯片150的组件(例如,解码器152、页缓冲器154、外围电路156、闪存阵列160和其他合适的组件)通信。
[0027] 本地存储器130可以用于存储用于处理器120的操作的命令。在一些实施例中,本地存储器130可以是用于存储逻辑到物理(logical‑to‑physical,L2P)映射信息的存储介质。例如,本地存储器130可以包括用于闪存芯片150的扇区的单级直接L2P映射表。在一些实施例中,本地存储器130可以包括用于闪存芯片150的页全局目录信息。页全局目录信息可以存储在随机存取存储器件(random access memory device,RAM)中,并且用作伪高速缓存以提供对映射数据的快速查找。在一些实施例中,本地存储器130可以是静态随机存取存储器(static random access memory,SRAM)存储装置。页全局目录是本领域普通技术人员所良好理解的,并且为简单起见在本文不进行详细描述。在一些实施例中,本地存储器130可以包括软件代码、命令、计算机逻辑、固件、任何合适的信息。本地存储器130还可以包括包含计算机可执行程序的非暂时性计算机可读介质,该计算机可执行程序在由处理器执行时,用于实施用于控制在闪存阵列160中形成的存储器件的方法。
[0028] 闪存转换层(flash translation layer,FTL)140可以是基于设备的FTL并且被配置为提供L2P映射表,该L2P映射表用于在逻辑地址与物理地址之间的转换。由处理器120接收到的用于访问闪存介质的请求可以包括一个或多个逻辑块地址,用户数据应该在该一个或多个逻辑块地址中被读取或写入。闪存转换层140可以被配置为通过扫描各种L2P表来将期望数据的逻辑块地址转换为物理地址。例如,闪存转换层140可以生成L2P映射信息,并且将这种信息发送到位于存储系统110中的存储介质,例如,本地存储器130。闪存转换层140还可以将映射信息发送到位于闪存芯片150上的存储介质,例如,管芯上SRAM或存储单元。闪存转换层140还可以根据处理器120的请求针对L2P信息对前述存储介质进行搜索。在一些实施例中,闪存转换层140可以被配置为从主机控制器104接收指令并执行任何合适的任务,例如,垃圾收集、磨损均衡、读取干扰控制、数据保留控制、坏块管理等。
[0029] 解码器152可以包括行解码器和列解码器。在一些实施例中,解码器152还可以包括位线驱动器和字线驱动器。列解码器或位线驱动器可以被配置为通过施加从一个或多个电压发生器生成的位线电压来选择闪存阵列160的一个或多个NAND存储串。行解码器或字线驱动器可以被配置为使用从电压发生器生成的字线电压来驱动字线。
[0030] 页缓冲器154可以被配置为根据来自处理器120的控制信号从闪存阵列160读取数据和向闪存阵列160写入数据。在一些实施例中,页缓冲器154可以包括其他合适的电路装置,例如,一个或多个读出放大器电路装置。页缓冲器154可以存储要被编程到闪存阵列160的一页中的一页写入数据。在一些实施例中,页缓冲器154可以执行编程验证操作以确保数据已经被适当地编程到闪存阵列160中。
[0031] 外围电路156可以形成在闪存阵列160周围的区域中。外围电路156可以包含许多数字信号电路、模拟信号电路和/或混合信号电路(例如,有源和/或无源半导体器件,例如,晶体管、二极管、电容器、电阻器等)以支持闪存阵列160的功能,这对于本领域普通技术人员而言将是显而易见的。
[0032] 闪存阵列160可以被配置为存储用户数据,并且包括用于与存储系统110的其他组件通信的电路装置组件。在一些实施例中,每个闪存芯片150可以包括数据高速缓存和三维NAND闪存单元。三维NAND闪存单元可以由垂直定向的存储单元晶体管串(本文称为“存储串”,例如,NAND存储串)延伸穿过交替的导电层和电介质层的堆叠而形成。三维NAND闪存单元可以包括形成在堆叠式存储结构的一侧或多侧(边缘)上的阶梯结构。
[0033] 图2是根据一些实施例的存储器件的映射表的示意图。图2中示出的映射表200可以是针对固态驱动器(SSD)的映射表,并且用于将主机的多个逻辑块地址(LBA)映射到NAND闪存器件的多个物理地址。通常,映射表200可以是单级映射表,并且可能需要相当大的动态随机存取存储器(dynamic random‑access memory,DRAM)缓冲器来存储逻辑索引的映射条目。
[0034] 当SSD的SSD固件通电时,映射表200可以从NAND闪存恢复到DRAM缓冲器,以用于下一个即将到来的地址的映射。为了减少恢复时间,SSD的管理模块可以被配置为将映射表200划分为多个段,并且生成与多个段相对应的多个计数值。在一些实施例中,映射表200包括预定数量的行和列,并且行和列的总数由要被编程的存储块的总数确定。映射表200的每个段可以将一个或多个LBA映射到闪存器件上的存储块的一个或多个对应的物理地址。映射表200可以包含对物理存储在闪存器件中的数据的引用或指针。当映射表200基于写入命令被更新时,对应的段可以指向存储在闪存器件中的实际数据。作为示例,映射表200可以被划分为20个段,这20个段被记为Seg 0~Seg 19。当LBA中的一个LBA由主机更新时,段中的与更新后的LBA相对应的一个段将增加1。随后,如果多个计数值中的一个计数值达到阈值,则SSD固件将触发冲洗操作,以将与LBA中的一个LBA相对应的多个段中的一个段写入到NAND闪存中。可以基于JESD219标准来开发NAND闪存设备中的示例性冲洗段分布,该JESD219标准是由联合电子设备工程委员会(Joint Electron Device Engineering Council,JEDEC)开发的用于评估存储器件耐用性和保持力的标准。SSD固件可以通过从NAND闪存读取这些更新后的段,然后修补新的更新,来恢复映射表。热数据的段将比冷数据的段更频繁地冲洗到NAND闪存。例如,热段(例如,Seg 0和Seg 1)可以比冷段(例如,Seg18和Seg 19)更频繁地被冲洗。冷段可能由SSD固件不频繁地写入。
[0035] 图3示出了根据本公开的一些实施例的用于将动态属性指派给地址单元(AU)的示例性图。本公开中描述的动态属性可以是对存储在NAND闪存器件中的数据被认为是热数据还是冷数据的动态表示。在一些实施例中,动态属性被指派给一个或多个AU,并且可以包括与以下各项相关的信息:(i)存储在一个或多个AU中的数据是否已经由主机控制器访问;以及(ii)对前述数据是否将由主机控制器访问的估计。AU可以包括至少一个LBA。在一些实施例中,如果包括多个LBA,则可以按升序或降序对LBA进行排序。在一些实施例中,可以使用任何合适的次序对LBA进行排序。超级块中的页的物理地址可以被分配给在映射表中的排序后的LBA,直到所有页被分配为止。在一些实施例中,分配第一级页的物理地址,然后分配第二级页的物理地址。
[0036] 被指派给一个或多个AU的动态属性可以基于表示由存储器控制器进行的数据访问的频率的版本号,例如,与主机控制器已经指示数据被写入或更新的次数相对应的计数值。在一些实施例中,其他合适的控制单元(例如,垃圾控制单元)也可以被配置为写入或更新数据。然而,在一些实施例中,不允许垃圾控制单元更新一个或多个AU的版本号。在一些实施例中,AU子组可以包括一个或多个AU。AU子组的示例可以是关于图2描述的数据段(例如,Seg 0或Seg 1)。
[0037] 存储块的操作可以开始于更新被指派给一个或多个超级块的AU子组。可以为在其上执行初始写入操作的AU组的AU子组指派初始版本0,该初始版本0也可以被称为全局开始版本0。在一些实施例中,每次AU组的AU子组由存储器控制器写入时,版本计数将增加适当的增量,例如,1。最新全局版本号可以被指派给最后更新的AU子组。AU子组将保持其被指派的版本号,直到AU子组再次更新为止。
[0038] 前述操作可以由图3的序列300示出,该序列300描述了针对存储在一个或多个超级块中的数据的AU组执行的写入序列。
[0039] 在步骤302处,在AU组的第一AU子组上发起写入序列。因此,第一AU子组被指派有写入版本号0,该写入版本号0也可以被称为全局开始版本0。
[0040] 在步骤304处,更新第二AU子组。在一些实施例中,第二AU子组可以是与第一AU子组相同的子组。在一些实施例中,第一AU子组和第二AU子组可以是不同的子组。当在步骤304由电子系统100的适当组件(例如,主机控制器104或闪存转换层140)更新第二AU子组时,写入版本号m可以被指派给该第二AU子组。
[0041] 在步骤306处,第二AU子组被再次更新,并且由电子系统100的适当组件(例如,主机控制器104或闪存转换层140)指派更新后的写入版本号n。AU组的其他AU子组在步骤304与步骤306之间被更新,从而导致在步骤304与步骤306之间的版本间隔Δ1,如图3中示出的。在一些实施例中,可以使用等式Δ1=n‑m来确定版本间隔Δ1。较大的版本间隔Δ1将指示更新之间的较长间隔。电子系统100的主机控制器104或闪存转换层140可以被配置为确定AU组的任何AU子组的版本间隔。在一些实施例中,电子系统100的任何合适的组件可以被配置为确定版本间隔。
[0042] 在步骤308处,更新附加的AU子组。在一些实施例中,电子系统100的合适的控制器可以被配置为将最新版本号指派给最新被更新的AU子组。例如,可以将写入版本p指派给最新被更新的AU子组,该写入版本p也可以被称为全局最新版本p。在一些实施例中,在步骤308中更新的AU子组可以是与在步骤306中更新的第二AU子组不同的子组。
[0043] 电子系统100的合适的控制器(例如,主机控制器104或闪存转换层140)可以被配置为将动态属性指派给任何AU子组,例如,在步骤306处更新的第二AU子组。控制器可以被配置为扫描AU组并识别全局最新版本号(例如,全局最新版本p),并确定AU子组的动态属性。在一些实施例中,动态属性可以是对AU子组将何时由控制器再次更新的预期。例如,动态属性可以是在第二AU子组下一次将被更新的时间(例如,在步骤310处)与当前全局最新版本p之间的预期距离。具体地,动态属性可以是通过等式Δ2=n+Δ1‑p计算出的版本距离Δ2。
[0044] 为了进一步说明,考虑以下数值示例。在步骤304处,已经访问了特定的AU子组(例如,第二AU子组)。存储器控制器(例如,电子系统100的主机控制器104或闪存转换层140)将m=100的写入版本号指派给特定的AU子组。在步骤306处,已经再次访问该特定的AU子组,并为该特定的AU子组指派了更新后的写入版本号n=250。电子系统100的存储器控制器可以被配置为使用等式版本间隔Δ1=n‑m=250‑100=150来计算版本间隔Δ1。在步骤308处,更新附加的AU子组,并且已经为与前述特定的AU子组不同的AU子组指派全局最新版本p=300。电子系统100的存储器控制器还可以被配置为使用等式Δ2=n+Δ1‑p=250+150‑300=
100来计算版本距离Δ2。
[0045] 随着全局最新版本p随着时间而增加,指派的动态属性(例如,版本距离Δ2)的值相应地减小,这指示具有指派的动态属性的特定AU子组变得“更热”并且将更有可能被更新。因此,可以依赖被指派给AU组或子组的动态属性来确定AU组或子组的活跃状态。在一些实施例中,活跃状态可以表示数据的更新频率以及数据在未来将被更新的概率两者。电子系统100的控制器(例如,主机控制器104或闪存转换层140)可以被配置为确定活跃状态。在一些实施例中,响应于动态属性低于阈值(例如,数值为80的版本计数),可以为具有确定的动态属性的AU组或子组指派热数据状态。在一些实施例中,响应于动态属性大于阈值,可以为具有动态属性的AU组或子组指派冷数据状态。随着全局最新版本(例如,全局最新版本p)逐渐增加,动态属性(例如,版本距离Δ2)也相应地减小,这指示动态属性的数据变得更有可能被更新。换言之,数据变得更热。在一些实施例中,主机控制器104或闪存转换层140可以被配置为识别具有较高计数(例如,读取计数、写入计数和/或擦除计数)的超级块,并且将具有冷数据状态的AU组或子组的数据移动到具有更高计数的识别出的超级块中。在一些实施例中,主机控制器104和闪存转换层140可以被配置为识别具有较低计数(例如,读取计数、写入计数和/或擦除计数)的超级块,并且将具有热数据状态的AU组或子组的数据移动到具有较低计数的识别出的超级块中。由于热数据可能被更频繁地更新,因此高效地识别热数据和冷数据并将数据分别移动到具有较低计数的超级块和具有较高计数的超级块可以平衡跨存储器件的计数,这进而改进了磨损均衡。
[0046] 在一些实施例中,超级块中的每个超级块与擦除计数相对应。擦除计数可以存储在存储系统的存储器中,例如,图1中示出的存储系统110的本地存储器130和闪存阵列160。擦除计数也可以存储在对应的超级块中。在一些实施例中,闪存转换层(例如,图1中的闪存转换层140)可以管理擦除计数。例如,在对应超级块上的第一次擦除操作之前,擦除计数被设置为0。每次对应的超级块被擦除时,闪存转换层将擦除计数增加1。在一些实施例中,超级块中的每个超级块还可以与其他计数器(例如,读取计数和写入计数)相对应,所述其他计数器被类似地存储并由闪存转换层类似地管理。
[0047] 在一些实施例中,闪存转换层140可以基于预定阈值来识别具有较高计数(例如,读取计数、写入计数和/或擦除计数)的超级块或具有较低计数(例如,读取计数、写入计数和/或擦除计数)的超级块。例如,如果超级块具有高于预定阈值的擦除计数,则闪存转换层140确定该超级块具有较高擦除计数。否则,闪存转换层140确定该超级块具有较低擦除计数。在其他实施例中,闪存转换层140可以基于预定高阈值和预定低阈值来识别具有较高计数(例如,读取计数、写入计数和/或擦除计数)的超级块或具有较低计数(例如,读取计数、写入计数和/或擦除计数)的超级块。例如,如果超级块具有高于预定高阈值的擦除计数,则闪存转换层140确定该超级块具有较高擦除计数。如果超级块具有低于预定低阈值的擦除计数,则闪存转换层140确定该超级块具有较低擦除计数。如果擦除计数在预定高阈值与预定低阈值之间,则擦除计数既不是较低擦除计数也不是较高擦除计数。
[0048] 在又一实施例中,闪存转换层140可以基于平均计数来识别具有较高计数(例如,读取计数、写入计数和/或擦除计数)的超级块或具有较低计数(例如,读取计数、写入计数和/或擦除计数)的超级块。例如,闪存转换层140可以基于存储系统110的超级块的擦除计数来计算存储系统110的平均擦除计数。闪存转换层140可以将超级块的擦除计数相加,并将总和除以超级块的数量。如果超级块具有高于平均擦除计数的擦除计数,则闪存转换层140确定该超级块具有较高擦除计数。否则,闪存转换层140确定该超级块具有较低擦除计数。
[0049] 不同于表示数据热度的静态属性,动态属性不仅考虑特定的AU子组的更新之间的间隔,而且还考虑一个或多个超级块的其他AU的写入进度。将动态属性指派给一个或多个AU提供了这样的好处:更准确地表示数据的“热度”,这进而改进了非易失性存储器件的磨损均衡和寿命,以及其他好处。在一些实施例中,仅允许主机控制器104或闪存转换层140更新版本号。在一些实施例中,不允许电子系统100的其他组件(例如,垃圾控制单元)更新版本号。
[0050] 根据本公开的一些实施例,可以将动态属性指派给多个AU。将多个AU分组并为该组指派动态属性提供了各种好处,例如,更高效地存储版本信息。例如,对多个(例如,1024个)AU单元进行分组并为该组指派单个动态属性与将动态属性指派给前述组中的每个AU相比,可以节省大量存储空间。当该组中的一个AU被访问时,该组的动态属性将被更新。
[0051] 图4是根据本公开的一些实施例的用于冲洗和更新页指针表(PPT)的示例性方法400的流程图。方法400的操作可以以不同的次序和/或变化的次序执行,并且方法400可以包括更多操作,为简单起见,没有描述这些更多操作。方法400在存储块管理中的任何合理应用都在本公开的范围内。
[0052] 根据一些实施例,操作402包括开始方法400。
[0053] 根据一些实施例,操作404包括更新主机的页指针表(PPT)。在一些实施例中,PPT表可以用于将逻辑地址转换为存储器件的物理地址。PPT表可以包括用于维护逻辑到物理转换的转换索引。
[0054] 根据一些实施例,操作406包括读取对应的逻辑块地址(LBA)的版本信息并确认版本号是否已经被更新。如果版本尚未被更新,则进行到操作408。如果版本号已经被更新,则进行到操作410。在一些实施例中,主机控制器(例如,图1的主机控制器104)或闪存转换层(例如,闪存转换层140)可以被配置为使用LBA信息处理逻辑域中的数据。在一些实施例中,每个AU可以具有一个对应的LBA。在一些实施例中,可以将多个AU分组以形成AU组。
[0055] 根据一些实施例,操作408包括将LBA版本号更新为最新版本。在一些实施例中,LBA版本可以由主机控制器(例如,主机控制器104)或闪存转换层(例如,闪存转换层140)更新。例如,主机控制器104或闪存转换层140可以被配置为根据图3中描述的序列300来更新数据的热状态/冷状态。
[0056] 根据一些实施例,操作410包括更新PPT。在一些实施例中,主机控制器104或闪存转换层140可以被配置为扫描存储器件并确定存储器件的磨损水平。例如,主机控制器或闪存转换层140可以被配置为识别具有较高计数(例如,读取计数、写入计数和/或擦除计数)的超级块和具有较低计数(例如,读取计数、写入计数和/或擦除计数)的超级块,并且还被配置为将具有冷数据状态的AU组或子组的数据移动到具有较高计数的识别出的超级块中。在一些实施例中,主机控制器104和闪存转换层140还可以被配置为识别具有较低计数(例如,读取计数、写入计数和/或擦除计数)的超级块,并且将具有热数据状态的AU的组或子组的数据移动到具有较低计数的识别出的超级块中。P202102130‑PA‑CN1
[0057] 由于热数据可能被更频繁地更新而冷数据可能被不那么频繁地更新,因此高效地识别热数据和冷数据并将数据分别移动到具有较低计数的超级块和具有较高计数的超级块可以平衡跨存储器件的计数,这进而改进了磨损均衡。
[0058] 根据一些实施例,操作412包括确认PPT是否已经被更新。如果PPT已经被更新,则操作410进行到操作414。如果PPT尚未被更新,则操作410进行到操作404,该操作404更新主机PPT。
[0059] 根据一些实施例,操作414包括冲洗PPT和版本信息。在一些实施例中,是否执行冲洗动作可以基于一个或多个AU组或子组的活跃状态。
[0060] 操作416包括结束方法400。
[0061] 根据本公开的一些实施例,本公开中的各种实施例描述了用于通过动态地标记和布置存储在存储块中的数据来控制对存储块的写入和擦除的方法。在一些实施例中,可以为存储在超级块中的数据指派一个或多个动态属性(例如,版本号),该一个或多个动态属性是至少基于最新的全局最新写入版本号和历史写入版本间隔来确定的。在一些实施例中,可以将多个AU分组在一起并为该组指派单个动态属性。历史写入版本间隔可以是在有效AU的当前版本号与上次AU被更新时AU的先前版本号之间的间隔。指派的动态属性不仅考虑特定的AU子组的更新之间的间隔,而且还考虑一个或多个超级块的其他AU的写入进度。随着其他AU写入进度的进行,该AU组的动态属性可以相应地改变。将动态属性指派给一个或多个AU提供了这样的好处:更准确地表示数据的“热度”,这进而改进了非易失性存储器件的磨损均衡和寿命,以及其他好处。
[0062] 前述公开概述了若干实施例的特征,使得本领域技术人员可以更好地理解本公开的方面。本领域的技术人员应该认识到的是,他们可以容易地使用本公开作为设计或修改用于执行与本文介绍的实施例相同的目的和/或实现与本文介绍的实施例相同的优点的其他过程和结构的基础。本领域技术人员也应该认识到,这样的等效结构并不脱离本公开的精神和范围,并且他们可以在不脱离本公开的精神和范围的情况下对本文进行各种改变、替换和变更。
QQ群二维码
意见反馈