首页> 中国专利> 使用贪婪无用单元收集的存储器组件中的周期性清空

使用贪婪无用单元收集的存储器组件中的周期性清空

摘要

确定存储在第一存储器处的多个数据块中的每个数据块的有效数据量。基于每个数据块的有效数据量而执行将特定数据块的有效数据从所述第一存储器写入到第二存储器的操作。确定已满足与所述数据块的有效数据写入到所述第一存储器的时间相关联的阈值条件。响应于确定已满足所述阈值条件,基于所述有效数据写入到所述第一存储器的时间而执行将所述数据块的有效数据从所述第一存储器写入到所述第二存储器的所述操作。

著录项

  • 公开/公告号CN113168375A

    专利类型发明专利

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

    原文格式PDF

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

    申请/专利号CN201980080443.7

  • 申请日2019-10-29

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

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

  • 代理人王艳娇

  • 地址 美国爱达荷州

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

说明书

技术领域

本公开的实施例总体上涉及存储器子系统,且更具体地说,涉及周期性地清空使用贪婪无用单元收集技术的存储器组件。

背景技术

存储器子系统可以是存储系统,例如固态驱动器(SSD),且可包含存储数据的一或多个存储器组件。存储器组件可例如为非易失性存储器组件和易失性存储器组件。总的来说,主机系统可利用存储器子系统以在存储器组件处存储数据以及从存储器组件检索数据。

附图说明

根据下文给出的详细描述和本公开的各种实施例的附图,将更充分地理解本公开。

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

图2是根据本公开的一些实施例的基于有效数据量而执行将有效数据从第一存储器移动到第二存储器的操作以及基于有效数据写入到第一存储器的时间而执行将有效数据从第一存储器移动到第二存储器的操作的实例方法的流程图。

图3A说明根据本公开的一些实施例的基于有效数据量而执行将数据从第一存储器移动到第二存储器的操作的实例。

图3B说明根据本公开的一些实施例的基于有效数据量而执行将数据从第一存储器移动到第二存储器的操作的另一实例。

图3C说明根据本公开的一些实施例的选择块的实例,基于有效数据写入到第一存储器的时间而对所述块执行无用单元收集操作。

图4是根据本公开的一些实施例的用以基于不同优先级而执行不同的无用单元收集操作的实例方法的流程图。

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

具体实施方式

本公开的方面涉及周期性地清空使用贪婪无用单元收集(greedy garbagecollection)的存储器组件。存储器子系统在下文也称为“存储器装置”。存储器子系统的实例是存储系统,例如固态驱动器(SSD)。在一些实施例中,存储器子系统是混合式存储器/存储子系统。总的来说,主机系统可利用包含一或多个存储器组件的存储器子系统。主机系统可提供数据以存储于存储器子系统处,且可请求从存储器子系统检索数据。

存储器子系统可包含可存储来自主机系统的数据的多个存储器组件。每个存储器组件可包含不同类型的媒体。媒体的实例包含但不限于非易失性存储器的交叉点阵列和基于快闪的存储器,如单层级单元(SLC)存储器、三层级单元(TLC)存储器和四层级单元(QLC)存储器。

常规存储器子系统可使用贪婪无用单元收集操作以将数据从SLC高速缓存(本文也称为静态高速缓存)再定位到具有不同存储器类型的数据块。在使用两遍次编程的基于快闪的存储器子系统中,在第二遍次期间编程时的断电(power loss)可导致在第一遍次期间编程过的页上的数据丢失。在此情况下,系统可将数据以SLC模式写入,且接着将所述数据再定位到MLC或TLC或QLC。将数据从第一数据块再定位到第二数据块且从第一数据块擦除所述数据在本文可称作无用单元收集。贪婪无用单元收集操作可指基于存储在第一数据块处的有效数据量而将有效数据从第一数据块再定位到第二数据块的操作。有效数据可指成功地写入到数据块的数据,且所述数据尚未被主机系统擦除、指示待擦除、更新或重新编程。因此,有效数据可以是主机系统当前所用的数据,且无效数据可以是主机系统不再使用的数据。

贪婪无用单元收集操作可选择对相对于存储器组件的其它数据块具有最小有效数据量的数据块处的有效数据进行无用单元收集。举例来说,如果一个数据块具有5%的有效数据且存储器组件的另一数据块具有10%的有效数据,则将选择具有5%的有效数据的数据块用于贪婪无用单元收集操作,且所述数据块处的有效数据和无效数据可通过贪婪无用单元收集操作擦除。随后,数据块可用于存储额外主机数据。选择具有最小有效数据量的数据块用于无用单元收集的一个理论依据是,与再定位数据块处的较大有效数据量相比,再定位较小有效数据量可花费较少时间且利用较少计算资源。可在闲置时间期间或在SLC高速缓存的数据块各自存储至少一些有效数据时的背景下执行无用单元收集过程。

