首页> 中国专利> 用于存储器子系统的媒体管理的多状态炼狱

用于存储器子系统的媒体管理的多状态炼狱

摘要

本申请涉及用于存储器子系统的媒体管理的多状态炼狱。处理装置可以确定存储器子系统的数据块的有效数据计数。在一些情况下,有效数据计数可以指示数据块含有无效数据。处理装置可以基于有效数据计数将数据块分配至第一炼狱状态,并且可以基于第一炼狱状态验证对第一炼狱状态中的数据块的一或多个读取操作已完成。在一些实例中,处理装置可以基于所述验证将数据块分配至第二炼狱状态。

著录项

  • 公开/公告号CN113253917A

    专利类型发明专利

  • 公开/公告日2021-08-13

    原文格式PDF

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

    申请/专利号CN202110143420.5

  • 发明设计人 A·D·比安可;

    申请日2021-02-02

  • 分类号G06F3/06(20060101);

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

  • 代理人王龙

  • 地址 美国爱达荷州

  • 入库时间 2023-06-19 12:13:22

说明书

本专利申请要求由比安科(Bianco)于2020年2月2日提交的名称为“用于存储器子系统的媒体管理的多状态炼狱(MULTI STATE PURGATORY FOR MEDIA MANAGEMENT FOR AMEMORY SUB-SYSTEM)”的美国专利申请第16/786,910号的优先权,所述专利申请已转让给本申请的受让人,并且所述申请通过引用以其整体明确并入本文。

技术领域

技术领域涉及用于存储器子系统的媒体管理的多状态炼狱(purgatory)。

背景技术

存储器子系统可以包含一或多个存储数据的存储器装置。存储器装置可以是例如非易失性存储器装置和易失性存储器装置。一般而言,主机系统可以利用存储器子系统将数据存储在存储器装置处,并从存储器装置中检索数据。

发明内容

描述了一种方法。所述方法可以包含:确定存储器子系统的数据块的有效数据计数,其中所述有效数据计数指示所述数据块含有无效数据;至少部分地基于所述有效数据计数,将所述数据块分配至第一炼狱状态;至少部分地基于所述第一炼狱状态,验证对所述第一炼狱状态中的所述数据块的一或多个读取操作已完成;以及至少部分地基于所述验证,将所述数据块分配至第二炼狱状态。

描述了一种系统。所述系统可以包含多个存储器组件和处理装置,所述处理装置与所述多个存储器组件可操作地耦合,以实现以下操作:确定所述多个存储器组件的数据块的有效数据量降至阈值以下;至少部分地基于所述确定所述多个存储器组件的所述数据块的所述有效数据量降至所述阈值以下,将所述数据块分配至第一炼狱池;以及至少部分地基于完成对所述第一炼狱池中的所述数据块的一或多个读取操作,将所述数据块分配至第二炼狱池。

描述了一种非临时性计算机可读存储媒体。所述非暂时性计算机可读存储媒体包含指令,所述指令在被处理装置执行时,使所述处理装置实现以下操作:确定存储器子系统的数据块的有效数据计数,其中所述有效数据计数指示所述数据块含有无效数据;至少部分地基于所述有效数据计数,将所述数据块分配至第一炼狱状态;至少部分地基于所述第一炼狱状态,验证对所述第一炼狱状态中的所述数据块的一或多个读取操作已完成;以及至少部分地基于所述验证,将所述数据块分配至第二炼狱状态。

附图说明

通过以下给出的详细描述以及本公开的各个实施例的附图,将会更加充分地理解本公开。然而,附图不应被视为将本公开限制于具体实施例,而是仅仅用于解释和说明。

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

图2是根据本公开的一些实例的用于媒体管理的多状态炼狱的实例方法的方法图。

图3是用于媒体管理的多状态炼狱可以操作的实例系统的框图。

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

具体实施方式