在一些情况下,较长数据驻留长度可返回最小有效数据量。数据驻留长度可指从用数据对数据块进行写入时到对所述数据块进行无用单元收集时写入到SLC高速缓存的数据量。较大驻留长度会产生最小有效数据量,因为主机写入业务可包含被随后写入的数据立即覆写的热数据。较大驻留长度意味着在对块进行初始写入的时间与对所述块进行无用单元收集的时间之间写入了大量的主机数据。这增大了在对主机数据进行无用单元收集之前对其覆写的概率。最大驻留长度可收敛到SLC高速缓存的大小。举例来说,对于具有6千兆字节(GB)SLC高速缓存大小的存储器组件,在对SLC高速缓存的第一数据块进行写入的时刻与在触发无用单元收集之前写入的最大数据量之间写入的数据等于所述SLC高速缓存大小。这在无用单元收集遵循先进先出策略的情况下可很容易地设想。相比于以较小数据驻留长度操作的存储器组件,以最长数据驻留长度操作的存储器组件具有最高数据覆写速率且在资源使用方面更合需要。然而,为了选择具有最小有效数据量的数据块以用于无用单元收集,SLC高速缓存中的一些数据块可能因冷主机数据而被忽略且无意中留在SLC高速缓存中而未进行无用单元收集。冷主机数据可指未被主机系统频繁使用或修改的数据(例如,通常是媒体文件)。

随着更多SLC高速缓存数据块被编程有冷主机数据,这些数据块因所述数据块的冷主机数据相比于其它数据块的数据时包含更高的有效数据量而未被选择用于无用单元收集。当使用贪婪无用单元收集操作时,直到SLC高速缓存中的其它数据块的有效数据等于或超过具有冷主机数据的数据块中存储的有效数据量时,才对具有冷主机数据的数据块进行无用单元收集。因此,SLC高速缓存的一部分被“堵塞”。写有新主机数据的SLC高速缓存数据块的数目会减小。相应地,通过贪婪无用单元收集操作一致地选择的数据的较小数据驻留长度会产生较小覆写速率,从而产生比理论上实现的更大的有效数据。因较小数据驻留长度产生的降低的主机数据覆写速率可导致存储器组件的数据块被低效使用。在一些情况下,存储器组件的处理量性能可因数据块的低效使用而降低。另外,数据驻留(例如,冷主机数据)越长,数据越有可能变得受损。因此,本文所公开的技术在确定阈值条件得以满足后就移动冷主机数据。

本公开的方面通过具有一种存储器子系统来解决以上和其它缺陷,所述存储器子系统基于与有效数据写入到数据块的时间相关的阈值条件而改变将针对SLC高速缓存执行的无用单元收集操作的类型。SLC高速缓存的数据可以是通过将有效数据再定位到具有另一存储器类型(例如,TLC、MLC、QLC)的数据块而收集的无用单元。具有另一存储器类型的数据块可以是与SLC高速缓存相同的存储器组件的部分,或可以是不同存储器组件的部分。

在一些实施例中,可将主机数据初始编程到SLC高速缓存。可执行无用单元收集操作(例如,贪婪无用单元收集操作)以对来自SLC高速缓存中具有最小有效数据量的数据块的有效数据进行再定位。有效数据可被复制到具有不同存储器类型的另一数据块。在一些情况下,SLC高速缓存的数据块中的有效数据和无效数据直到数据被成功写入到另一数据块才被擦除。如上所指出,使用第一无用单元收集操作(例如,贪婪无用单元收集操作),可能会忽略一些数据块。因此,响应于确定与有效数据写入到SLC高速缓存的时间相关联的阈值条件,可基于有效数据写入到SLC高速缓存的时间而执行第二无用单元收集操作(例如,存储器清空操作)以将有效数据从SLC高速缓存写入到另一数据块。应理解,贪婪无用单元收集操作和存储器清空操作各自是一种无用单元收集操作类型。

在一些实施例中,指示符可用于确定阈值条件何时被满足。在数据块被编程有主机数据的时间与对数据块进行无用单元收集的时间之间编程的其它SLC高速缓存块的数目可用作指示符。新近开放以对主机数据进行编程的每个SLC高速缓存数据块被给定索引值。每当开放新的SLC高速缓存块时,索引值递增。SLC高速缓存块的索引值与最新开放SLC高速缓存块的索引值的差可用作驻留长度指示符。举例来说,假设SLC数据块是存储器组件生命周期中首个经编程数据块。此类SLC数据块可具有分配为1的索引。如果写入的数据是操作系统(OS)图像,则此SLC数据块可具有100%的有效数据,因为主机通常不覆写OS图像。当主机写入额外数据时,可新开放越来越多的SLC数据块以写入主机数据。针对开放的每个SLC数据块,将索引值递增且分配给所述块。每个SLC数据块可具有唯一索引号。如果存在开放且经编程的10个额外SLC数据块,则第10块具有索引值11。在任何时间,可通过SLC数据块的索引号与各SLC数据块的最高索引号的差来计算所述SLC数据块的驻留长度。可确定两个相应数据块的最大索引值(最新数据)与最小索引值(最旧数据)之间的差量或差。如果差量超过阈值差,则满足阈值条件。替代地,索引值可经处理为序列号,SLC块按所述序列号开放以用于编程。

在一些实施例中,可确定最小索引值,且可确定自从存储在与最小索引相关联的数据块处的数据被写入以来已写入的数据量。如果在存储在与最小索引相关联的数据块处的数据之后写入的数据量超过阈值量,则满足阈值条件。在一些实施例中,指示符可以是时间戳,且如果自从与所述时间戳相关联的数据块的数据被写入以来已经过了大于阈值量的时间,则满足阈值条件。

当满足阈值条件时,可执行存储器清空操作。存储器清空操作可包含将满足阈值条件的数据块中的有效数据复制到另一数据块以及从满足阈值条件的数据块擦除所述有效数据和无效数据。在一些实施例中,当满足阈值条件时,存储器清空操作可包含将有效数据从静态高速缓存中的每个数据块复制到另一数据块以及擦除静态高速缓存中的所有所述有效数据和无效数据以完全清空静态高速缓存。在一些情况下,可选择最旧数据以用于首先复制到另一数据块,且接着释放(例如,擦除)。接着,可选择下一最旧数据块以用于复制到另一数据块且接着释放。此类过程可继续进行,直到来自所有数据块的所有有效数据从静态高速缓存被移动到其它数据块。

本公开的优势包含但不限于存储器子系统的性能改进,因为静态高速缓存的数据块可被释放或变得可用,从而以较快覆写速率存储主机数据。即,本公开可消除冷主机数据堵塞且增大数据驻留长度。冷主机数据堵塞的消除和数据驻留长度的增大可改进存储器子系统的性能,因为静态高速缓存的实际大小(full size)可被更高效地利用。另外,改进存储器子系统的性能可实现节能。举例来说,执行清空操作可为SLC高速缓存的数据块中的数据提供最优操作驻留长度。最优操作驻留长度可在SLC高速缓存的数据块中产生较小量的有效数据。因此,可通过执行清空操作来减少将数据从SLC高速缓存移动到另一存储器组件的工作量,因为在无用单元收集期间的较小有效数据会消耗较少的在无用单元收集上开支的MLC/TLC/QLC编程-擦除(P/E)循环。为无用单元收集消耗较少的MLC/TLC/QLC编程-擦除(P/E)循环可降低能耗。因此,针对无用单元收集操作的较小MLC/TLC/QLC P/E循环要求可改进性能和/或降低能耗。

图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算环境100。存储器子系统110可包含媒体,例如存储器组件112A到112N。存储器组件112A到112N可以是易失性存储器组件、非易失性存储器组件或此类组件的组合。

不同类型的媒体的特性在一种媒体类型与另一媒体类型之间可不同。与存储器组件相关联的特性的一个实例是数据密度。数据密度对应于存储器组件的每存储器单元可存储的数据量(例如,数据位)。使用基于快闪的存储器的实例,四层级单元(QLC)可存储四个数据位,而单层级单元(SLC)可存储一个数据位。因此,包含QLC存储器单元的存储器组件将具有比包含SLC存储器单元的存储器组件更高的数据密度。

一些类型的存储器组件缺乏存储电容器,且可能在编程数据到存储器组件时断电的情况下遭遇数据损坏。举例来说,TLC存储器组件可使用两遍次编程操作对从主机系统接收的数据进行编程。在第一遍次期间,数据可被编程到TLC存储器组件的存储器单元的第一部分(例如,快页(lower page))。在第二遍次期间,数据可被编程到TLC存储器组件的存储器单元的第二部分(例如,慢页(upper page)、额外页(extra page))。如果在第二遍次期间发生断电事件,则存储在存储器单元的第一部分中的数据可能受损。

在常规系统中,为了解决这个问题,除了具有MLC、TLC或QLC存储器类型的数据块之外,还可使用存储器组件的静态分配的预留SLC数据块。具有SLC存储器类型的数据块不受断电事件影响,因为所述数据块使用单遍次编程操作进行编程。在这些常规系统中,可在SLC数据块与具有MLC、TLC或QLC存储器类型的数据块之间镜像化主机数据。可在将所有页成功写入到其它数据块之后释放预留SLC数据块中的数据。在另一实例中,仅将要在两遍次编程操作的第一遍次中写入的数据写入到预留SLC数据块。在又一实例中,静态SLC高速缓存可用于将主机数据首先路由到SLC数据块。在完全消耗静态SLC高速缓存之后,来自SLC数据块的数据可被再定位到具有MLC、TLC或QLC存储器类型的数据块。在从SLC数据块完全再定位到其它数据块后,SLC数据块中的数据可被擦除。