本公开的各方面涉及用于存储器子系统的媒体管理的多状态炼狱。存储器子系统可以是存储装置、存储器模块或存储装置和存储器模块的组合。下面结合图1对存储装置和存储器模块的实例进行描述。一般而言,主机系统可以利用包含一或多个组件(诸如存储数据的存储器装置)的存储器子系统。主机系统可以提供要存储在存储器子系统中的数据,并且可以请求从存储器子系统中检索数据。

存储器装置可以是非易失性存储器装置。非易失性存储器装置是封装的一或多个切块。每个模具可以由一或多个平面构成。对于一些类型的非易失性存储器装置(例如,与非(NAND)装置),每个平面由一组物理块构成。每个块由一组页面构成。每个页面由一组存储了数据位的存储器单元构成。对于一些存储器装置(诸如NAND装置),块是可以擦除的最小区域并且不可以单独擦除块内的页面。对于此类装置,一次执行一个块的擦除操作。

一个块的页面可以含有有效数据、无效数据,或者不含有数据。无效数据是由于存储器装置上存储了数据的新版本而被标记为过时的数据。无效数据包含之前写入但不再与有效逻辑地址(诸如,主机系统在物理到逻辑(P2L)映射表中引用的逻辑地址)相关联的数据。有效数据是存储在存储器装置上的此类数据的最新版本。存储器子系统可以基于例如从操作系统接收的信息将数据标记为无效。不含有数据的页面包含之前已擦除但尚未写入的页面。

存储器子系统控制器可以执行媒体管理算法的操作,诸如损耗均衡、刷新、垃圾收集、清理等。一个块可以具有一些含有有效数据的页面和一些含有无效数据的些页面。为了避免等待块中的所有页面都具有无效数据以便擦除和重新使用该块,可以调用下文被称为“垃圾收集”的算法,从而允许对该块进行擦除并作为空闲块予以释放,以便用于后续写入操作。垃圾收集是一组媒体管理操作,其包含例如选择含有有效数据和无效数据的块、选择含有有效数据的块中的页面、将有效数据复制到新位置(例如,另一个块中的空闲页面)、将之前选择的页面中的数据标记为无效、以及擦除所选的块。

下文中的“垃圾收集”是指选择块、将有效数据从所选块重新写入至另一个块、以及擦除存储在所选块处的所有无效数据和有效数据。可以将来自多个所选块中的有效数据复制到较少数量的其他块中,并且然后可以擦除所选块。结果是,可以增加已擦除的块的数量,使得更多的块可用于存储来自主机系统的后续数据。

在垃圾收集期间,首先基于存储器装置控制器发出的一或多个读取命令,将要擦除的块的有效数据读取至缓冲区并由其进行存储,并擦除对应的页面(例如,其上含有有效数据的页面)。然后,可以将有效数据写入(例如,重新写入)至存储器装置(例如,存储器装置的不同的页面)。为了将有效数据写入至某个位置(例如,存储器装置的不同的页面),由存储器子系统控制器发出写入命令,每个写入命令指示要将有效数据写入至的存储器地址(例如,目标存储地址)。在一些垃圾收集程序中,一旦完成对应的读取命令,就会发出写入命令。也就是,用于源存储器地址(例如,要擦除的页面上的存储器地址)处的数据的读取命令。

在一些情况下,在将有效数据重新写入至存储器装置和更新指示重新写入的有效数据的位置的表之间,可以存在延迟。在一些实例中,在更新指示重新写入的有效数据的位置的表之前,可以擦除数据块(例如,包含重新写入的有效数据的地址)。此类技术(例如,在更新存储器地址之前擦除数据)可能会因为丢失了重新写入的有效数据的存储器地址位置,而导致存储器装置在垃圾收集程序期间发生性能损失,这可能会增加将来要在数据块上执行的读取操作的延迟。