在一些实施例中,存储器子系统是存储系统。存储系统的实例是SSD。在一些实施例中,存储器子系统110是混合式存储器/存储子系统。总的来说,计算环境100可包含使用存储器子系统110的主机系统120。举例来说,主机系统120可将数据写入到存储器子系统110且从存储器子系统110读取数据。

主机系统120可以是计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置,或包含存储器和处理装置的此类计算装置。主机系统120可包含或耦合到存储器子系统110,使得主机系统120可从存储器子系统110读取数据或将数据写入到所述存储器子系统。主机系统120可通过物理主机接口耦合到存储器子系统110。如本文所使用,“耦合到”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如不具有居间组件),无论有线或无线,包含例如电连接、光学连接、磁连接等连接。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接的SCSI(SAS)等。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与主机系统120耦合时,主机系统120还可利用NVM高速(NVMe)接口来存取存储器组件112A到112N。物理主机接口可提供用于在存储器子系统110与主机系统120之间传送控制、地址、数据以及其它信号的接口。

存储器组件112A到112N可包含不同类型的非易失性存储器组件和/或易失性存储器组件的任何组合。非易失性存储器组件的实例包含与非(NAND)型快闪存储器。存储器组件112A到112N中的每一者可包含存储器单元的一或多个阵列,所述存储器单元例如单层级单元(SLC)或多层级单元(MLC)(例如三层级单元(TLC)或四层级单元(QLC))。在一些实施例中,特定存储器组件可包含存储器单元的SLC部分和MLC部分两者。举例来说,SLC部分可以是上文所论述的用于将主机数据初始写入到存储器组件的静态高速缓存。可初始地基于数据块的有效数据量来对SLC部分的数据块的数据执行无用单元收集操作。在满足阈值条件之后,可基于将有效数据写入到数据块的时间来对SLC部分的数据块的数据执行无用单元收集操作以高效使用SLC部分的数据块,以增强存储器子系统110的性能。在一些实施例中,第一存储器组件112A可包含具有SLC存储器类型的数据块,且第二存储器组件112N可包含具有另一存储器类型(例如,MLC、TLC、QLC等)的数据块。可将第一存储器组件112A用作高速缓存以初始地存储主机数据,且可对第一存储器组件112A的数据块的数据执行无用单元收集操作以将所述数据再定位到第二存储器组件112N的数据块。

存储器单元中的每一者可存储由主机系统120使用的一或多个数据位(例如,数据块)。尽管描述如NAND型快闪存储器的非易失性存储器组件,但存储器组件112A到112N可基于任何其它类型的存储器,例如易失性存储器。在一些实施例中,存储器组件112A到112N可以是但不限于随机存取存储器(RAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、相变存储器(PCM)、磁随机存取存储器(MRAM)、或非(NOR)快闪存储器、电可擦除可编程只读存储器(EEPROM)以及非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。此外,存储器组件112A到112N的存储器单元可分组为存储器页或数据块,所述存储器页或数据块可指用于存储数据的存储器组件的单元。

存储器系统控制器115(下文称为“控制器”)可与存储器组件112A到112N通信以执行操作,例如在存储器组件112A到112N处读取数据、写入数据或擦除数据,以及其它此类操作。控制器115可包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器,或其组合。控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其它合适的处理器。控制器115可包含经配置以执行存储在本地存储器119中的指令的处理器(处理装置)117。在所说明的实例中,控制器115的本地存储器119包含经配置以存储指令的嵌入式存储器,所述指令用于执行各种过程、操作、逻辑流以及例程以控制存储器子系统110的操作,包含处理存储器子系统110与主机系统120之间的通信。在一些实施例中,本地存储器119可包含存储存储器指针、所提取数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(ROM)。尽管将图1中的实例存储器子系统110说明为包含控制器115,但在本公开的另一实施例中,存储器子系统110可能不包含控制器115,且可能改为依靠(例如由外部主机或由与存储器子系统分开的处理器或控制器提供的)外部控制。

总的来说,控制器115可从主机系统120接收命令或操作,且可将命令或操作转换成指令或合适的命令,以实现对存储器组件112A到112N的所期望存取。控制器115可负责其它操作,例如耗损均衡操作、无用单元收集操作、误差检测和误差校正码(ECC)操作、加密操作、高速缓存操作,以及与存储器组件112A到112N相关联的逻辑块地址与物理块地址之间的地址转译。控制器115还可包含主机接口电路系统以通过物理主机接口与主机系统120通信。主机接口电路系统可将从主机系统接收到的命令转换成命令指令以存取存储器组件112A到112N,以及将与存储器组件112A到112N相关联的响应转换成用于主机系统120的信息。

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

存储器子系统110包含可用于对存储在存储器组件112A到112N处的数据执行无用单元收集的无用单元收集组件113。在一些实施例中,控制器115包含无用单元收集组件113的至少一部分。举例来说,控制器115可包含处理器117(处理装置),其经配置以执行存储在本地存储器119中的指令以用于执行本文所描述的操作。在一些实施例中,无用单元收集组件113是主机系统110、应用程序或操作系统的部分。

无用单元收集组件113可基于具有特定存储器类型(例如,SLC)的存储器组件112A的每个数据块的有效数据量执行无用单元收集操作,且可将哪些数据块经历无用单元收集操作的优先级从基于存储在所述数据块处的有效数据量切换到基于与所述有效数据写入到存储器组件112A的数据块的时间相关联的阈值条件。无用单元收集组件113可通过基于存储在数据块处的有效数据量而使用无用单元收集操作对未再定位的任何冷主机数据进行再定位来移除存储器组件112A的数据块中的任何堵塞。下文描述关于无用单元收集组件113的操作的其它细节。

图2是根据本公开的一些实施例的基于有效数据量而执行将有效数据从第一存储器移动到第二存储器的操作以及基于有效数据写入到第一存储器的时间而执行将有效数据从第一存储器移动到第二存储器的操作的实例方法200的流程图。方法200可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法200由图1的无用单元收集组件113执行。尽管以特定顺序或次序来展示,但除非另有指定,否则可修改过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各种实施例中可省去一或多个过程。因此,并非每个实施例中都需要所有过程。其它过程流也是可能的。

在框210处,处理装置确定存储在第一存储器(例如,存储器组件112A)处的一组数据块中的每个数据块的有效数据量。有效数据可指成功地写入到数据块且尚未被主机系统擦除、指示待擦除、更新或重新编程的数据。第一存储器可具有使用一遍次编程操作编程(例如,在施加一个电压脉冲之后对数据进行编程)的存储器类型,例如SLC。

在框220处,处理装置基于所述一组数据块中的每个数据块的有效数据量执行将所述一组数据块中的特定数据块的有效数据从第一存储器写入到第二存储器(例如,存储器组件112N,或存储器组件112A中的不同数据块)的操作(例如,无用单元收集操作)。第二存储器可以是使用两遍次编程操作编程(例如,在第一遍次中编程第一数据部分,且在第二遍次中编程其余的数据)的存储器类型,例如MLC、TLC或QLC。可选择存储最小有效数据量的数据块,且来自经选择数据块的有效数据可写入到第二存储器的另一数据块。处理装置可确定有效数据成功写入到第二存储器(例如,完成两遍次编程操作或完成两遍次编程操作的合适的百分比)。响应于确定有效数据成功写入到第二存储器,处理装置可从第一存储器处的相应数据块擦除有效数据和无效数据。

如上文所论述,使用与存储在数据块处的有效数据量相关的优先级执行操作可导致一些有效数据(例如,包含最高有效数据量的数据块)未被复制第二存储器,且可减少第一存储器中重写的数据块的数目。因此,在一些实施例中,基于与第一存储器的一组数据块的有效数据写入的时间相关联的阈值条件来切换哪些数据块要经历所述操作的优先级。

举例来说,在框230处,处理装置确定与所述一组数据块的有效数据写入到第一存储器的时间相关联的阈值条件已被满足。在一些实施例中,确定与所述一组数据块的有效数据写入到第一存储器的时间相关联的阈值条件已被满足包含:标识与最后一个数据块(例如,最新数据)写入到第一存储器的时间相关联的指示符。所述指示符可以是开始于0或1且每当数据块被编程时递增的索引值(例如,版本号)。处理装置还可标识与第一数据块(例如,最旧数据)写入到第一存储器的时间相关联的第二指示符。阈值条件可对应于鉴于所述指示符的最后一个数据块写入到第一存储器的时间相对于鉴于第二指示符的第一数据块(或当前存储在第一存储器处的最旧数据块)写入到第一存储器的时间之间的差(例如,比较索引值),且阈值条件在差超过阈值差时得以满足。

在一些实施例中,确定与所述一组数据块的有效数据写入到第一存储器的时间相关联的阈值条件已被满足包含:处理装置标识与第一数据块(例如,最旧数据)写入到第一存储器的时间相关联的指示符。在此实施例中,指示符可以是索引值、时间戳或标志等。处理装置可确定自从数据写入到第一存储器的第一数据块以来写入到第一存储器的其它数据块的数据量是否超过阈值条件。所述阈值条件可在自从数据写入到第一数据块以来写入到其它数据块的数据量超过阈值量时得以满足。

在一些实施例中,确定与所述一组数据块的有效数据写入到第一存储器的时间相关联的阈值条件已被满足包含:标识与当前存储在第一存储器处的数据块中的第一数据块(例如,最旧数据)的时间相关联的指示符。在此实施例中,所述指示符可以是时间戳。鉴于所述时间戳,处理装置可确定自从数据写入到第一数据块以来经过的时间量是否超过阈值条件。所述阈值条件可在自从数据写入到第一数据块以来经过的时间量超过经过的时间阈值量时得以满足。

在框240处,响应于确定阈值条件已满足,处理装置基于有效数据写入到第一存储器的时间执行将所述一组数据块的有效数据从第一存储器写入到第二存储器的操作(例如,无用单元收集操作)。应注意,当阈值条件被满足时,无用单元收集策略可从选择具有最小有效数据的数据块切换到选择具有最旧有效数据的数据块。在一些实施例中,处理装置可开始将最旧有效数据写入到第二存储器且在成功地写入到第二存储器之后擦除第一存储器中的最旧有效数据。接着,处理装置可将下一最旧有效数据写入到第二存储器且在成功地写入到第二存储器之后擦除第一存储器中的所述下一最旧有效数据。此过程可继续,直到从第一存储器清空所有有效数据。在一些实施例中,仅可清空所述有效数据的一部分。举例来说,可清空具有超过与最新有效数据所关联的数据块的索引值的阈值差量的索引值的数据块中的任何有效数据、已写入超过经过的时间阈值量的数据块中的任何有效数据等等。以此方式,仅清空“堵塞的”数据块。

图3A说明根据本公开的一些实施例的基于有效数据量而执行将数据从第一存储器300移动到第二存储器302的操作的实例。主机系统120可将数据发送到存储器子系统110以进行存储。第一存储器300可以是预留数据块304、306、308的静态高速缓存,且可具有使用单遍次编程操作编程的存储器类型(例如,SLC)。第二存储器302可具有使用两遍次编程操作编程的存储器类型(例如,MLC、TLC、QLC)。来自主机的数据可首先使用单遍次编程操作写入到第一存储器300,以确保所述数据在写入到第二存储器302时不因两遍次编程操作期间的断电而受损。第一存储器300和第二存储器302可以是同一存储器组件112A的不同部分,或是不同存储器组件112A和112N的不同部分。

如所描绘,第一存储器300包含其中存储有不同有效数据量的两个数据块304和306。数据块304存储100%的有效数据,且数据块306存储5%的有效数据。处理装置可基于每个数据块304和306的有效数据量而执行将特定数据块的有效数据从第一存储器300写入到第二存储器302的操作(例如,无用单元收集)。在一些情况下,处理装置选择第一存储器300的数据块304和306中的最小有效数据量。因此,处理装置选择来自数据块306的5%的有效数据以写入到第二存储器302的数据块310,如箭头312描绘。尽管为简单起见将5%的有效数据展示为写入到第二存储器302的块302,但应注意,如果第二存储器302为类型MLC,则2.5%的有效数据将被写入,因为MLC数据块是SLC数据块大小的两倍。类似地,如果数据块302为类型TLC,则1.67%将被写入,因为TLC数据块是SLC数据块大小的三倍,且如果数据块302为类型QLC,则1.25%的有效数据将被写入,因为QLC数据块是SLC数据块大小的四倍。

此外,如所描绘,当数据块被编程时,索引值与第一存储器300的每个数据块相关联。应理解,索引值用作指示符的实例,且存在可使用的其它指示符(例如,时间戳、写入的数据量等)。处理装置可将具有初始值的索引值关联到初始编程的数据块,且每当对数据块编程时递增所述索引值。因此,初始编程的数据块304的索引值是0,且数据块306的索引值递增一次到1。在处理装置确定5%的有效数据成功写入到数据块310之后,可从第一存储器300的数据块306擦除所述5%的有效数据。

图3B说明根据本公开的一些实施例的基于有效数据量而执行将数据从第一存储器300移动到第二存储器302的操作的另一实例。如所描绘,第一存储器300包含其中存储有不同有效数据量的两个数据块304和306。数据块304存储100%的有效数据,且数据块306存储10%的有效数据。处理装置可基于每个数据块304和306的有效数据量而执行将特定数据块的有效数据从第一存储器300写入到第二存储器302的操作(例如,无用单元收集)。在一些情况下,处理装置选择第一存储器300的数据块304和306中的最小有效数据量。因此,处理装置选择来自数据块306的10%写入到数据块310,通过将所述10%与先前存储的5%组合以在第二存储器302的数据块310处产生15%的有效数据,如箭头316描绘。

此外,如所描绘,数据块306的索引值再次递增到2,因为已通过10%的有效数据对所述数据块重新编程。数据块304的索引值仍处于0,因为其仅被编程过一次。在处理装置确定10%的有效数据成功写入到数据块310之后,可从第一存储器300的数据块306擦除所述10%的有效数据。应理解,在第二操作执行之后数据块304中100%的有效数据仍存储在数据块304处,因为其包含比数据块306的5%的有效数据和10%的有效数据更多的有效数据。在一些情况下,数据块306可继续以少于数据块304的有效数据进行编程,且数据块304可被冷主机数据堵塞。

因此,本公开的实施例提供切换,将哪些数据块经历操作的优先级从基于第一存储器300的数据块的有效数据量切换到基于与有效数据写入到第一存储器300的数据块的时间相关联的阈值。举例来说,图3C说明根据本公开的一些实施例的选择块的实例,基于有效数据写入到第一存储器300的时间而对所述块执行无用单元收集操作。在图3B中将10%的有效数据写入到第二存储器302且从第一存储器300擦除之后,通过7%的有效数据对数据块306进行写入。响应于通过7%的数据进行编程,数据块306的索引值第三次递增到3。

处理装置可通过标识与最后一个数据块写入到第一存储器300的时间相关联的指示符来确定与所述一组数据块的有效数据写入到第一存储器300的时间相关联的阈值条件已被满足。在所描绘的实例中,指示符是与数据块306相关联的索引值,且写入的最后一个数据块是数据块306,因为其具有最高索引值3。处理装置可标识与第一数据块写入到第一存储器300的时间相关联的第二指示符。在所描绘的实例中,第二指示符是与数据块304相关联的索引值,且写入到第一存储器300的第一数据块是数据块304,因为其具有最低索引值。阈值条件对应于最后一个数据块306写入到第一存储器300的时间相对于第一数据块304写入到第一存储器300的时间之间的差。当所述差超过阈值差时,满足阈值条件。在所描绘的实例中,阈值差是2且最后一个数据块306的索引值(3)与第一数据块304的索引值(0)之间的差量是3。因此,超过了阈值差。

响应于确定已满足阈值条件,处理装置可基于有效数据写入到第一存储器的时间而执行将一组数据块304和306的有效数据写入到第二存储器302的操作。举例来说,处理装置可首先将最旧有效数据写入到第二存储器302。最旧有效数据可通过具有最低索引值的数据块(例如,数据块304具有索引值0)标识。如箭头318所描绘,将数据块304的最旧有效数据(例如,100%的有效数据)写入到第二存储器302的数据块314。在一些实施例中,数据块304的最旧有效数据的至少一部分可附加到块310。举例来说,可实施在数据块310中将来自图3A中具有索引1的数据块306、图3B中具有索引2的数据块306以及图3B中具有索引3的数据块306的最小有效数据混合的策略。举例来说,数据块310可经指定以用于符合某一准则的数据,例如最小有效数据,而开放的另一数据块(例如,数据块314)用于符合另一准则的数据,例如某一时效(age)阈值。

在一些实施例中,在将数据块304的最旧有效数据写入到第二存储器302的数据块314之后,可将数据块306的下一最旧有效数据(例如,7%的有效数据)写入到数据块310且与第二存储器302的前一15%的有效数据组合(从而得到22%),如由箭头320所描绘。在确定有效数据成功写入到第二存储器302后,可擦除数据块304和306的任何数据。

图4是根据本公开的一些实施例的用以基于不同优先级而执行无用单元收集操作的实例方法400的流程图。方法400可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法400由图1的无用单元收集组件113执行。尽管以特定顺序或次序来展示,但除非另有指定,否则可修改过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各种实施例中可省去一或多个过程。因此,并非在每个实施例中都需要所有过程。其它过程流是可能的。

在框410处,处理装置对存储器组件112A的一组数据块中的数据块的数据执行无用单元收集操作。存储器组件112A可以是高速缓存,其具有使用单遍次编程操作编程的存储器类型(例如,SLC)。主机数据可初始地写入到存储器组件112A,之后被再定位到存储器组件112A的另一部分或到不同存储器组件112N。无用单元收集操作基于优先级而选择数据块,所述优先级与存储在所述一组数据块中的每个数据块处的有效数据量相关联。无用单元收集操作可从所述一组数据块选择具有最小有效数据量的数据块,且将所述有效数据从经选择数据块写入到存储器组件112A的另一数据块或不同存储器组件112N的另一数据块。此外,无用单元收集操作可在有效数据成功写入之后从存储器组件112A的所述数据块擦除所述有效数据。

在框420处,响应于执行无用单元收集操作,处理装置确定保持写入到存储器组件112A的所述一组数据块中的另一数据块的所述另一数据块的第二数据是否满足阈值条件。处理装置将哪些数据块要执行所述操作的优先级从基于存储在所述一组数据块处的有效数据量切换到基于有效数据写入到所述一组数据块的时间。在一些实施例中,为确定存储器组件112A的所述一组数据块中的另一数据块中在执行无用单元收集操作之后保持写入到所述另一数据块的第二数据是否满足阈值条件,处理装置可标识与所述另一数据块相关联的指示符和与剩余组数据块中的任一者相关联的第二指示符之间的差量是否超过阈值。举例来说,处理装置可将所述另一数据块的索引值与写入有数据的最新数据块的索引值进行比较。如果差量大于索引值之间的阈值差,则处理装置可确定阈值条件被满足。

在一些实施例中,为确定存储器组件112A的所述一组数据块中的另一数据块中在执行无用单元收集操作之后保持写入到所述另一数据块的第二数据是否满足阈值条件,处理装置可标识自从所述第二数据写入到所述另一数据块以来写入到所述一组数据块的数据量是否超过阈值。举例来说,处理装置可标识与所述另一数据块相关联的指示符,且可确定在所述数据写入到所述另一数据块之后写入到存储器组件112A的其它数据块的数据量。如果已写入大于阈值量的数据,则满足阈值条件。

在一些实施例中,为确定存储器组件112A的所述一组数据块中的另一数据块中在执行无用单元收集操作之后保持写入到所述另一数据块的第二数据是否满足阈值条件,处理装置可标识自从所述第二数据写入到所述另一数据块以来经过的时间量是否超过阈值。如果自从第二数据写入到所述另一数据块以来经过的时间量超过阈值,则可满足阈值条件。

在框430处,响应于确定第二数据满足阈值条件,处理装置对存储器组件的所述一组数据块的数据执行存储器清空操作。存储器清空操作可指一种针对数据块使用优先级的基于有效数据写入到数据块的时间而对所述数据块执行的无用单元收集类型。为对存储器组件112A的所述一组数据块的数据执行存储器清空操作,处理装置可将所述一组数据块的数据中的每一者写入到另一存储器组件112N或存储器组件112A的另一数据块,且从存储器组件112A的所述一组数据块擦除所述数据中的每一者。在一些实施例中,处理装置可从存储器组件112A的所述一组数据块选择最旧有效数据且逆向操作从最旧到最新将有效数据复制到另一存储器组件112N。在将有效数据中的每一者复制到新位置之后,可从所述一组数据块擦除所述有效数据。

图5说明计算机系统500的实例机器,在所述实例机器内可执行一组指令以用于使机器执行本文所论述的任何一或多个方法。在一些实施例中,计算机系统500可对应于主机系统(例如图1的主机系统120),所述主机系统包含、耦合到或利用存储器子系统(例如图1的存储器子系统110),或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1的无用单元收集组件113的操作)。在替代实施例中,机器可连接(例如联网)到LAN、内联网、外联网和/或互联网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端-服务器网络环境中的服务器或客户端机器的容量进行操作。