在一些实例中,可以将数据块保存在诸如炼狱状态之类的临时保存池中。在传统系统中,存储器子系统可以包含单个炼狱状态。单个炼狱状态可以用于进行垃圾收集程序的数据块,也可以用于所有数据块,以确保已完成对数据块的主机读取操作。在此类情况下,单个炼狱状态可以在保存进行垃圾收集程序的数据块和然后保存所有数据块之间进行循环,以确保已完成对数据块的主机读取操作。因为只要数据块保留在单个炼狱状态中就可以向数据块发出主机读取命令和垃圾收集读取命令,所以包含单个炼狱状态的存储器子系统可能会降低存储器子系统的整体性能,这可能会导致与将数据块的地址更新至新位置相关的擦除时间和处理时间延长。

本公开的各方面通过使用用于媒体管理(诸如垃圾收集)的多状态炼狱解决了这些和其他问题。在本文档全文中,垃圾收集用作媒体管理操作的一个实例。例如,可以将数据块分配至不同的炼狱状态,以便保存数据块、检查存储器子系统的操作、以及避免过早删除数据块(例如,在不更新存储器地址的情况下擦除数据块之前)。也就是,当数据块不再含有任何有效数据时,该数据块可能无法安全擦除,因此可以将此类数据块移至炼狱状态直到可以确保安全。在一些实例中,一种炼狱状态可以是用于进行垃圾收集程序的数据块,以确保已完成对数据块的所有垃圾收集读取操作。另一种炼狱状态可以是用于所有数据块,以确保已完成对数据块的主机读取操作。通过将数据块分配至多于一种的炼狱状态,可以增加存储器子系统的整体性能。例如,多状态炼狱垃圾收集可以提高存储器子系统的整体效率(例如,由于丢失数据块的存储器地址而引起的延迟),这可以提高存储器子系统的读取、写入和擦除速度,降低其功耗,缩短其处理时间等。

首先,在参照图1所描述的计算环境的上下文中对本公开的特征进行描述。在如参照图2和3所描述的方法和框图的上下文中对本公开的特征进行描述。进一步地,参照涉及如图4所描述的用于垃圾收集的多状态炼狱的计算机系统,对本公开的这些和其他特征进行图示和描述。

图1图示了根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统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(SAS)、小型计算机系统接口(SCSI)、双倍数据速率(DDR)存储器总线、双列直插式存储器模块(DIMM)接口(例如,支持双倍数据速率(DDR)的DIMM套接接口)、开放式NAND闪存接口(ONFI)、双倍数据速率(DDR)、低功耗双倍数据速率(LPDDR)或任何其他接口。物理主机接口可以用于在主机系统105和存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与主机系统105耦合时,主机系统105可以进一步利用非易失性存储器高速(NVMe)接口访问组件(例如,存储器装置130)。物理主机接口可以提供用于在存储器子系统110和主机系统105之间传递控制、地址、数据和其他信号的接口。图1通过实例的方式图示了存储器子系统110。一般而言,主机系统105可以经由同一通信连接、多个单独的通信连接和/或通信连接的组合访问多个存储器子系统。

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

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

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

尽管描述了诸如NAND型闪存存储器(例如,2D NAND、3D NAND)和非易失性存储器单元的3D交叉点阵列之类的非易失性存储器组件,但存储器装置130可以基于任何其他类型的非易失性存储器,诸如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其他基于硫族化合物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电RAM(FeRAM)、磁性RAM(MRAM)、自旋转移矩(STT)-MRAM、导体桥接RAM(CBRAM)、电阻式随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(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和/或存储器装置140的所需访问。存储器子系统控制器115可以负责其他操作,诸如损耗均衡操作、垃圾收集操作、错误检测和纠错码(ECC)操作、加密操作、缓存操作以及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(LBA)、命名空间)和物理地址(例如,物理块地址)之间的地址转换。存储器子系统控制器115可以进一步包含用于经由物理主机接口与主机系统105通信的主机接口电路系统。主机接口电路系统可以将从主机系统接收的命令转换成用于访问存储器装置130和/或存储器装置140的命令指令,以及将与存储器装置130和/或存储器装置140相关联的响应转换成用于主机系统105的信息。

存储器子系统110还可以包含未图示的附加电路系统或组件。在一些实例中,存储器子系统110可以包含高速缓存或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器),该地址电路系统可以从存储器子系统控制器115接收地址并对该地址进行解码以访问存储器装置130。

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

存储器子系统110包含炼狱管理器150,该炼狱管理器可以将数据块分配至多于一个的炼狱池(例如,炼狱状态)。如果数据块通过由主机系统执行的操作或由于垃圾收集程序而变得无效,则可以将该数据块分配至炼狱池。例如,一个炼狱池可以是用于进行垃圾收集程序的数据块,以确保完成对该数据块的所有垃圾收集读取操作(例如,将命令读取至与该数据块相关联的存储器地址)。在其他实例中,另一个炼狱池可以是用于数据块,以确保完成对该数据块的主机读取操作(例如,将命令从主机系统读取至与该数据块相关联的存储器地址)。可以稍后将炼狱池中等待完成垃圾收集读取的数据块分配至该炼狱池,以确保在指示为已准备好进行擦除之前,没有任何未完成的主机读取。

在一些情况下,由于垃圾收集程序、主机系统活动或二者,数据块的有效数据计数可以为零。在此类情况下,炼狱管理器150可以将数据块分配至第一状态(例如,第一炼狱池)。一旦分配至第一炼狱池,就可以检查该数据块,以确定是否有任何垃圾收集读取未决或排程为在该数据块上执行。在将数据块检查为将不执行垃圾收集读取之后,炼狱管理器150可以将该数据块分配至第二状态(例如,第二炼狱池)。在第二炼狱池中,由炼狱管理器150检查数据块,以确保没有主机读取未决或排程为待执行。在将数据块确认为没有主机读取命令未决或已排程之后,将该数据块指示已准备好进行擦除。

在一些实例中,存储器子系统控制器115包含炼狱管理器150的至少一部分。例如,存储器子系统控制器115可以包含处理器120(例如,处理装置),该处理器被配置为执行本地存储器125中存储的指令以进行本文所述的操作。在一些实例中,炼狱管理器150是主机系统105、应用程序或操作系统的一部分。

炼狱管理器150可以识别出读取命令已完成(例如,通过从后端管理器接收以下消息:因为发布至后端管理器的读取命令已完成,所以可以擦除数据块)。一旦将数据块指示为已读取并且根据后端管理器可擦除,炼狱管理器150就可以修改数据块的状态(例如,通过将该数据块分配至炼狱池)。在此类情况下,当炼狱管理器150接收到读取响应时,炼狱管理器150可以更新用于该数据块的炼狱池。以下对关于炼狱管理器150的操作的更多细节进行描述。

图2是根据本公开的一些实例的用于垃圾收集的多状态炼狱的实例方法200的方法图。方法200可以由处理逻辑执行,该处理逻辑可以包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实例中,方法200由图1的炼狱管理器150执行。尽管以特定顺序或次序示出,但除非另有说明,否则可以修改过程的次序。因此,图示的实例应当仅被理解为实例,并且图示的过程可以以不同的次序执行,并且一些过程可以被并行执行。此外,各个实例中可以省略一或多个过程。因此,并非每个实例都需要所有过程。其他过程流也是可能的。

在操作205中,处理装置可以确定存储器子系统的数据块的有效数据计数,其中有效数据计数指示数据块含有无效数据。在一些实例中,有效数据计数可以指示数据块整体含有无效数据。在一些实例中,有效数据计数可以指示数据块含有超出阈值量的无效数据量。在一些实例中,方法200可以包含:确定存储器组件组的数据块的有效数据量降至阈值以下。在一些实例中,数据块可以不含有有效数据。