所述机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或桥接器,或能够(依序或以其它方式)执行指定待由所述机器采取的动作的一组指令的任何机器。此外,尽管说明了单个机器,但还应认为术语“机器”包含分别或共同地执行一组(或多组)指令以执行本文所论述的任何一或多个方法的任何机器集合。

实例计算机系统500包含处理装置502、主存储器504(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器506(例如,快闪存储器、静态随机存取存储器(SRAM)等)以及数据存储系统518,它们通过总线530彼此通信。

处理装置502表示一或多个通用处理装置,例如微处理器、中央处理单元等。更具体地说,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置502还可以是一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置502经配置以执行用于执行本文所论述的操作和步骤的指令526。计算机系统500还可包含网络接口装置508以在网络520上通信。

数据存储系统518可包含机器可读存储媒体524(也称为计算机可读媒体),其上存储有体现本文所描述的任何一或多个方法或功能的一或多组指令526或软件。指令526还可在其由计算机系统500执行的期间完全或至少部分地驻存在主存储器504内和/或处理装置502内,主存储器504和处理装置502也构成机器可读存储媒体。机器可读存储媒体524、数据存储系统518和/或主存储器504可对应于图1的存储器子系统110。

在一个实施例中,指令526包含用以实施对应于无用单元收集组件(例如图1的无用单元收集组件113)的功能的指令。尽管在实例实施例中将机器可读存储媒体524展示为单个媒体,但术语“机器可读存储媒体”应被认为包含存储一组或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行且使机器执行本公开的任何一或多个方法的一组指令的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体以及磁性媒体。

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

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

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

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

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

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

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号