在操作210中,处理装置可以至少部分地基于有效数据计数,将数据块分配至第一炼狱状态。在一些实例中,方法200可以包含:至少部分地基于确定存储器组件组的数据块的有效数据量降至阈值以下,将数据块分配至第一炼狱池。例如,阈值可以是数据块的有效数据量小于数据块的无效数据量。阈值可以基于垃圾收集程序的启用进行确定,该垃圾收集程序的启用使得如果启用了垃圾收集程序,则能够以与禁用或不执行垃圾收集时不同的方式定义阈值。在其他实例中,阈值可以基于对数据块的读取操作数进行设置。

在操作215中,处理装置可以至少部分地基于第一炼狱状态,验证对第一炼狱状态中的数据块的一或多个读取操作已完成。在一些实例中,验证对在第一炼狱状态中的数据块的一或多个读取操作已完成可以包含:验证垃圾收集程序对数据块的所有读取操作已完成。在一些实例中,验证对在第一炼狱状态中的数据块的一或多个读取操作已完成可以包含:验证来自主机系统的对数据块的所有主机读取操作已完成。

在操作220中,处理装置可以至少部分地基于验证,将数据块分配至第二炼狱状态。在一些实例中,方法200可以包含:在将数据块分配至第二炼狱状态之后,验证对第二炼狱状态中的数据块的所有主机读取操作已完成。在一些实例中,方法200可以包含:在验证垃圾收集程序对数据块的所有读取操作已完成并且对第二炼狱状态中的数据块的所有主机读取操作已完成之后,擦除数据块。在一些实例中,方法200可以包含:在擦除数据块之前,刷新与数据块相关联的主机游标以及与数据块相关联的垃圾收集游标。

在一些实例中,方法200可以包含:至少部分地基于完成对第一炼狱池中的数据块的一或多个读取操作,将数据块分配至第二炼狱池。在一些实例中,一或多个读取操作可以与用于数据块的垃圾收集程序相关联。在一些实例中,方法200可以包含:确定来自主机系统的对第二炼狱池中的数据块的所有主机读取操作已完成。在一些实例中,方法200可以包含:在确定完成来自主机系统的对第二炼狱池中的数据块的所有主机读取操作后,将数据块分配至擦除池。在一些实例中,方法200可以包含:在将数据块分配至擦除池之后,擦除数据块。

图3是用于垃圾收集的多状态炼狱可以操作的实例系统的框图300。框图300可以包含存储器子系统305。存储器子系统305可以包含数据块管理器310、炼狱管理器315、擦除管理器330、垃圾收集读取管理器335和写入管理器360。框图300还包含主机系统325和后端管理器355。

在一些实例中,数据块管理器310可以识别出未进行垃圾收集程序的数据块。在一些情况下,数据块中可以存在无效数据。例如,无效数据可以超出无效数据的阈值数量,或者数据块整体可以含有无效数据。在此类情况下,炼狱管理器315可以和数据块管理器310进行通信来修改数据块,这可以修改数据块或向数据块分配状态。炼狱管理器315可以将数据块分配至炼狱池320-a和炼狱池320-b之一,尽管在一些情况下,炼狱管理器315可以包含多于两个的炼狱池。

如果数据块管理器310识别出该数据块没有进行垃圾收集程序并且该数据块中存在无效数据,则可以停止将该数据块分配至炼狱池320-a,而是可以分配至炼狱池320-b。在此类情况下,可以将该数据块分配至炼狱管理器315中包含的炼狱池320-b。一旦将数据块分配至炼狱池320-b,就对该数据块进行检查,以确保该数据块不具有来自主机系统325的未决的或已排程的读取命令。

炼狱管理器315可以与主机系统325通信。为了确认数据块无法接收读取命令,炼狱管理器315可以向主机系统325检查数据块的读取命令。如果不存在来自主机系统325的读取命令,炼狱管理器315则可以从炼狱池320-b释放数据块,并指示擦除管理器330擦除该数据块。在此类情况下,炼狱管理器315可以与擦除管理器330通信。

根据一些方面,数据块管理器310可以选择一或多个数据块进行垃圾收集程序。数据块管理器310可以将对所选的一或多个数据块的指示发送至垃圾收集读取管理器335。数据块管理器310可以与垃圾收集读取管理器335通信。垃圾收集读取管理器335可以包含第1阶段读取处理340、第2阶段读取处理345和第3阶段读取处理350。第1阶段读取处理340可以检查垃圾收集读取管理器335的记分板,以确保存在空条目。第2阶段读取处理345可以针对标记为有效的下一条目对垃圾收集读取管理器335的记分板进行检查。第3阶段读取处理350可以针对标记为有效的下一条目对垃圾收集读取管理器335的记分板进行检查。

在一些实例中,垃圾收集读取管理器335可以从后端管理器355接收读取响应,该读取响应是对由垃圾收集读取管理器335发出的读取命令的响应。在此类情况下,垃圾收集读取管理器335可以处理读取命令并存储要读取的值。垃圾收集读取管理器335可以与写入管理器360通信。写入管理器360可以将值写入至目标位置(例如,存储器子系统305内的存储器单元)。

当数据块进行垃圾收集程序时,数据块管理器310可以识别出该数据块包含无效数据。例如,当读取数据块整体时,数据块可以包含无效数据。在此类情况下,后端管理器355可以发送指示已读取整个数据块的消息,并且可以擦除无效数据。在一些实例中,后端管理器355可以与数据块管理器310通信,以传达数据块上存在无效数据。

在选择了用于垃圾收集程序的数据块之后,或者当正在进行垃圾收集的数据块含有无效数据(例如,阈值数量的无效数据)时,可以在数据块进行垃圾收集程序的同时,将该数据块分配至炼狱池320-a。在后端管理器355将从数据块读取的值发送至垃圾收集读取管理器335并且垃圾收集读取操作停止之后,可以将该数据块分配至炼狱池320-b。在此类情况下,数据块管理器310可以识别出该数据块含有无效数据,并且可以将该数据块发送至炼狱池320-b。然后,炼狱管理器315可以向主机系统325检查数据块上的读取命令,以确认该数据块没有任何未决的读取命令。如果没有任何未决的或由主机系统325排程的读取命令,炼狱管理器315则可以指示擦除管理器330擦除数据块。

在一些情况下,在擦除管理器330擦除数据块之前,可以刷新主机游标和垃圾收集游标。在此类情况下,可以刷新在擦除初始数据块之后的读取操作或擦除操作的游标。如果数据块上存在无效数据,并且该数据块没有任何未完成的有效读取,则可以省略对主机游标和垃圾收集游标的刷新。

图4是本公开的实例可以在其中操作的实例计算机系统的框图。计算机系统400可以包含指令集,该指令集用于使机器执行本文所述的任何一或多种技术。在一些实例中,计算机系统400可以对应于主机系统(例如,参照图1所述的主机系统105),该主机系统包含、耦合或利用存储器子系统(例如,参照图1所述的存储器子系统110),或者可以用于执行控制器的操作(例如,用于执行操作系统以进行与参照图1所述的炼狱管理器150相对应的操作)。在一些实例中,该机器可以与局域网(LAN)、内联网、外联网和/或互联网中的其他机器连接(例如联网)。该机器可以在客户端-服务器网络环境中以服务器或客户端机器的资格,作为对等(或分布式)网络环境中的对等机器或作为云计算基础架构或环境中的服务器或客户端机器运行。

机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、移动电话、网络设备、服务器、网络路由器、交换机或桥或任何能够(依次或以其他方式)执行指定了将由该机器采取的动作的指令集的任何机器。进一步地,虽然图示了一台机器,但术语"机器"还可以包含单独或联合执行一个(或多个)指令集来实现本文所讨论的任何一或多个方法的任何机器的集合。

实例计算机系统400可以包含处理装置405、主存储器410(例如,ROM、闪存存储器、诸如SDRAM或随机存取存储器总线DRAM(RDRAM)之类的DRAM等)、静态存储器415(例如,闪存存储器、静态RAM(SRAM)等)和数据存储系统425,这些均经由总线445彼此通信。

处理装置405代表一或多个通用处理装置,诸如微处理器、中央处理器等。更特别地,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、或者实现其他指令集的处理器或实现指令集组合的处理器。处理装置405也可以是一或多个专用处理装置,诸如ASIC、FPGA、DSP、网络处理器等。处理装置405被配置为执行用于进行本文所讨论的操作和步骤的指令435。计算机系统400可以进一步包含网络接口装置420,以便通过网络440进行通信。

数据存储系统425可以包含机器可读存储媒体430(又称为计算机可读媒体),该机器可读存储媒体上存储有一或多个指令435集或实施本文所述的方法或功能中的任何一或多个的软件。在由计算机系统400执行指令435期间,该指令还可以完全或至少部分地驻留在主存储器410内和/或处理装置405内,主存储器410和处理装置405还构成了机器可读存储媒体。机器可读存储媒体430、数据存储系统425和/或主存储器410可以对应于存储器子系统。

在一个实例中,指令435包含用于实现与炼狱管理器450(例如,参照图1所述的炼狱管理器150)相对应的功能的指令。虽然将机器可读存储媒体430示出为单个媒体,但术语“机器可读存储媒体”可以包含存储有一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还可以包含能够存储或编码指令集以便由机器执行并且使机器执行本公开的任何一或多个方法的任何媒体。术语“机器可读存储媒体”可以包含,但不限于,固态存储器、光学媒体和磁性媒体。

已经在对计算机存储器内的数据位的操作的算法和符号表示方面,介绍了前述详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员所使用的用于最有效地向本领域其他技术人员表达其工作本质的方式。算法在这里并且一般被认为是获得所需结果的自洽操作顺序。所述操作是需要对物理量进行物理操纵的操作。尽管没有必要,但这些量通常采取能够被存储、组合、比较和以其他方式操纵的电信号或磁性信号的形式。主要由于共同使用的缘故,已经不时地证明将这些信号称为位、值、元素、符号、字符、项、数字等是非常方便的。

然而应谨记,所有这些和类似术语应与相应的物理量相关联,并且仅仅为应用于这些量的方便标签。本公开可以涉及计算机系统或类似电子计算装置的动作和过程,该计算机系统或类似电子计算装置将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据,操纵和转换为类似地表示为计算机系统存储器或寄存器或其他此类信息存储系统内的物理量的其他数据。

本公开还涉及用于执行本文中的操作的设备。该设备可以针对预期目的而专门构造,或者可以包含由存储在计算机中的计算机程序可选择地激活或重新配置的通用计算机。此类计算机程序可以存储在计算机可读存储媒体中,诸如但不限于任何类型的磁盘(包含软盘、光盘、CD-ROM和磁光盘)、ROM、RAM、EPROM、EEPROM、磁卡或光卡或适合于存储电子指令的任何类型的媒体,上述每个都耦合至计算机系统总线。

本文提出的算法与显示并不内在地与任何特定计算机或其他装置相关。各种通用系统可以和根据本文教导的程序一起使用,或者其可以证明便于构造出更专业的设备来执行所述方法。各种这些系统的结构将如以下描述中所阐述的那样呈现。另外,本公开并非参照任何特定编程语言进行描述。将理解的是,可以使用各种编程语言来实施如本文所描述的本公开的启示。

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

在前述说明书中,已经参照本公开的具体示例性实例对本公开的实例进行了描述。显然,在不脱离如所附权利要求书中阐述的本公开的实例的更广泛的精神和范围的情况下,可以对这些实例进行各种修改。因此,说明书和附图应被视为说明性的而非限制性的。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号