CN115718565A - 确定用于存储数据的可用资源 - Google Patents
确定用于存储数据的可用资源 Download PDFInfo
- Publication number
- CN115718565A CN115718565A CN202211031277.1A CN202211031277A CN115718565A CN 115718565 A CN115718565 A CN 115718565A CN 202211031277 A CN202211031277 A CN 202211031277A CN 115718565 A CN115718565 A CN 115718565A
- Authority
- CN
- China
- Prior art keywords
- data
- size
- memory system
- indication
- available resources
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请案是针对确定用于存储数据的可用资源。主机系统可获得用于写入到存储器系统的数据。所述主机系统可将所述数据待写入到所述存储器系统的指示发送到所述存储器系统,且所述存储器系统可移除所述存储器系统处的无效数据,直到所述存储器系统具有足够资源来存储所述数据为止。基于所述存储器系统具有足够资源,所述存储器系统可延迟所述存储器系统处的后台操作,直到所述数据已写入到所述存储器系统为止。所述存储器系统还可基于所述存储器系统具有足够资源且接收到所述数据而创建恢复点。在其它实例中,可延迟所述存储器系统处的无效数据的所述移除,直到所述数据写入到所述存储器系统之后。
Description
交叉引用
本专利申请案要求Izzi等人在2021年9月28日申请的标题为“确定用于存储数据的可用资源(DETERMINING AVAILABLE RESOURCES FOR STORING DATA)”的第17/488,205号美国专利申请案和Izzi等人在2021年8月27申请的标题为“确定用于存储数据的可用资源(DETERMINING AVAILABLE RESOURCES FOR STORING DATA)”的第63/238,027号美国临时专利申请案的优先权,所述两案中的每一者让与给本受让人且其中的每一者明确地以全文引用的方式并入本文中。
技术领域
技术领域涉及确定用于存储数据的可用资源。
背景技术
存储器装置广泛用于将信息存储在例如计算机、用户装置、无线通信装置、相机、数字显示器等各种电子装置中。通过将存储器装置内的存储器单元编程为各种状态来存储信息。举例来说,二进制存储器单元可编程到两个支持状态中的一者,常常对应于逻辑1或逻辑0。在一些实例中,单个存储器单元可支持多于两个可能的状态,所述状态中的任一者可由存储器单元存储。为了存取由存储器装置存储的信息,组件可读取或感测存储器装置内的一或多个存储器单元的状态。为了存储信息,组件可以将存储器装置内的一或多个存储器单元写入或编程到对应状态。
存在各种类型的存储器装置,包含磁性硬盘、随机存取存储器(RAM)、只读存储器(ROM)、动态RAM(DRAM)、同步动态RAM(SDRAM)、静态RAM(SRAM)、铁电RAM(FeRAM)、磁性RAM(MRAM)、电阻性RAM(RRAM)、快闪存储器、相变存储器(PCM)、三维交叉点存储器(3D交叉点)、或非(NOR)和与非(NAND)存储器装置等。存储器装置可以是易失性或非易失性的。除非由外部电源周期性更新,否则易失性存储器单元(例如,DRAM单元)可随时间推移而丢失其编程状态。非易失性存储器单元(例如,NAND存储器单元)即使在不存在外部电源的情况下仍可在很长一段时间内维持其编程状态。
发明内容
描述一种设备。所述设备可包含:存储器装置;以及控制器,其与所述存储器装置耦合且经配置以使得所述设备:接收将在存储器系统处写入数据的指示;至少部分地基于将写入所述数据的所述指示而移除所述存储器系统处的无效数据,直到所述存储器系统处的可用资源的大小大于或等于所述数据的大小为止;至少部分地基于在移除所述无效数据之后所述可用资源的所述大小大于或等于所述数据的所述大小而延迟所述存储器系统处的垃圾收集操作;以及至少部分地基于延迟所述垃圾收集操作而将所述数据写入到所述可用资源。
描述一种设备。所述设备可包含:存储器装置;以及控制器,其与所述存储器装置耦合且经配置以使得所述设备:至少部分地基于识别出将在存储器系统处写入数据而发射对所述存储器系统处的可用资源的大小的请求;响应于所述请求而接收所述可用资源的所述大小的指示;确定所述可用资源的所述大小是否大于或等于所述数据的大小;至少部分地基于所述可用资源的所述大小小于所述数据的所述大小而发射引导所述存储器系统移除无效数据的一或多个命令;响应于所述一或多个命令,接收所述可用资源的所述大小的第二指示;以及至少部分地基于所述可用资源的所述大小的所述第二指示中指示的所述可用资源的所述大小大于或等于所述数据的所述大小而将所述数据发射到所述存储器系统。
描述一种设备。所述设备可包含:存储器装置;以及控制器,其与所述存储器装置耦合且经配置以使得所述设备:延迟对存储器系统处的资源集合的垃圾收集操作;接收对所述存储器系统是否包括用于存储数据的可用资源的指示的请求;响应于所述请求,至少部分地基于所述资源集合的大小与阈值大小的比较而发射所述存储器系统是否包括可用资源的所述指示;至少部分地基于所述资源集合的所述大小小于所述阈值大小而接收所述数据;以及将所述数据写入到所述资源集合。
描述一种设备。所述设备可包含:存储器装置;以及控制器,其与所述存储器装置耦合且经配置以使得所述设备:至少部分地基于将在存储器系统处写入数据而识别所述存储器系统处针对其延迟垃圾收集操作的资源集合;发射对所述存储器系统是否包括用于存储所述数据的可用资源的指示的请求;响应于所述请求,接收所述存储器系统是否包括可用资源的所述指示;以及至少部分地基于所述存储器系统包括用于存储所述数据的可用资源而发射所述数据。
描述一种方法。所述方法可包含:接收将在包括存储器装置的存储器系统处写入数据的指示;至少部分地基于将写入所述数据的所述指示而移除所述存储器系统处的无效数据,直到所述存储器系统处的可用资源的大小大于或等于所述数据的大小为止;至少部分地基于在移除所述无效数据之后所述可用资源的所述大小大于或等于所述数据的所述大小而延迟所述存储器系统处的垃圾收集操作;以及至少部分地基于延迟所述垃圾收集操作而将所述数据写入到所述可用资源。
附图说明
图1说明根据如本文中所公开的实例的支持确定用于存储数据的可用资源的系统的实例。
图2到4说明根据如本文中所公开的实例的支持确定用于存储数据的可用资源的操作的实例集合。
图5说明根据如本文中所公开的实例的支持确定用于存储数据的可用资源的资源图的实例。
图6展示根据如本文中所公开的实例的支持确定用于存储数据的可用资源的存储器系统的框图。
图7展示根据如本文中所公开的实例的支持确定用于存储数据的可用资源的主机系统的框图。
图8到11展示说明根据如本文中所公开的实例的支持确定用于存储数据的可用资源的一或多种方法的流程图。
具体实施方式
存储器系统可用于存储用于装置上的程序(例如,操作系统、应用程序)的信息。在一些实例中,可在主机系统处从外部源(例如,使用空中软件更新)接收用于所述程序的数据。所接收数据的大小可相对较大,例如多个千兆字节。在一些实例中,所接收数据可包含多个或分批更新。基于或响应于接收到数据,主机系统可尝试在存储器系统处存储数据。为了在存储器系统处存储数据,主机系统可发出一系列写入命令以在存储器系统处写入数据。如果所接收数据包含多个更新,则主机系统可连续地接收多个更新并将所述多个更新写入到存储器系统。
然而,在一些实例中,存储器系统的空间可能不足以存储用于在主机系统处接收的程序的数据。在此些情况下,用于在存储器系统处写入数据的(多个)操作可能失败。另外或替代地,当数据写入到存储器系统时,在存储器系统处运行的后台操作可致使存储在存储器系统处且与程序相关联的数据移动,出乎意料地从其先前位置移动或甚至移动到主机系统。在此些情况下,用于在存储器系统处写入数据的操作可成功,但用于程序的数据可能在写入数据时或在写入数据之后损坏。在此类失败的情况下,主机系统可能不能够将存储器系统回退(例如,恢复)到在写入数据之前的状态,且在一些实例中,包含存储器系统和主机系统的装置可由于未能将数据恰当地写入到存储器系统而被致使不可操作。
为了增加将成功地完成用于将数据集合写入到存储器系统的操作(其可称为编程操作)的可能性,可使用用于分配(例如,创建、保留)足够空间以用于写入所述数据集合的新技术。而且,为了防止失败的编程操作致使装置不可操作,可使用使程序能够回退到编程操作之前的版本的新技术。
在一些实例中,主机系统可获得用于写入到存储器系统的数据。所述主机系统可将所述数据待写入到所述存储器系统的指示发送到所述存储器系统,且所述存储器系统可移除所述存储器系统处的无效数据,直到所述存储器系统具有足够资源来存储所述数据为止。基于或响应于存储器系统具有足够资源,存储器系统可延迟存储器系统处的后台操作(例如,垃圾收集),直到数据已写入到存储器系统为止。存储器系统还可基于或响应于存储器系统具有足够资源且接收到数据而创建恢复点。
在一些实例中,主机系统可获得用于写入到存储器系统的数据。所述主机系统可开始将数据写入到存储器系统处的资源集合,其中存储器系统可禁止针对所述资源集合执行后台操作(例如,垃圾收集)。在将数据写入到所述资源集合之前,主机系统可请求存储器系统是否包含用于存储数据的可用资源的指示。存储器系统可基于或响应于比较所述资源集合的大小与阈值而发射存储器系统是否包含可用资源的指示。如果所述资源集合的大小小于阈值,则存储器系统可指示资源可用于数据。基于或响应于确定是否存在可用资源,存储器系统可在存在可用资源的情况下开始将数据写入到存储器系统。存储器系统还可基于或响应于开始写入数据而创建恢复点。
本公开的特征首先在存储器系统的上下文中加以描述。还在处理流程和流程图的上下文中描述本公开的特征。本公开的这些和其它特征进一步由涉及确定用于存储数据的可用资源的设备图和流程图的上下文中加以说明和描述。
图1说明根据如本文中所公开的实例的支持确定用于存储数据的可用资源的系统100的实例。系统100包含与存储器系统110耦接的主机系统105。
存储器系统110可为或包含任何装置或装置的集合,其中所述装置或装置的集合包含至少一个存储器阵列。例如,存储器系统110可为或包含通用快闪存储(UFS)装置、嵌入式多媒体控制器(eMMC)装置、快闪装置、通用串行总线(USB)快闪装置、安全数字(SD)卡、固态驱动器(SSD)、硬盘驱动器(HDD)、双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM),或非易失性DIMM(NVDIMM),以及其它可能性。
系统100可包含在计算装置中,所述计算装置如台式计算机、膝上型计算机、网络服务器、移动装置、交通工具(例如,飞机、无人机、火车、汽车或其它运输工具)、具物联网(IoT)功能的装置、嵌入式计算机(例如,包含在交通工具、工业设备或联网商业装置中的嵌入式计算机),或包含存储器和处理装置的任何其它计算装置。
系统100可包含主机系统105,其可与存储器系统110耦合。在一些实例中,此耦合可包含与主机系统控制器106的接口,所述主机系统控制器可以是经配置以使主机系统105根据如本文所描述的实例执行各种操作的控制器或控制组件的实例。主机系统105可包含一或多个装置,且在一些情况下可包含处理器芯片组和通过处理器芯片组执行的软件堆栈。例如,主机系统105可包含经配置以用于与存储器系统110或其中的装置通信的应用程序。处理器芯片组可包含一或多个核心、一或多个高速缓存(例如,主机系统105本地的或包含在主机系统105中的存储器)、存储器控制器(例如,NVDIMM控制器),和存储协议控制器(例如,外围组件互连高速(PCIe)控制器、串行高级技术附件(SATA)控制器)。主机系统105可以使用存储器系统110,例如以将数据写入到存储器系统110和从存储器系统110读取数据。尽管在图1中展示一个存储器系统110,但主机系统105可以与任何数量的存储器系统110耦合。
主机系统105可以经由至少一个物理主机接口与存储器系统110耦合。在一些情况下,主机系统105及存储器系统110可经配置以使用相关联协议经由物理主机接口通信(例如,以在存储器系统110与主机系统105之间交换或以其它方式传达控制、地址、数据及其它信号)。物理主机接口的实例可包含但不限于SATA接口、UFS接口、eMMC接口、PCIe接口、USB接口、光纤通道接口、小型计算机系统接口(SCSI)、串行连接的SCSI(SAS)、双数据速率(DDR)接口、DIMM接口(例如,支持DDR的DIMM套接接口)、开放NAND快闪接口(ONFI),和低功率双数据速率(LPDDR)接口。在一些实例中,一或多个这类接口可包含在主机系统105的主机系统控制器106与存储器系统110的存储器系统控制器115中或以其它方式在其间得到支持。在一些实例中,主机系统105可经由用于包含在存储器系统110中的每个存储器装置130的相应物理主机接口,或经由用于包含在存储器系统110中的每种类型的存储器装置130的相应物理主机接口与存储器系统110耦合(例如,主机系统控制器106可与存储器系统控制器115耦合)。
存储器系统110可包含存储器系统控制器115和一或多个存储器装置130。存储器装置130可以包含任何类型的存储器单元(例如,非易失性存储器单元、易失性存储器单元,或其任何组合)的一或多个存储器阵列。尽管图1的实例中示出两个存储器装置130-a和130-b,但存储器系统110可包含任何数量的存储器装置130。此外,如果存储器系统110包含超过一个存储器装置130,则存储器系统110内的不同存储器装置130可包含相同或不同类型的存储器单元。
存储器系统控制器115可与主机系统105耦合及通信(例如,经由物理主机接口),并且可以是经配置以致使存储器系统110根据如本文所描述的实例执行各种操作的控制器或控制组件的实例。存储器系统控制器115还可与存储器装置130耦合及通信以在存储器装置130处执行一般可称为存取操作的操作,例如读取数据、写入数据、擦除数据或刷新数据,以及其它这类操作。在一些情况下,存储器系统控制器115可从主机系统105接收命令且与一或多个存储器装置130通信以执行此些命令(例如,在所述一或多个存储器装置130内的存储器阵列处)。举例来说,存储器系统控制器115可从主机系统105接收命令或操作,且可将所述命令或操作转换为指令或适当命令以实现存储器装置130的所要存取。在一些情况下,存储器系统控制器115可与主机系统105以及与一或多个存储器装置130交换数据(例如,响应于来自主机系统105的命令或以其它方式与所述命令相关联)。例如,存储器系统控制器115可以将与存储器装置130相关联的响应(例如,数据分组或其它信号)转换成用于主机系统105的相应信号。
存储器系统控制器115可经配置以用于与存储器装置130相关联的其它操作。例如,存储器系统控制器115可执行或管理操作,例如耗损均衡操作、垃圾收集操作、错误检测操作或错误校正操作等错误控制操作、加密操作、高速缓存操作、媒体管理操作、背景刷新、健康监测,以及与来自主机系统105的命令相关联的逻辑地址(例如,逻辑块地址(LBA))和与存储器装置130内的存储器单元相关联的物理地址(例如,物理块地址)之间的地址转换。
存储器系统控制器115可包含硬件,如一或多个集成电路或离散组件、缓冲存储器或其组合。硬件可包含具有专用(例如,硬译码)逻辑的电路,以执行本文中归于存储器系统控制器115的操作。存储器系统控制器115可以是或包含微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)、数字信号处理器(DSP)),或任何其它合适的处理器或处理电路。
存储器系统控制器115还可包含本地存储器120。在一些情况下,本地存储器120可包含只读存储器(ROM)或其它可存储操作代码(例如,可执行指令)的存储器,所述操作代码可由存储器系统控制器115执行以执行本文中属于存储器系统控制器115的功能。在一些情况下,本地存储器120可另外或替代地包含静态随机存取存储器(SRAM)或其它可供存储器系统控制器115用于内部存储或计算的存储器,例如,与本文中属于存储器系统控制器115的功能有关的内部存储或计算。另外或替代地,本地存储器120可用作存储器系统控制器115的高速缓存。例如,如果从存储器装置130读取或向其写入,则数据可以存储在本地存储器120中,并且数据可在本地存储器120内供主机系统105(例如,相对于存储器装置130具有减小的时延)用于后续根据高速缓存策略进行检索或操控(例如,更新)。
虽然图1中的存储器系统110的实例已说明为包含存储器系统控制器115,但在某些情况下,存储器系统110可不包含存储器系统控制器115。举例来说,存储器系统110可另外或替代地依赖于外部控制器(例如,由主机系统105实施)或可分别在存储器装置130内部的一或多个本地控制器135,以执行本文中归于存储器系统控制器115的功能。一般来说,本文中归于存储器系统控制器115的一或多个功能可在一些情况下改为由主机系统105、本地控制器135或其任何组合进行。在一些情况下,至少部分地由存储器系统控制器115管理的存储器装置130可称为受管理存储器装置。受管理存储器装置的实例是受管理NAND(MNAND)装置。
存储器装置130可以包含非易失性存储器单元的一或多个阵列。举例来说,存储器装置130可包含NAND(例如,NAND快闪)存储器、ROM、相变存储器(PCM)、自选存储器、其它基于硫族化物的存储器、铁电随机存取存储器(RAM)(FeRAM)、磁性RAM(MRAM)、NOR(例如,NOR快闪)存储器、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻式随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、电可擦除可编程ROM(EEPROM),或其任何组合。另外或替代地,存储器装置130可包含一或多个易失性存储器单元阵列。举例来说,存储器装置130可包含RAM存储器单元,例如动态RAM(DRAM)存储器单元和同步DRAM(SDRAM)存储器单元。
在一些实例中,存储器装置130可以(例如,在同一裸片上或在同一封装内)包含本地控制器135,其可以对相应存储器装置130的一或多个存储器单元执行操作。本地控制器135可结合存储器系统控制器115操作,或可进行本文中归于存储器系统控制器115的一或多个功能。例如,如图1所说明,存储器装置130-a可以包含本地控制器135-a,并且存储器装置130-b可以包含本地控制器135-b。
在一些情况下,存储器装置130可以是或包含NAND装置(例如,NAND快闪装置)。存储器装置130可为或包含存储器裸片160。举例来说,在一些情况下,存储器装置130可为包含一或多个裸片160的封装,所述裸片可为存储器裸片160。在一些实例中,裸片160可为从晶片切割的一块电子级半导体(例如,从硅晶片切割的硅裸片)。每个裸片160可包含一或多个平面165,且每个平面165可包含相应的一组块170,其中每个块170可包含相应的一组页175,并且每个页175可包含一组存储器单元。
在一些情况下,NAND存储器装置130可包含经配置以各自存储一个信息位的存储器单元,其可被称为单层级单元(SLC)。另外或替代地,NAND存储器装置130可以包含经配置以各自存储多个信息位的存储器单元,如果经配置以各自存储两个信息位,则其可以被称为多层级单元(MLC),如果经配置以各自存储三个信息位,则其可以被称为三层级单元(TLC),如果经配置以各自存储四个信息位,则其可以被称为四层级单元(QLC),或更一般地被称为多层级存储器单元。多层级存储器单元可相对于单层级存储器单元提供更大的存储密度,但在一些情况下,可涉及用于支持电路系统的更窄读取或写入裕度或更大复杂度。
在一些情况下,平面165可以指块170的群组,且在一些情况下,可以在不同平面165内发生并发操作。例如,可对不同块170内的存储器单元进行并行操作,只要不同块170处于不同平面165中即可。在一些情况下,个别块170可被称作物理块,并且虚拟块180可指可在其内发生并行操作的块170的群组。举例来说,可对分别在平面165-a、165-b、165-c和165-d内的块170-a、170-b、170-c和170-d执行并行操作,且块170-a、170-b、170-c和170-d可统称为虚拟块180。在一些情况下,虚拟块可包含来自不同存储器装置130的块170(例如,包含存储器装置130-a和存储器装置130-b的一或多个平面中的块)。在一些情况下,虚拟块内的块170可在其相应平面165内具有相同的块地址(例如,块170-a可为平面165-a的“块0”,块170-b可为平面165-b的“块0”,等等)。在一些情况下,在不同平面165中进行并行操作可受制于一或多个限制,如对不同页175内的存储器单元进行并行操作,所述存储器单元在其相应平面165内具有相同页地址(例如,与命令解码、页地址解码电路系统,或跨平面165共享的其它电路系统相关)。
在一些情况下,块170可包含组织成行(页175)和列(例如,串,未展示)的存储器单元。例如,同一页175中的存储器单元可共享共同字线(例如,与其耦合),并且同一串中的存储器单元可共享共同数字线(其可替代地被称为位线)(例如,与其耦合)。
对于一些NAND架构,存储器单元可在第一粒度级别(例如,在页粒度级别)读取和编程(例如,写入),但可在第二粒度级别(例如,在块粒度级别)擦除。也就是说,页175可为可独立地编程或读取(例如,作为单个编程或读取操作的一部分同时编程或读取)的存储器(例如,存储器单元的集合)的最小单元,且块170可为可独立地擦除(例如,作为单个擦除操作的一部分同时擦除)的存储器(例如,存储器单元的集合)的最小单元。此外,在一些情况下,NAND存储器单元可在其可用新数据重写之前进行擦除。因此,举例来说,在一些情况下,可直到包含页175的整个块170已被擦除才更新所使用的页175。
在一些情况下,为了更新块170内的一些数据同时保留块170内的其它数据,存储器装置130可以将待保留的数据复制到新块170且将更新后的数据写入到新块170的一或多个其余页。存储器装置130(例如,本地控制器135)或存储器系统控制器115可将保持在旧块170中的数据标记或以其它方式标示为无效或过时,并且可更新逻辑到物理(L2P)映射表以使数据的逻辑地址(例如,LBA)与新的有效块170而不是旧的无效块170相关联。在一些情况下,例如由于时延或耗损考虑,此类复制和重新映射可能比擦除和重新写入整个旧块170更佳。在一些情况下,L2P映射表的一或多个副本可存储在存储器装置130的存储器单元内(例如,存储在一或多个块170或平面165内),以供本地控制器135或存储器系统控制器115使用(例如,参考和更新)。
在一些情况下,可以维持L2P映射表且可以页级别的粒度将数据标记为有效或无效的,并且页175可以包含有效数据、无效数据或不包含数据。无效数据可以是由于数据的较新版本或更新版本存储在存储器装置130的不同页175中而过时的数据。无效数据先前可能已被编程到无效页175,但可能不再与有效逻辑地址(例如由主机系统105参考的逻辑地址)相关联。有效数据可以是存储在存储器装置130上的此类数据的最新版本。不包含数据的页175可以是从未被写入或已被擦除的页175。
在一些情况下,存储器系统控制器115或本地控制器135可以执行存储器装置130的操作(例如,作为一或多个媒体管理算法的一部分),例如耗损均衡、后台刷新、垃圾收集、清理、块扫描、健康监测,或其它操作,或其任何组合。例如,在存储器装置130内,块170可以具有包含有效数据的一些页175和包含无效数据的一些页175。为了避免等待块170中的所有页175具有无效数据以便擦除和重复使用块170,可调用被称作“垃圾收集”的算法,以允许块170被擦除和释放为用于后续写入操作的空闲块。垃圾收集可指媒体管理操作集,其包含例如选择包含有效和无效数据的块170、选择块中包含有效数据的页175、将来自所选页175的有效数据复制到新位置(例如,另一块170中的空闲页175)、将先前选择的页175中的数据标记为无效,以及擦除选定块170。因此,可增加已擦除的块170的数量,使得可使用更多的块170来存储后续数据(例如,随后从主机系统105接收到的数据)。
系统100可包含支持确定用于存储数据的可用资源的任何数量的非暂时性计算机可读媒体。例如,主机系统105、存储器系统控制器115或存储器装置130可包含或以其它方式可存取一或多个非暂时性计算机可读媒体,所述非暂时性计算机可读媒体存储指令(例如,固件)以进行本文中属于主机系统105、存储器系统控制器115或存储器装置130的功能。举例来说,如果由主机系统105(例如,由主机系统控制器106)、由存储器系统控制器115或由存储器装置130(例如,由本地控制器135)执行,则此类指令可使得主机系统105、存储器系统控制器115或存储器装置130执行如本文所描述的一或多个相关联功能。
在一些情况下,存储器系统110可利用存储器系统控制器115以提供受管理存储器系统,所述受管理存储器系统可包含例如一或多个存储器阵列和与本地(例如,裸片上或封装中)控制器(例如,本地控制器135)组合的相关电路系统。受管理存储器系统的实例为受管理NAND(MNAND)系统。
存储器系统110可用以存储用于安装于装置上的程序(例如,操作系统、应用程序)的指令。在一些实例中,可在主机系统105处从外部源(例如,使用空中软件更新)接收用于所述程序的数据。所接收数据的大小可相对较大,例如多个千兆字节。在一些实例中,所接收数据可包含多个更新。基于或响应于接收到数据,主机系统105可尝试在存储器系统110处存储数据。为了在存储器系统110处存储数据,主机系统105可发出一系列写入命令以在存储器系统110处写入数据。如果所接收数据包含多个更新,则主机系统105可连续地接收多个更新并将所述多个更新写入到存储器系统110。
在一些实例中,存储器系统110的空间可能不足以存储用于在主机系统105处接收的程序的数据。在此些情况下,用于在存储器系统110处写入数据的操作可能失败。另外或替代地,当数据写入到存储器系统110时,在存储器系统110处运行的后台操作可致使存储在存储器系统110处且与程序相关联的数据移动,出乎意料地,移动到不同位置,以便移动到主机系统105。在此些情况下,用于在存储器系统110处写入数据的操作可成功,但用于程序的数据可能在写入数据时或在写入数据之后损坏。在写入失败的情况下,主机系统105可能不能够将存储器系统110回退到在写入数据之前的状态,且在一些实例中,包含存储器系统110和主机系统105的装置可由于未能将数据恰当地写入到存储器系统110而被致使不可操作。
为了增加将成功地完成用于将数据集合写入到存储器系统的操作(其可称为编程操作)的可能性,可使用用于分配(例如,创建、保留)足够空间以用于写入所述数据集合的技术。而且,为了防止失败的编程操作致使装置不可操作,可使用使程序能够回退到编程操作之前的版本的技术。
在一些实例中,为了增加编程操作的成功,可在编程操作之前执行垃圾收集操作以确保足够空间可用于编程操作的数据。在一些实例中,主机系统105可接收安装在包含主机系统105的装置上的软件的更新。举例来说,主机系统105可例如基于或响应于用户启用待执行的更新而接收安装在主机系统105上的操作系统的更新。可在主机系统105处从外部服务器(例如,空中)接收更新,且主机系统105可将所述更新写入到存储器系统110。在一些实例中,主机系统105还可接收更新的大小的指示或确定更新的大小的上限。基于或响应于接收到更新,主机系统105可将所述更新待写入到存储器系统110的指示发射到存储器系统110。基于或响应于接收到所述指示,存储器系统110可移除存储器系统110处的无效数据(例如,通过执行垃圾收集操作以删除无效数据),直到存储器系统110处的可用资源的大小大于或等于更新的大小为止。
基于或响应于释放存储器系统110中的足够空间,存储器系统110还可在存储器系统110处延迟(例如,停用)后台操作,例如垃圾收集。存储器系统110可向主机系统105指示存在用于更新的足够空间,且主机系统105可开始将更新写入到存储器系统110。在一些实例中,在写入更新之前,主机系统105可发送用于写入更新的操作开始的指示,使得存储器系统110可创建恢复点,其可在写入更新失败的情况下用于回退操作。
通过在执行更新之前释放存储器中的足够空间以用于更新,可避免原本将由需要额外空间的更新导致的失败。而且,通过创建恢复点,可以在更新因任何原因而失败(例如,不足空间、数据损坏、连接丢失)的情况下将程序回退到更新前版本。
在一些实例中,为了增加编程操作的成功,可针对用于存储编程操作的数据的资源集合延迟(例如,停用)垃圾收集操作。在一些实例中,主机系统105可接收安装在包含主机系统105的装置上的软件的更新,如上文类似地描述。基于或响应于接收到更新,主机系统105可将对存储器系统110处可用于存储更新的资源的大小的指示的请求发送到存储器系统110。基于或响应于接收到所述指示,存储器系统110可将垃圾收集已针对其延迟的资源集合的大小与阈值相比较,例如,阈值的大小可基于或响应于存储器系统110处的可用资源的大小。如果所述资源集合的大小低于阈值,则存储器系统110可向主机系统105指示存储器系统110中存在足够空间用于更新。因此,主机系统105可指示更新的开始,且开始将更新写入到存储器系统110,且存储器系统110可创建恢复点,如上文所描述。
通过延迟针对保留用于存储更新的资源集合的垃圾收集(例如,保留用于更新的资源集合),一旦接收到用于更新的数据,就可以将用于更新的数据写入到存储器。而且,如果存储器在更新正写入到存储器时用完空闲空间,则存储器可能够将程序恢复到更新预版本。
图2说明根据如本文中所公开的实例的支持确定用于存储数据的可用资源的一组操作的实例。
处理流程200可由主机系统205和存储器系统210执行,所述主机系统和存储器系统可为上文参考图1所描述的主机系统或存储器系统的实例。在一些实例中,处理流程200说明经执行以支持确定用于存储数据的可用资源的一组实例操作。举例来说,处理流程200描绘用于增加足够量的可用资源以使得能够执行用于将数据集合写入到存储器系统的操作(其可被称为编程操作),同时在编程操作失败的情况下保持恢复点的操作。
处理流程200中描述的一或多个操作可在所述过程中较早或较晚地执行、省略、替换、补充或与另一操作组合。而且,本文中所描述的额外操作可包含于处理流程200中。
处理流程200的各方面可由控制器以及其它组件实施。另外或替代地,处理流程200的各方面可实施为存储在存储器中的指令(例如,存储在与主机系统205耦合的存储器中的固件或存储在与存储器系统210耦合的存储器中的固件)。举例来说,所述指令在由控制器(例如,主机系统205处)执行时可致使控制器执行处理流程200的操作。
在框215处,可获得数据,例如主机系统205可获得用于写入到存储器系统210的数据。在一些实例中,主机系统205可接收数据待写入到存储器系统210的指示。数据可用于支持安装在包含主机系统205和存储器系统210的装置处的软件(例如,应用程序、操作系统)的更新。数据可在主机系统205处从外部源(例如,空中)接收。在一些实例中,主机系统205可例如基于或响应于随数据接收到的指示而确定数据的大小。在其它实例中,主机系统205可例如基于或响应于所接收数据的类型、经编程上限等而确定数据的大小的上限。
在箭头220处,可在存储器系统处用信号表示可用资源的大小的指示,例如,主机系统205可在存储器系统210处发射对可用资源的大小的请求,且存储器系统210可向主机系统指示可用资源的大小。在一些实例中,主机系统205发射用于空闲逻辑地址的大小的读取描述符。
在框225处,可确认存储器系统210处是否存在足够可用资源,例如,主机系统205可确认存储器系统210处是否存在足够可用资源来支持更新的执行。举例来说,主机系统205可确定存储器系统210处的可用资源的大小是否大于更新的大小。在一些实例中,主机系统205可确定存储器系统210处的可用资源的大小是否大于更新大小的上限。
在箭头230处,如果确定可用资源不足,则主机系统205可将触发在存储器系统210处执行垃圾收集操作的消息发射到存储器系统210。在一些实例中,所述消息可引导存储器系统210执行垃圾收集操作持续一段时间,例如五分钟。在其它实例中,所述消息可引导存储器系统210执行垃圾收集操作,直到存储器系统210处的可用资源的量足以支持更新为止。在完成所触发的垃圾收集操作之后,存储器系统210可向主机系统205指示存储器系统210处的可用资源的大小。
在其中存储器系统210执行垃圾收集操作持续所设置的持续时间(例如,五分钟)的实例中,可用资源的大小可能不足以支持更新。在此些情况下,主机系统205可将额外消息发送到存储器系统210以基于或响应于确定可用资源的大小小于更新的大小而触发持续所设置的持续时间的另一垃圾收集操作。此操作序列可继续,直到存储器系统210处的可用资源足以支持更新为止。
在其中存储器系统210执行垃圾收集操作直到存储器系统210处的可用资源足以支持更新为止的实例中,主机系统205可放弃确认存储器系统210处的可用资源是否足以支持更新,且继续进行到下一操作。但是,在一些实例中,主机系统205可仍确认存储器系统210处的可用资源是否足以支持更新以作为额外检查。
在框235处,可执行用于写入数据的编程操作,例如,主机系统205可执行用于将数据写入到存储器系统210的编程操作。执行编程操作可包含将包含编程操作已开始的指示的消息发射到存储器系统210。写入数据可包含将数据写入到存储器系统210内的所要位置。
在框240处,可创建恢复点,例如,存储器系统210可基于或响应于接收编程操作已开始的指示而创建恢复点。创建恢复点可包含存储在编程操作开始之前存储的L2P表(例如,物理页表)和物理有效性表。
在箭头245处,可指示编程操作的结果,例如,存储器系统210可向主机系统205指示编程操作的结果。在一些实例中,存储器系统210指示编程操作失败。在其它实例中,存储器系统210指示编程操作成功。
在框250处,可确定编程操作的结果,例如,主机系统205可基于或响应于从存储器系统210接收的指示而确定编程操作的成功或失败。在一些实例中,主机系统205确定编程操作成功,例如,数据成功写入到存储器系统210中的恰当位置。在一些实例中,主机系统205确定编程操作不成功,例如,数据未成功写入到存储器系统210。
在箭头255处,基于或响应于确定编程操作成功,主机系统205可将编程操作的结束的指示发射到存储器系统210。
在箭头260处,基于或响应于确定编程操作失败,主机系统205可发射引导存储器系统210回退到编程操作之前的状态的消息。
在框265处,可在存储器系统210处恢复编程操作之前的状态,例如,存储器系统210可将其自身恢复到编程操作之前的状态。在一些实例中,恢复先前状态可包含用在编程操作开始之前存储的对应表替换当前L2P和有效性表。另外或替代地,恢复先前状态可包含取消映射在编程操作期间写入的逻辑地址。恢复先前状态还可包含删除存储在对应于被取消映射的逻辑地址的物理地址处的数据。为了确定编程操作期间改变(例如,写入或被取消映射)的逻辑地址,存储器系统210可将当前L2P和有效性表与先前存储的L2P和有效性表进行比较。
在箭头270处,可指示回退操作的结果,例如,存储器系统210可向主机系统205指示回退操作的结果)。在一些实例中,存储器系统210可指示回退操作成功,例如,存储于存储器系统210中的数据匹配在编程操作之前存储于存储器系统210中的数据。在一些实例中,存储器系统210可指示回退操作不成功,例如,存储于存储器系统210中的数据不同于在编程操作之前存储于存储器系统210中的数据。
在框275处,可确定回退操作的成功,例如,主机系统205可例如基于或响应于回退操作的结果的所接收指示而确定存储器系统210处的回退操作的成功。在一些实例中,主机系统205可例如基于或响应于接收到回退操作成功的指示而确定回退操作成功。在其它实例中,主机系统205可例如基于或响应于接收到回退操作不成功的指示或未接收到回退操作的结果的任何指示而确定回退操作不成功。
在框280处,如果主机系统205确定回退操作不成功,则主机系统205可第二次执行编程操作。
图3说明根据如本文中所公开的实例的支持确定用于存储数据的可用资源的一组操作的实例。
流程图300描绘由主机系统执行以支持在执行编程操作(例如,空中更新)之前执行垃圾收集的一组实例操作。流程图300的各方面可由控制器以及其它组件实施。另外或替代地,流程图300的各方面可实施为存储在存储器中的指令(例如,存储在与图1的主机系统105耦合的存储器中的固件)。举例来说,所述指令在由控制器(例如,在主机系统105处)执行时可致使控制器执行流程图300的操作。
在框305处,可接收数据。在一些实例中,所述数据可包含用于在包含主机系统的装置处更新程序(例如,操作系统)的信息。
在框310处,可请求存储器系统处的可用资源的指示。在一些实例中,主机系统发射用于读取存储可用资源的大小的存储器系统处的寄存器以请求所述指示的命令。在一些实例中,主机系统从存储器系统发射请求可用资源的大小以请求所述指示的命令。
在菱形315处,可确定存储器系统处的可用资源是否足以支持将所接收数据写入到存储器系统。
在框320处,基于或响应于确定存储器系统处的可用资源不足以用于写入数据,可在存储器系统处触发垃圾收集操作。可基于或响应于执行垃圾收集持续一段时间的命令而触发垃圾收集操作。在持续时间完成之后,存储器系统可将垃圾收集之后的可用资源的指示发射到主机系统。在一些实例中,与确定是否存在可用资源且触发垃圾收集相关联的过程继续,直到存储器系统处存在可用资源可支持数据的存储为止。
或者,可基于或响应于执行垃圾收集的命令而触发垃圾收集操作,直到存储器系统处的可用资源足以用于写入数据为止,例如,命令可包含数据大小的指示。
在框325处,基于或响应于确定可用资源足以用于写入数据,可发射指示用于将数据写入到存储器系统的操作(其可被称为编程操作)的开始的消息。所述消息可被称为“检查点开始”消息。在一些实例中,存储器系统可基于或响应于接收到检查点开始消息而存储信息(例如,L2P和有效性表)。
在框330处,可例如基于或响应于正发射的检查点开始消息而将数据写入到存储器系统。在写入数据的同时,存储器系统可更新L2P和有效性表以反映数据如何写入到存储器系统。
在菱形335处,可确定将数据写入到存储器系统的成功。也就是说,可以确定数据成功地还是未成功写入到存储器系统。
在框340处,基于或响应于确定数据未成功写入到存储器系统,可在存储器系统处触发回退操作。在一些实例中,如果数据在写入到存储器系统的同时损坏(例如,在数据的发射或存储期间),则数据可能未成功写入。在此些情况下,存储器系统可例如使用所存储的L2P和有效性表回退到编程操作之前的状态。
在一些实例中,存储器系统可将所存储的L2P和有效性表与当前L2P和有效性表进行比较,以识别存储器系统中数据已经写入到的逻辑和/或物理位置。在一些实例中,存储器系统可取消映射在编程操作期间写入的逻辑地址,且将在编程操作期间写入的物理地址标示为无效。在完成回退操作之后,存储器系统可指示回退操作的成功或失败。在一些实例中,主机系统重新尝试将数据写入到存储器系统,例如,如果存储器系统指示回退操作失败。
在框345处,可指示指示将数据写入到存储器系统的结束的消息。所述消息可被称为“检查点结束”消息。在一些实例中,存储器系统可基于或响应于接收到检查点结束消息而舍弃所存储的L2P和有效性表。
图4说明根据如本文中所公开的实例的支持确定用于存储数据的可用资源的一组操作的实例。
流程图400描绘由主机系统执行以支持延迟垃圾收集直到完成编程操作(例如,空中更新)之后的一组实例操作。
流程图400描绘由主机系统执行以支持在执行编程操作(例如,空中更新)之前执行垃圾收集的一组实例操作。流程图400的各方面可由控制器以及其它组件实施。另外或替代地,流程图400的各方面可实施为存储在存储器中的指令(例如,存储在与图1的主机系统105耦合的存储器中的固件)。举例来说,所述指令在由控制器(例如,在主机系统105处)执行时可致使控制器执行流程图400的操作。
在框405处,可在主机系统处接收数据,如参考在图3的框305处所执行的操作类似地描述。
在框410处,可请求存储器系统处的过时高速缓存的大小。过时高速缓存可指存储器系统处的数据集合,针对所述数据集合,已停用例如垃圾收集等后台操作。在一些实例中,存储器系统可将资源集合标示为过时。因此,存储器系统可避免对所述资源集合执行垃圾收集操作,直到改变将所述资源集合标示为过时为止。被标示为过时的所述资源集合的大小可随时间推移而减小或增加。
在菱形415处,可例如基于或响应于将过时高速缓存的大小与阈值相比较而确定存储器系统处是否存在可用资源用于写入数据。阈值可指示在将执行垃圾收集之前过时高速缓存可增长到的最大大小。在一些实例中,阈值是基于或响应于例如在创建过时高速缓存之前存储器系统处的可用资源的量。举例来说,阈值可设置为小于存储器系统处的可用资源的大小的万兆字节,例如,以至少适应到将数据写入到小于万兆字节的存储器系统。
在框420处,基于或响应于确定过时高速缓存的大小大于阈值,可移除(例如,清除)与过时高速缓存相关联的逻辑地址和/或物理地址。因此,存储器系统可能够对用于存储逻辑/物理地址的数据的块以及存储器系统中的其它块执行后台操作(例如垃圾收集),以例如释放额外空间。在一些实例中,存储器系统可向主机系统指示过时高速缓存已被清除。因此,主机系统可再次将过时高速缓存的大小与阈值相比较或直接进行到下一操作。
在框425处,基于或响应于确定过时高速缓存的大小小于阈值,可发射指示用于将数据写入到存储器系统的操作(其可被称为编程操作)的开始的消息,如参考图3的框325处所执行的操作类似地描述。在一些实例中,主机系统可基于或响应于过时高速缓存的大小小于阈值而确定存在足够可用资源用于将数据写入到存储器系统。
在框430处,可将数据写入到存储器系统,如参考在图3的框330处所执行的操作类似地描述。在菱形435处,可确定写入数据的成功,如参考在图3的菱形335处执行的操作类似地描述。在框440处,可将存储器系统回退到编程前状态,如参考在图3的框340处所执行的操作类似地描述。在框445处,可指示指示将数据写入到存储器系统的结束的消息,如参考在图3的框345处所执行的操作类似地描述。
图5说明根据如本文中所公开的实例的支持确定用于存储数据的可用资源的资源图的实例。
资源图500描绘资源的分配可如何基于或响应于垃圾收集被延迟直到编程操作(例如,空中更新)完成之后而改变,如在本文中且参考图4所描述。资源图500可包含可在其上执行垃圾收集的垃圾收集候选资源505、可延迟(例如,停用)对其的后台操作(例如垃圾收集)的过时高速缓存资源510;可用以存储管理信息(例如,更新前L2P表、当前L2P表、更新前有效性表、当前有效性表)的改变记录资源515;以及可用资源520(其还可被称作空闲资源)。在一些实例中,资源图500还可包含用以存储数据的占用资源(例如,操作系统或应用程序的当前版本、操作系统数据、应用程序数据)。
第一资源图500-1可描绘在将第一数据集合写入到存储器系统之后(例如,在执行较大更新的第一更新之后)的资源的分配。所述第一数据集合可写入到第一过时高速缓存资源510-1。在一些实例中,在将第一数据集合写入到存储器系统之前或之后,存储器系统可将对应的资源集合标示为第一过时高速缓存资源510-1。存储器系统可基于或响应于将第一数据集合写入到第一过时高速缓存资源510-1而更新存储在第一改变记录资源515-1中的信息。
在一些实例中,存储器系统可例如在写入所述数据集合之前且基于或响应于从主机系统接收到对过时高速缓存的大小的请求而向主机系统指示第一过时高速缓存资源510-1的大小。主机系统可基于或响应于确定过时高速缓存的大小小于阈值而将第一数据集合写入到第一过时高速缓存资源510-1。在一些实例中,所述阈值可基于或响应于第一可用资源520-1的大小,例如,所述阈值可等于或小于(通过偏移量)第一可用资源520-1的大小。
第二资源图500-2可描绘在将第二数据集合写入到存储器系统之后(例如,在执行较大更新的第二更新之后)的资源的分配。第二数据集合可写入到第二过时高速缓存资源510-2,其中第二过时高速缓存资源510-2可包含第一过时高速缓存资源510-1的资源。存储器系统可基于或响应于将第一数据集合写入到第一过时高速缓存资源510-1而更新存储在第二改变记录资源515-2中的信息。如上文类似地描述,存储器系统可在主机系统将第二数据集合写入到存储器系统之前向主机系统指示第二过时高速缓存资源510-2的大小。
第三资源图500-3可描绘在将第三数据集合写入到存储器系统之后(例如,在执行较大更新的第三更新之后)的资源的分配。在一些实例中,过时高速缓存增长到超过阈值的大小,例如,在将第三数据集合写入到存储器系统之后,第三过时高速缓存资源的大小可能超过阈值。在此些情况下,主机系统可确定用于存储器系统完成较大更新的空间不足,且可触发存储器系统清除过时高速缓存,因此,较大更新可能失败。清除过时高速缓存可包含将第三过时高速缓存资源510-3标示为垃圾收集候选资源,且对当前垃圾收集候选资源执行垃圾收集。在一些实例中,在清除过时高速缓存之后存在增加量的可用资源(例如,相对于将较大更新的第一更新写入到存储器系统),且主机系统可再次尝试将完整更新写入到存储器系统。在一些实例中,主机系统可使用在写入第一更新之前存储的L2P和有效性表来将较大更新的第一更新写入到存储器系统。
图6展示根据如本文中所公开的实例的支持确定用于存储数据的可用资源的存储器系统620的框图600。存储器系统620可为如参考图1到5所描述的存储器系统的方面的实例。存储器系统620或其各种组件可为用于执行如本文中所描述的确定用于存储数据的可用资源的各种方面的构件的实例。举例来说,存储器系统620可包含数据组件625、存储器管理组件630、写入组件635、垃圾收集组件640,或其任何组合。这些组件中的每一者可直接或间接地(例如经由一或多个总线)彼此通信。
数据组件625可配置为或以其它方式支持用于接收将在存储器系统处写入数据的指示的构件。存储器管理组件630可配置为或以其它方式支持用于至少部分地基于将写入数据的指示而移除存储器系统处的无效数据直到存储器系统处的可用资源的大小大于或等于数据的大小为止的构件。在一些实例中,存储器管理组件630可配置为或以其它方式支持用于至少部分地基于可用资源的大小大于或等于在移除无效数据之后的数据的大小而延迟存储器系统处的垃圾收集操作的构件。写入组件635可配置为或以其它方式支持用于至少部分地基于延迟垃圾收集操作而将数据写入到可用资源的构件。
在一些实例中,存储器管理组件630可配置为或以其它方式支持用于响应于接收到将写入数据的指示而发射在移除无效数据之前的某一时间所述可用资源的大小的指示的构件。
在一些实例中,存储器管理组件630可配置为或以其它方式支持用于至少部分地基于可用资源的所指示大小小于数据的大小而接收移除无效数据的命令的构件。在一些实例中,垃圾收集组件640可配置为或以其它方式支持用于至少部分地基于命令而执行垃圾收集操作的构件,其中至少部分地基于执行垃圾收集操作而移除无效数据的至少一部分。在一些实例中,存储器管理组件630可配置为或以其它方式支持用于至少部分地基于垃圾收集操作的完成且在延迟垃圾收集操作之前发射可用资源的大小的第二指示的构件。
在一些实例中,存储器管理组件630可配置为或以其它方式支持用于至少部分地基于可用资源的所指示大小小于数据的大小而接收移除无效数据的多个命令的构件。在一些实例中,垃圾收集组件640可配置为或以其它方式支持用于至少部分地基于多个命令而执行多个垃圾收集操作的构件,其中至少部分地基于执行多个垃圾收集操作而移除无效数据。在一些实例中,存储器管理组件630可配置为或以其它方式支持用于在延迟垃圾收集操作之前且在多个垃圾收集操作中的每一垃圾收集操作的相应完成之后发射可用资源大小的所得指示的构件。
在一些实例中,至少部分地基于可用资源的大小大于或等于数据的大小而发射可用资源的大小的最后一个所得指示。
在一些实例中,存储器管理组件630可配置为或以其它方式支持用于至少部分地基于可用资源的所指示大小而接收数据的大小的指示的构件。在一些实例中,垃圾收集组件640可配置为或以其它方式支持用于至少部分地基于数据的大小执行多个垃圾收集操作直到可用资源的大小大于或等于数据的大小为止的构件,其中至少部分地基于执行多个垃圾收集操作而移除无效数据。在一些实例中,存储器管理组件630可配置为或以其它方式支持用于至少部分地基于执行多个垃圾收集操作且在延迟垃圾收集操作之前发射可用资源的大小大于或等于数据的大小的指示的构件。
在一些实例中,存储器管理组件630可配置为或以其它方式支持用于至少部分地基于执行多个垃圾收集操作中的最后一个垃圾收集而确定可用资源的大小是否大于或等于数据的大小的构件,其中至少部分地基于可用资源的大小大于或等于数据的大小而发射可用资源的大小大于或等于数据的大小的指示。
在一些实例中,存储器管理组件630可配置为或以其它方式支持用于至少部分地基于移除无效数据而发射可用资源的大小大于或等于数据的大小的指示的构件。
在一些实例中,数据组件625可配置为或以其它方式支持用于至少部分地基于可用资源的所指示大小大于或等于数据的大小而接收数据的写入操作的开始的指示的构件。在一些实例中,数据组件625可配置为或以其它方式支持用于至少部分地基于接收到写入操作的开始的指示而接收数据的构件,其中将数据写入到可用资源是至少部分地基于接收到数据。
在一些实例中,写入组件635可配置为或以其它方式支持用于至少部分地基于将数据写入到可用资源而发射将数据成功写入到可用资源的指示的构件。在一些实例中,数据组件625可配置为或以其它方式支持用于至少部分地基于数据成功写入而接收写入操作的结束的指示的构件。在一些实例中,垃圾收集组件640可配置为或以其它方式支持用于至少部分地基于写入操作的结束而执行一组经延迟的垃圾收集操作的构件。
在一些实例中,存储器管理组件630可配置为或以其它方式支持用于至少部分地基于接收到写入操作的开始的指示而存储第一映射或第二映射中的一或两者的构件,所述第一映射包含存储器系统处的逻辑地址与物理地址之间的第一关联,所述第二映射指示存储在存储器系统处的物理地址处的数据的有效性。
在一些实例中,写入组件635可配置为或以其它方式支持用于至少部分地基于将数据写入到可用资源而发射写入操作的失败的指示的构件。在一些实例中,存储器管理组件630可配置为或以其它方式支持用于至少部分地基于写入操作的失败而用第一映射替换第三映射且用第二映射替换第四映射的构件,所述第三映射包含存储器系统处的逻辑地址与物理地址之间的第三关联,所述第四映射指示存储在存储器系统处的物理地址处的数据的有效性。
在一些实例中,存储器管理组件630可配置为或以其它方式支持用于发射第三映射和第四映射已经成功地被第一映射和第二映射替换的指示的构件。
在一些实例中,所述数据包含用于存储器系统的空中更新。
在一些实例中,存储器管理组件630可配置为或以其它方式支持用于延迟对存储器系统处的资源集合的垃圾收集操作的构件。在一些实例中,存储器管理组件630可配置为或以其它方式支持用于接收对存储器系统是否包含用于存储数据的可用资源的指示的请求的构件。在一些实例中,存储器管理组件630可配置为或以其它方式支持用于响应于所述请求而至少部分地基于所述资源集合的大小与阈值大小的比较而发射存储器系统是否包含可用资源的指示的构件。在一些实例中,数据组件625可配置为或以其它方式支持用于至少部分地基于所述资源集合的所指示大小小于阈值大小而接收数据的构件。在一些实例中,写入组件635可配置为或以其它方式支持用于将数据写入到所述资源集合的构件。
在一些实例中,存储器管理组件630可配置为或以其它方式支持用于延迟用于第二资源集合的垃圾收集操作的构件。在一些实例中,存储器管理组件630可配置为或以其它方式支持用于接收对存储器系统是否包含用于存储第二数据的可用资源的第二指示的第二请求的构件。在一些实例中,存储器管理组件630可配置为或以其它方式支持用于响应于第二请求而至少部分地基于阈值大小与资源集合和第二资源集合的组合大小的第二比较而发射存储器系统是否包含可用资源的第二指示的构件。
在一些实例中,存储器管理组件630可配置为或以其它方式支持用于至少部分地基于所指示的组合大小大于阈值大小而接收启用对所述资源集合和所述第二资源集合的垃圾收集操作的命令的构件。在一些实例中,垃圾收集组件640可配置为或以其它方式支持用于至少部分地基于启用垃圾收集操作的命令而对所述资源集合和所述第二资源集合执行一或多个垃圾收集操作的构件。
在一些实例中,存储器管理组件630可配置为或以其它方式支持用于至少部分地基于所述资源集合的所指示大小小于阈值大小而接收用于数据的写入操作的开始的指示的构件。在一些实例中,数据组件625可配置为或以其它方式支持用于至少部分地基于接收到写入操作的开始的指示而接收数据的构件,其中将数据写入到所述资源集合是至少部分地基于接收到数据。
在一些实例中,写入组件635可配置为或以其它方式支持用于至少部分地基于将数据写入到资源集合而发射将数据成功写入到资源集合的指示的构件。在一些实例中,数据组件625可配置为或以其它方式支持用于至少部分地基于数据成功写入而接收写入操作的结束的指示的构件。在一些实例中,垃圾收集组件640可配置为或以其它方式支持用于至少部分地基于指示写入操作的结束而对所述资源集合执行延迟的一组垃圾收集操作的构件。
在一些实例中,存储器管理组件630可配置为或以其它方式支持用于至少部分地基于接收到写入操作的开始的指示而存储第一映射或第二映射中的一或两者的构件,所述第一映射包含存储器系统处的逻辑地址与物理地址之间的第一关联,所述第二映射指示存储在存储器系统处的物理地址处的数据的有效性。
在一些实例中,写入组件635可配置为或以其它方式支持用于至少部分地基于将数据写入到资源集合而发射数据的写入操作的失败的指示的构件。在一些实例中,存储器管理组件630可配置为或以其它方式支持用于至少部分地基于写入操作的失败而用第一映射替换第三映射且用第二映射替换第四映射的构件,所述第三映射包含存储器系统处的逻辑地址与物理地址之间的第三关联,所述第四映射指示存储在存储器系统处的物理地址处的数据的有效性。
在一些实例中,存储器管理组件630可配置为或以其它方式支持用于发射第三映射和第四映射已经成功地被第一映射和第二映射替换的指示的构件。
在一些实例中,阈值大小至少部分地基于存储器系统处的可用资源的大小。
图7展示根据如本文中所公开的实例的支持确定用于存储数据的可用资源的主机系统720的框图700。主机系统720可为如参考图1到5所描述的主机系统的方面的实例。主机系统720或其各种组件可为用于执行如本文中所描述的确定用于存储数据的可用资源的各种方面的构件的实例。举例来说,主机系统720可包含存储组件725、存储器管理组件730、编程组件735、恢复组件740,或其任何组合。这些组件中的每一者可直接或间接地(例如经由一或多个总线)彼此通信。
存储组件725可配置为或以其它方式支持用于至少部分地基于识别出将在存储器系统处写入数据而发射对存储器系统处的可用资源的大小的请求的构件。在一些实例中,存储组件725可配置为或以其它方式支持用于响应于所述请求而接收可用资源的大小的指示的构件。在一些实例中,存储组件725可配置为或以其它方式支持用于确定可用资源的大小是否大于或等于数据的大小的构件。存储器管理组件730可配置为或以其它方式支持用于至少部分地基于可用资源的大小小于数据的大小而发射引导存储器系统移除无效数据的一或多个命令的构件。在一些实例中,存储组件725可配置为或以其它方式支持用于响应于所述一或多个命令而接收可用资源的大小的第二指示的构件。编程组件735可配置为或以其它方式支持用于至少部分地基于可用资源的大小的第二指示中指示的可用资源的大小大于或等于数据的大小而将数据发射到存储器系统的构件。
在一些实例中,编程组件735可配置为或以其它方式支持用于至少部分地基于第二指示中指示的可用资源的大小大于或等于数据的大小而发射数据的写入操作的开始的指示的构件。
在一些实例中,编程组件735可配置为或以其它方式支持用于至少部分地基于发射数据而接收数据成功写入的指示的构件。在一些实例中,编程组件735可配置为或以其它方式支持用于至少部分地基于数据成功写入而发射数据的写入操作的结束的指示的构件。
在一些实例中,编程组件735可配置为或以其它方式支持用于至少部分地基于发射数据而接收数据被不恰当地写入的指示的构件。在一些实例中,恢复组件740可配置为或以其它方式支持用于至少部分地基于数据被不恰当地写入的指示而发射将第一映射恢复到第一状态或将第二映射恢复到第二状态中的一或两者的第二命令的构件,所述第一映射包含存储器系统处的逻辑地址与物理地址之间的关联,所述第二映射指示存储在存储器系统处的物理地址处的数据的有效性,所述第一状态和所述第二状态在发射数据之前存在。
在一些实例中,编程组件735可配置为或以其它方式支持用于响应于第二命令而接收未能将第一映射恢复到第一状态或未能将第二映射恢复到第二状态中的一或两者的指示的构件。在一些实例中,恢复组件740可配置为或以其它方式支持用于响应于未能恢复的指示而发射使存储在写有数据的逻辑块地址集合中的数据无效的取消映射命令的构件。在一些实例中,恢复组件740可配置为或以其它方式支持用于至少部分地基于取消映射命令的完成而将数据发射到存储器系统的构件。
在一些实例中,存储组件725可配置为或以其它方式支持用于确定数据的大小的上限的构件,其中确定可用资源的大小是否大于或等于数据的大小包含至少部分地基于数据的大小未知而比较可用资源的大小与数据的大小的上限。
在一些实例中,存储组件725可配置为或以其它方式支持用于至少部分地基于将在存储器系统处写入数据而识别存储器系统处针对其延迟垃圾收集操作的资源集合的构件。在一些实例中,存储组件725可配置为或以其它方式支持用于发射对存储器系统是否包含用于存储数据的可用资源的指示的请求的构件。在一些实例中,存储组件725可配置为或以其它方式支持用于响应于所述请求而接收存储器系统是否包含可用资源的指示的构件。在一些实例中,编程组件735可配置为或以其它方式支持用于至少部分地基于存储器系统包含用于存储数据的可用资源而发射数据的构件。
在一些实例中,存储器管理组件730可配置为或以其它方式支持用于至少部分地基于将在存储器系统处写入第二数据而发射延迟对第二资源集合的垃圾收集操作的命令的构件。在一些实例中,存储组件725可配置为或以其它方式支持用于发射对存储器系统是否包含用于存储第二数据的可用资源的第二指示的第二请求的构件。在一些实例中,存储组件725可配置为或以其它方式支持用于响应于第二请求而接收存储器系统是否包含可用资源的第二指示的构件,所述第二指示至少部分地基于阈值大小和所述资源集合与第二资源集合的组合大小。
在一些实例中,存储器管理组件730可配置为或以其它方式支持用于至少部分地基于所指示的组合大小大于阈值大小而发射启用对所述资源集合和所述第二资源集合的垃圾收集操作的第二命令的构件。
图8展示说明根据如本文所公开的实例的支持确定用于存储数据的可用资源的方法800的流程图。方法800的操作可由如本文中所描述的存储器系统或其组件来实施。举例来说,方法800的操作可由如参考图1到6所描述的存储器系统执行。在一些实例中,存储器系统可执行指令集合以控制装置的功能元件执行所描述的功能。另外或替代地,存储器系统可使用专用硬件执行下文所描述的功能的方面。
在805处,所述方法可包含接收将在存储器系统处写入数据的指示。可根据如本文中所公开的实例来执行805的操作。在一些实例中,805的操作的方面可由如参考图6所描述的数据组件625执行。
在810处,所述方法可包含至少部分地基于将写入数据的指示而移除存储器系统处的无效数据,直到存储器系统处的可用资源的大小大于或等于数据的大小为止。可根据如本文中所公开的实例来执行810的操作。在一些实例中,810的操作的方面可由如参考图6所描述的存储器管理组件630执行。
在815处,所述方法可包含至少部分地基于在移除无效数据之后可用资源的大小大于或等于数据的大小而延迟存储器系统处的垃圾收集操作。可根据如本文中所公开的实例来执行815的操作。在一些实例中,815的操作的方面可由如参考图6所描述的存储器管理组件630执行。
在820处,所述方法可包含至少部分地基于延迟垃圾收集操作而将数据写入到可用资源。可根据如本文中所公开的实例来执行820的操作。在一些实例中,820的操作的方面可由如参考图6所描述的写入组件635执行。
在一些实例中,如本文所描述的设备可执行例如方法800等一或多种方法。所述设备可包含用于进行以下操作的特征、电路系统、逻辑、构件或指令(例如,存储可由处理器执行的指令的非暂时性计算机可读媒体):接收将在存储器系统处写入数据的指示;至少部分地基于将写入数据的指示而移除存储器系统处的无效数据直到存储器系统处的可用资源的大小大于或等于数据的大小为止;至少部分地基于可用资源的大小大于或等于在移除无效数据之后的数据的大小而延迟存储器系统处的垃圾收集操作;以及至少部分地基于延迟垃圾收集操作而将数据写入到可用资源。
本文中所描述的方法800和设备的一些实例可进一步包含用于响应于接收到可能将写入数据的指示而发射在移除无效数据之前的某一时间所述可用资源的大小的指示的操作、特征、电路系统、逻辑、构件或指令。
本文中所描述的方法800和设备的一些实例可进一步包含用于进行以下操作的操作、特征、电路系统、逻辑、构件或指令:至少部分地基于可用资源的所指示大小小于数据的大小而接收移除无效数据的命令;至少部分地基于命令而执行垃圾收集操作,其中可至少部分地基于执行垃圾收集操作而移除无效数据的至少一部分;以及至少部分地基于垃圾收集操作的完成且在延迟垃圾收集操作之前发射可用资源的大小的第二指示。
本文中所描述的方法800和设备的一些实例可进一步包含用于进行以下操作的操作、特征、电路系统、逻辑、构件或指令:至少部分地基于可用资源的所指示大小小于数据的大小而接收移除无效数据的多个命令;至少部分地基于多个命令而执行多个垃圾收集操作,其中可至少部分地基于执行多个垃圾收集操作而移除无效数据;以及在延迟垃圾收集操作之前且在多个垃圾收集操作中的每一垃圾收集操作的相应完成之后发射可用资源大小的所得指示。
在本文中所描述的方法800和设备的一些实例中,可至少部分地基于可用资源的大小大于或等于数据的大小而发射可用资源的大小的最后一个所得指示。
本文中所描述的方法800和设备的一些实例可进一步包含用于进行以下操作的操作、特征、电路系统、逻辑、构件或指令:至少部分地基于可用资源的所指示大小而接收数据的大小的指示;至少部分地基于数据的大小执行多个垃圾收集操作,直到可用资源的大小大于或等于数据的大小为止,其中可至少部分地基于执行多个垃圾收集操作而移除无效数据;以及至少部分地基于执行多个垃圾收集操作且在延迟垃圾收集操作之前发射可用资源的大小可能大于或等于数据的大小的指示。
本文中所描述的方法800和设备的一些实例可进一步包含用于进行以下操作的操作、特征、电路系统、逻辑、构件或指令:至少部分地基于执行多个垃圾收集操作中的最后一个垃圾收集而确定可用资源的大小是否可大于或等于数据的大小的构件,其中可至少部分地基于可用资源的大小大于或等于数据的大小而发射可用资源的大小可大于或等于数据的大小的指示。
本文中所描述的方法800和设备的一些实例可进一步包含用于至少部分地基于移除无效数据而发射可用资源的大小可大于或等于数据的大小的指示的操作、特征、电路系统、逻辑、构件或指令。
本文中所描述的方法800及设备的一些实例可进一步包含用于进行以下操作的操作、特征、电路系统、逻辑、构件或指令:至少部分地基于可用资源的所指示大小大于或等于数据大小,接收数据的写入操作的开始的指示;以及至少部分地基于接收写入操作的开始的指示而接收数据,其中将数据写入到可用资源可至少部分地基于接收到所述数据。
本文中所描述的方法800及设备的一些实例可进一步包含用于进行以下操作的操作、特征、电路系统、逻辑、构件或指令:至少部分地基于将数据写入到可用资源,发射将数据成功写入到可用资源的指示;至少部分地基于数据被成功写入而接收写入操作的结束的指示;以及至少部分地基于写入操作的结束而执行一组经延迟的垃圾收集操作。
本文中所描述的方法800及设备的一些实例可进一步包含用于进行以下操作的操作、特征、电路系统、逻辑、构件或指令:至少部分地基于接收到写入操作的开始的指示而存储第一映射或第二映射中的一或两者的构件,所述第一映射包含存储器系统处的逻辑地址与物理地址之间的第一关联,所述第二映射指示存储在存储器系统处的物理地址处的数据的有效性。
本文中所描述的方法800和设备的一些实例可进一步包含用于进行以下操作的操作、特征、电路系统、逻辑、构件或指令:至少部分地基于将数据写入到可用资源而发射写入操作的失败的指示;以及至少部分地基于写入操作的失败而用第一映射替换第三映射且用第二映射替换第四映射,所述第三映射包含存储器系统处的逻辑地址与物理地址之间的第三关联,所述第四映射指示存储在存储器系统处的物理地址处的数据的有效性。
本文中所描述的方法800和设备的一些实例可进一步包含用于发射第三映射和第四映射可能已被第一映射和第二映射成功替换的指示的操作、特征、电路系统、逻辑、构件或指令。
在本文中所描述的方法800和设备的一些实例中,所述数据包含用于存储器系统的空中更新。
图9展示说明根据如本文所公开的实例的支持确定用于存储数据的可用资源的方法900的流程图。方法900的操作可由如本文中所描述的主机系统或其组件来实施。举例来说,方法900的操作可由如参考图1至5和7所描述的主机系统执行。在一些实例中,主机系统可执行指令集合以控制装置的功能元件执行所描述的功能。另外或替代地,主机系统可使用专用硬件来执行所描述的功能的方面。
在905处,所述方法可包含至少部分地基于识别出将在存储器系统处写入数据而发射对存储器系统处的可用资源的大小的请求。可根据如本文中所公开的实例来执行905的操作。在一些实例中,905的操作的方面可由如参考图7所描述的存储组件725执行。
在910处,所述方法可包含响应于所述请求而接收可用资源的大小的指示。可根据如本文中所公开的实例来执行910的操作。在一些实例中,910的操作的方面可由如参考图7所描述的存储组件725执行。
在915处,所述方法可包含确定可用资源的大小是否大于或等于数据的大小。可根据如本文中所公开的实例来执行915的操作。在一些实例中,915的操作的方面可由如参考图7所描述的存储组件725执行。
在920处,所述方法可包含至少部分地基于可用资源的大小小于数据的大小而发射引导存储器系统移除无效数据的一或多个命令。可根据如本文中所公开的实例来执行920的操作。在一些实例中,920的操作的方面可由如参考图7所描述的存储器管理组件730执行。
在925处,所述方法可包含响应于所述一或多个命令而接收可用资源的大小的第二指示。可根据如本文中所公开的实例来执行925的操作。在一些实例中,925的操作的方面可由如参考图7所描述的存储组件725执行。
在930处,所述方法可包含至少部分地基于可用资源的大小的第二指示中指示的可用资源的大小大于或等于数据的大小而将所述数据发射到存储器系统。可根据如本文中所公开的实例来执行930的操作。在一些实例中,930的操作的方面可由如参考图7所描述的编程组件735执行。
在一些实例中,如本文所描述的设备可执行例如方法900等一或多种方法。所述设备可包含用于进行以下操作的特征、电路系统、逻辑、构件或指令(例如,存储可由处理器执行的指令的非暂时性计算机可读媒体):至少部分地基于识别出将在存储器系统处写入数据而发射对存储器系统处的可用资源的大小的请求;响应于所述请求而接收可用资源的大小的指示;确定可用资源的大小是否大于或等于数据的大小;至少部分地基于可用资源的大小小于数据的大小而发射引导存储器系统移除无效数据的一或多个命令;响应于所述一或多个命令而接收可用资源的大小的第二指示;至少部分地基于可用资源的大小的第二指示中指示的可用资源的大小大于或等于数据的大小而将数据发射到存储器系统。
本文中所描述的方法900和设备的一些实例可进一步包含用于至少部分地基于第二指示中指示的可用资源的大小大于或等于数据的大小而发射用于数据的写入操作的开始的指示的操作、特征、电路系统、逻辑、构件或指令。
本文中所描述的方法900和设备的一些实例可进一步包含用于进行以下操作的操作、特征、电路系统、逻辑、构件或指令:至少部分地基于发射数据而接收数据被成功写入的指示;以及至少部分地基于数据被成功写入,发射数据的写入操作的结束的指示。
本文中所描述的方法900和设备的一些实例可进一步包含用于进行以下操作的操作、特征、电路系统、逻辑、构件或指令:至少部分地基于发射数据而接收数据被不恰当地写入的指示;以及至少部分地基于数据被不恰当地写入的指示而发射将第一映射恢复到第一状态或将第二映射恢复到第二状态中的一或两者的第二命令,所述第一映射包含存储器系统处的逻辑地址与物理地址之间的关联,所述第二映射指示存储在存储器系统处的物理地址处的数据的有效性,所述第一状态和所述第二状态在发射数据之前存在。
本文中所描述的方法900和设备的一些实例可进一步包含用于进行以下操作的操作、特征、电路系统、逻辑、构件或指令:响应于第二命令而接收未能将第一映射恢复到第一状态或未能将第二映射恢复到第二状态中的一或两者的指示;响应于未能恢复的指示而发射使存储在写有数据的逻辑块地址集合中的数据无效的取消映射命令;以及至少部分地基于取消映射命令的完成而将数据发射到存储器系统。
本文中所描述的方法900和设备的一些实例可进一步包含用于进行以下操作的操作、特征、电路系统、逻辑、构件或指令:确定数据的大小的上限,其中确定可用资源的大小是否可大于或等于数据的大小包含至少部分地基于数据的大小未知而比较可用资源的大小与数据的大小的上限。
图10展示说明根据如本文所公开的实例的支持确定用于存储数据的可用资源的方法1000的流程图。方法1000的操作可由如本文中所描述的存储器系统或其组件来实施。举例来说,方法1000的操作可由参考图1到6所描述的存储器系统执行。在一些实例中,存储器系统可执行指令集合以控制装置的功能元件执行所描述的功能。另外或替代地,存储器系统可使用专用硬件执行下文所描述的功能的方面。
在1005处,所述方法可包含延迟对存储器系统处的资源集合的垃圾收集操作。可根据如本文中所公开的实例来执行1005的操作。在一些实例中,1005的操作的方面可由如参考图6所描述的存储器管理组件630执行。
在1010处,所述方法可包含接收对存储器系统是否包含用于存储数据的可用资源的指示的请求。可根据如本文中所公开的实例执行1010的操作。在一些实例中,1010的操作的方面可由如参考图6所描述的存储器管理组件630执行。
在1015处,所述方法可包含响应于所述请求而至少部分地基于所述资源集合的大小与阈值大小的比较而发射存储器系统是否包含可用资源的指示。可根据如本文中所公开的实例来执行1015的操作。在一些实例中,1015的操作的方面可由如参考图6所描述的存储器管理组件630执行。
在1020处,所述方法可包含至少部分地基于所述资源集合的所指示大小小于阈值大小而接收数据。可根据如本文中所公开的实例来执行1020的操作。在一些实例中,1020的操作的方面可由如参考图6所描述的数据组件625执行。
在1025处,所述方法可包含将数据写入到所述资源集合。可根据如本文中所公开的实例来执行1025的操作。在一些实例中,1025的操作的方面可由如参考图6所描述的写入组件635执行。
在一些实例中,如本文所描述的设备可执行例如方法1000等一或多种方法。所述设备可包含用于进行以下操作的特征、电路系统、逻辑、构件或指令(例如,存储可由处理器执行的指令的非暂时性计算机可读媒体):延迟对存储器系统处的资源集合的垃圾收集操作;接收对所述存储器系统是否包含用于存储数据的可用资源的指示的请求;响应于所述请求,至少部分地基于所述资源集合的大小与阈值大小的比较而发射所述存储器系统是否包含可用资源的所述指示;至少部分地基于所述资源集合的所述大小小于所述阈值大小而接收所述数据;以及将所述数据写入到所述资源集合。
本文中所描述的方法1000和设备的一些实例可进一步包含用于进行以下操作的操作、特征、电路系统、逻辑、构件或指令:延迟用于第二资源集合的垃圾收集操作;接收对存储器系统是否包含用于存储第二数据的可用资源的第二指示的第二请求;以及响应于第二请求而至少部分地基于阈值大小与资源集合和第二资源集合的组合大小的第二比较而发射存储器系统是否包含可用资源的第二指示。
本文中所描述的方法1000和设备的一些实例可进一步包含用于进行以下操作的操作、特征、电路系统、逻辑、构件或指令:至少部分地基于所指示的组合大小大于阈值大小而接收启用对所述资源集合和所述第二资源集合的垃圾收集操作的命令;以及至少部分地基于启用垃圾收集操作的命令而对所述资源集合和所述第二资源集合执行一或多个垃圾收集操作。
本文中所描述的方法1000和设备的一些实例可进一步包含用于进行以下操作的操作、特征、电路系统、逻辑、构件或指令:至少部分地基于所述资源集合的所指示大小小于阈值大小而接收用于数据的写入操作的开始的指示;以及至少部分地基于接收到写入操作的开始的指示而接收数据,其中将数据写入到所述资源集合可至少部分地基于接收到数据。
本文中所描述的方法1000及设备的一些实例可进一步包含用于进行以下操作的操作、特征、电路系统、逻辑、构件或指令:至少部分地基于将数据写入到资源集合,发射将数据成功写入到资源集合的指示;至少部分地基于数据被成功写入而接收写入操作的结束的指示;以及至少部分地基于写入操作的结束而对资源集合执行一组经延迟的垃圾收集操作。
本文中所描述的方法1000及设备的一些实例可进一步包含用于进行以下操作的操作、特征、电路系统、逻辑、构件或指令:至少部分地基于接收到写入操作的开始的指示而存储第一映射或第二映射中的一或两者的构件,所述第一映射包含存储器系统处的逻辑地址与物理地址之间的第一关联,所述第二映射指示存储在存储器系统处的物理地址处的数据的有效性。
本文中所描述的方法1000和设备的一些实例可进一步包含用于进行以下操作的操作、特征、电路系统、逻辑、构件或指令:至少部分地基于将数据写入到资源集合而发射写入操作的失败的指示;以及至少部分地基于写入操作的失败而用第一映射替换第三映射且用第二映射替换第四映射,所述第三映射包含存储器系统处的逻辑地址与物理地址之间的第三关联,所述第四映射指示存储在存储器系统处的物理地址处的数据的有效性。
本文中所描述的方法1000和设备的一些实例可进一步包含用于发射第三映射和第四映射可能已被第一映射和第二映射成功替换的指示的操作、特征、电路系统、逻辑、构件或指令。
在本文中所描述的方法1000和设备的一些实例中,阈值大小可至少部分地基于存储器系统处的可用资源的大小。
图11展示说明根据如本文所公开的实例的支持确定用于存储数据的可用资源的方法1100的流程图。方法1100的操作可由如本文中所描述的主机系统或其组件来实施。举例来说,方法1100的操作可由如参考图1至5和7所描述的主机系统执行。在一些实例中,主机系统可执行指令集合以控制装置的功能元件执行所描述的功能。另外或替代地,主机系统可使用专用硬件来执行所描述的功能的方面。
在1105处,所述方法可包含至少部分地基于将在存储器系统处写入数据而识别存储器系统处针对其延迟垃圾收集操作的资源集合。可根据如本文中所公开的实例来执行1105的操作。在一些实例中,1105的操作的方面可由如参考图7所描述的存储组件725执行。
在1110处,所述方法可包含发射对存储器系统是否包含用于存储数据的可用资源的指示的请求。可根据如本文中所公开的实例来执行1110的操作。在一些实例中,1110的操作的方面可由如参考图7所描述的存储组件725执行。
在1115处,所述方法可包含响应于所述请求而接收存储器系统是否包含可用资源的指示。可根据如本文中所公开的实例来执行1115的操作。在一些实例中,1115的操作的方面可由如参考图7所描述的存储组件725执行。
在1120处,所述方法可包含至少部分地基于存储器系统包含用于存储数据的可用资源而发射数据。可根据如本文中所公开的实例来执行1120的操作。在一些实例中,1120的操作的方面可由如参考图7所描述的编程组件735执行。
在一些实例中,如本文所描述的设备可执行例如方法1100等一或多种方法。所述设备可包含用于进行以下操作的特征、电路系统、逻辑、构件或指令(例如,存储可由处理器执行的指令的非暂时性计算机可读媒体):至少部分地基于将在存储器系统处写入数据而识别存储器系统处针对其延迟垃圾收集操作的资源集合;发射对存储器系统是否包含用于存储数据的可用资源的指示的请求;响应于所述请求而接收存储器系统是否包含可用资源的指示;以及至少部分地基于存储器系统包含用于存储数据的可用资源而发射数据。
本文中所描述的方法1100和设备的一些实例可进一步包含用于进行以下操作的操作、特征、电路系统、逻辑、构件或指令:至少部分地基于将在存储器系统处写入第二数据而发射延迟对第二资源集合的垃圾收集操作的命令;发射对存储器系统是否包含用于存储第二数据的可用资源的第二指示的第二请求;以及响应于第二请求而接收存储器系统是否包含可用资源的第二指示,所述第二指示至少部分地基于阈值大小和所述资源集合与第二资源集合的组合大小。
本文中所描述的方法1100和设备的一些实例可进一步包含用于至少部分地基于所指示的组合大小大于阈值大小而发射启用对所述资源集合和所述第二资源集合的垃圾收集操作的第二命令的操作、特征、电路系统、逻辑、构件或指令。
应注意,上文所描述的方法描述了可能的实施方案,且操作和步骤可经重新布置或以其它方式修改,且其它实施方案是可能的。另外,可组合来自所述方法中的两种或更多种的部分。
描述另一种设备。所述设备可包含:存储器装置;控制器,其与所述存储器装置耦合且经配置以使得所述设备:收将在包含所述存储器装置的存储器系统处写入数据的指示;至少部分地基于将写入所述数据的所述指示而移除所述存储器系统处的无效数据,直到所述存储器系统处的可用资源的大小大于或等于所述数据的大小为止;至少部分地基于在移除所述无效数据之后所述可用资源的所述大小大于或等于所述数据的所述大小而延迟所述存储器系统处的垃圾收集操作;以及至少部分地基于延迟所述垃圾收集操作而将所述数据写入到所述可用资源。
在一些实例中,所述控制器可进一步经配置以致使所述设备响应于接收到可能将写入所述数据的所述指示,发射在移除所述无效数据之前的某一时间所述可用资源的所述大小的指示。
在一些实例中,所述控制器可进一步经配置以致使所述设备:至少部分地基于所述可用资源的所述所指示大小小于所述数据的所述大小而接收移除所述无效数据的命令;至少部分地基于所述命令而执行垃圾收集操作,其中可至少部分地基于执行所述垃圾收集操作而移除所述无效数据的至少一部分;以及至少部分地基于所述垃圾收集操作的完成且在延迟垃圾收集操作之前发射所述可用资源的所述大小的第二指示。
可使用多种不同技术和技艺中的任一个来表示本文中所描述的信息和信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号和码片。一些图式可将信号说明为单个信号;然而,信号可表示信号的总线,其中所述总线可具有多种位宽度。
术语“电子连通”、“导电接触”、“连接”和“耦合”可以指组件之间支持电子在组件之间流动的关系。如果组件之间存在可在任何时间支持信号在组件之间流动的任何导电路径,则组件被视为彼此电子通信(或彼此导电接触,或彼此连接,或彼此耦合)。在任何给定时间,基于包含所连接组件的装置的操作,彼此电子连通(或导电接触或连接或耦合)的组件之间的导电路径可以是开路或闭路。所连接组件之间的导电路径可以是组件之间的直接导电路径,或所连接组件之间的导电路径可以是可包含如开关、晶体管或其它组件的中间组件的间接导电路径。在一些实例中,可例如使用例如开关或晶体管等一或多个中间组件来中断所连接组件之间的信号流一段时间。
术语“耦合”是指从组件之间的开路关系移动到组件之间的闭路关系的条件,在开路关系中,信号当前无法通过导电路径在组件之间传达,在闭路关系中,信号能够通过导电路径在组件之间传达。如果如控制器的组件将其它组件耦合在一起,则组件发起允许信号经由先前不准许信号流动的导电路径在其它组件之间流动的改变。
术语“隔离”是指信号当前不能在组件之间流动的组件之间的关系。如果组件之间存在开路,则组件彼此隔离。举例来说,由定位在两个组件之间的开关间隔开的所述组件在开关断开的情况下彼此隔离。如果控制器将两个组件隔离,则控制器实现以下改变:阻止信号使用先前准许信号流动的导电路径在组件之间流动。
术语“如果”、“当……时”、“基于”或“至少部分地基于”可互换使用。在一些实例中,如果术语“如果”、“当……时”、“基于”,或“至少部分地基于”用于描述条件性动作、条件性过程,或过程的部分之间的连接,则所述术语可互换。
术语“响应于”可以指由于先前条件或动作而至少部分地(如果不是完全地)发生的一个条件或动作。例如,可以执行第一条件或动作,并且作为先前条件或动作发生(不管是直接在还是在第一条件或动作之后的一或多个其它中间条件或动作发生之后)的结果,第二条件或动作可以至少部分地发生。
本文中论述的装置,包含存储器阵列,可形成于例如硅、锗、硅锗合金、砷化镓、氮化镓等半导体衬底上。在一些实例中,衬底是半导体晶片。在一些其它实例中,衬底可以是绝缘体上硅(SOI)衬底,例如玻璃上硅(SOG)或蓝宝石上硅(SOP),或另一衬底上的半导体材料的外延层。可通过使用包含但不限于磷、硼或砷的各种化学物质的掺杂来控制衬底或衬底的子区的导电性。可在衬底的初始形成或生长期间,通过离子植入或通过任何其它掺杂手段执行掺杂。
本文中所论述的开关组件或晶体管可表示场效应晶体管(FET),且包括包含源极、漏极和栅极的三端装置。所述端子可通过导电材料(例如金属)连接到其它电子元件。源极和漏极可为导电的,且可包括经重掺杂,例如简并,半导体区。源极与漏极可通过经轻掺杂半导体区或沟道分离。如果通道是n型(即,大部分载流子为电子),则FET可称为n型FET。如果沟道是p型(即,多数载流子是空穴),则FET可被称为p型FET。通道可由绝缘栅极氧化物封端。可通过将电压施加到栅极来控制通道导电性。例如,将正电压或负电压分别施加到n型FET或p型FET可导致通道变得导电。在大于或等于晶体管的阈值电压的电压施加到晶体管栅极的情况下,晶体管可以“接通”或“激活”。如果小于晶体管的阈值电压的电压施加到晶体管栅极,则晶体管可“断开”或“去激活”。
本文结合附图阐述的描述内容描述了实例配置,且并不表示可以实施的或在权利要求书的范围内的所有实例。本文中所使用的术语“示范性”是指“充当实例、例子或说明”,且不“优选于”或“优于”其它实例。详细描述包含具体细节,以提供对所描述技术的理解。然而,可在没有这些特定细节的情况下实践这些技术。在一些情况下,以框图形式示出熟知结构和装置,以免混淆所描述实例的概念。
在附图中,类似组件或特征可以具有相同的参考标记。此外,可通过在参考标记之后跟着短横及在类似组件之间进行区分的第二标记来区分相同类型的各种组件。如果说明书中仅使用第一参考标记,则描述适用于具有相同第一参考标记的类似组件中的任一者,与第二参考标记无关。
本文中所描述的功能可以硬件、由处理器执行的软件、固件或其任何组合实施。如果在由处理器执行的软件中实施,则可将功能作为一或多个指令或代码存储在计算机可读媒体上或经由计算机可读媒体发射。其它实例和实施在本公开和所附权利要求书的范围内。举例来说,由于软件的性质,上文所描述的功能可使用由处理器、硬件、固件、硬连线或这些中的任何者的组合执行的软件实施。实施功能的特征还可物理上位于各种位置处,包含经分布以使得功能的部分在不同物理位置处实施。
举例来说,结合本文的公开内容描述的各种说明性块和组件可使用经设计以执行本文所描述的功能的通用处理器、DSP、ASIC、FPGA或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其任何组合来实施或执行。通用处理器可为微处理器,但在替代方案中,处理器可以是任何处理器、控制器、微控制器或状态机。处理器可实施为计算装置的组合(例如,DSP和微处理器的组合、多个微处理器、一或多个微处理器结合DSP核心,或任何其它此类配置)。
如本文中所使用,包含在权利要求书中,如在项列表(例如,后加例如“中的至少一者”或“中的一或多者”的短语的项列表)中所使用的“或”指示包含端点的列表,使得例如A、B或C中的至少一者的列表意指A或B或C或AB或AC或BC或ABC(即,A和B和C)。另外,如本文所用,短语“基于”不应理解为提及封闭条件集。举例来说,在不脱离本公开的范围的情况下,描述为“基于条件A”的示范性步骤可基于条件A和条件B两者。换句话说,如本文所用,短语“基于”应同样地解释为短语“至少部分地基于”。
计算机可读媒体包含非暂时性计算机存储媒体和通信媒体两者,通信媒体包含促进将计算机程序从一处传送到另一处的任何媒体。非暂时性存储媒体可为可由通用或专用计算机存取的任何可用媒体。作为实例而非限制,非暂时性计算机可读媒体可包括RAM、ROM、电可擦除可编程只读存储器(EEPROM)、压缩光盘(CD)ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用于携载或存储呈指令或数据结构形式的所要程序代码构件且可由通用或专用计算机或者通用或专用处理器存取的任何其它非暂时性媒体。而且,可适当地将任何连接称为计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外线、无线电和微波的无线技术从网站、服务器或其它远程源发射软件,则所述同轴电缆、光纤电缆、双绞线、DSL或例如红外线、无线电和微波的无线技术包含在媒体的定义中。如本文所使用,磁盘和光盘包含CD、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。以上各者的组合也包含在计算机可读媒体的范围内。
提供本文中的描述使得所属领域的技术人员能够进行或使用本公开。所属领域技术人员将清楚对本公开的各种修改,且本文中所定义的一般原理可应用于其它变化形式而不会脱离本公开的范围。因此,本公开不限于本文中所描述的实例和设计,而是被赋予与本文公开的原理和新颖特征一致的最宽范围。
Claims (35)
1.一种设备,其包括:
存储器装置;以及
控制器,其与所述存储器装置耦合且经配置以使得所述设备:
接收将在包括所述存储器装置的存储器系统处写入数据的指示;
至少部分地基于将写入所述数据的所述指示而移除所述存储器系统处的无效数据,直到所述存储器系统处的可用资源的大小大于或等于所述数据的大小为止;
至少部分地基于在移除所述无效数据之后所述可用资源的所述大小大于或等于所述数据的所述大小而延迟所述存储器系统处的垃圾收集操作;以及
至少部分地基于延迟所述垃圾收集操作而将所述数据写入到所述可用资源。
2.根据权利要求1所述的设备,其中所述控制器进一步经配置以致使所述设备:
响应于接收到将写入所述数据的所述指示,发射在移除所述无效数据之前的某一时间所述可用资源的所述大小的指示。
3.根据权利要求2所述的设备,其中所述控制器进一步经配置以致使所述设备:
至少部分地基于所述可用资源的所述所指示大小小于所述数据的所述大小而接收移除所述无效数据的命令;
至少部分地基于所述命令而执行垃圾收集操作,其中至少部分地基于执行所述垃圾收集操作而移除所述无效数据的至少一部分;以及
至少部分地基于所述垃圾收集操作的完成且在延迟所述垃圾收集操作之前发射所述可用资源的所述大小的第二指示。
4.根据权利要求2所述的设备,其中所述控制器进一步经配置以致使所述设备:
至少部分地基于所述可用资源的所述所指示大小小于所述数据的所述大小而接收移除所述无效数据的多个命令;
至少部分地基于所述多个命令而执行多个垃圾收集操作,其中至少部分地基于执行所述多个垃圾收集操作而移除所述无效数据;以及
在延迟所述垃圾收集操作之前且在所述多个垃圾收集操作中的每一垃圾收集操作的相应完成之后,发射所述可用资源的所述大小的所得指示。
5.根据权利要求4所述的设备,其中至少部分地基于所述可用资源的所述大小大于或等于所述数据的所述大小而发射所述可用资源的所述大小的最后一个所得指示。
6.根据权利要求2所述的设备,其中所述控制器进一步经配置以致使所述设备:
至少部分地基于所述可用资源的所述所指示大小而接收所述数据的所述大小的指示;
至少部分地基于所述数据的所述大小而执行多个垃圾收集操作,直到所述可用资源的所述大小大于或等于所述数据的所述大小为止,其中至少部分地基于执行所述多个垃圾收集操作而移除所述无效数据;以及
至少部分地基于执行所述多个垃圾收集操作且在延迟所述垃圾收集操作之前,发射所述可用资源的所述大小大于或等于所述数据的所述大小的指示。
7.根据权利要求6所述的设备,其中所述控制器进一步经配置以致使所述设备:
至少部分地基于执行所述多个垃圾收集操作中的最后一个垃圾收集,确定所述可用资源的所述大小是否大于或等于所述数据的所述大小,其中至少部分地基于所述可用资源的所述大小大于或等于所述数据的所述大小而发射所述可用资源的所述大小大于或等于所述数据的所述大小的所述指示。
8.根据权利要求1所述的设备,其中所述控制器进一步经配置以致使所述设备:
至少部分地基于移除所述无效数据而发射所述可用资源的所述大小大于或等于所述数据的所述大小的指示。
9.根据权利要求8所述的设备,其中所述控制器进一步经配置以致使所述设备:
至少部分地基于所述可用资源的所述所指示大小大于或等于所述数据的所述大小而接收用于所述数据的写入操作的开始的指示;以及
至少部分地基于接收到所述写入操作的所述开始的所述指示而接收所述数据,其中将所述数据写入到所述可用资源至少部分地基于接收到所述数据。
10.根据权利要求9所述的设备,其中所述控制器进一步经配置以致使所述设备:
至少部分地基于将所述数据写入到所述可用资源,发射所述数据成功写入到所述可用资源的指示;
至少部分地基于所述数据被成功写入,接收所述写入操作的结束的指示;以及
至少部分地基于所述写入操作的所述结束,执行一组经延迟的垃圾收集操作。
11.根据权利要求9所述的设备,其中所述控制器进一步经配置以致使所述设备:
至少部分地基于接收到所述写入操作的所述开始的所述指示,存储第一映射或第二映射中的一或两者,所述第一映射包括所述存储器系统处的逻辑地址与物理地址之间的第一关联,所述第二映射指示存储在所述存储器系统处的物理地址处的数据的有效性。
12.根据权利要求11所述的设备,其中所述控制器进一步经配置以致使所述设备:
至少部分地基于将所述数据写入到所述可用资源,发射所述写入操作的失败的指示;以及
至少部分地基于所述写入操作的所述失败,用所述第一映射替换第三映射且用所述第二映射替换第四映射,所述第三映射包括所述存储器系统处的逻辑地址与物理地址之间的第三关联,所述第四映射指示存储在所述存储器系统处的物理地址处数据的所述有效性。
13.根据权利要求12所述的设备,其中所述控制器进一步经配置以致使所述设备:
发射所述第三映射和第四映射已由所述第一映射和所述第二映射成功替换的指示。
14.根据权利要求1所述的设备,其中所述数据包括用于所述存储器系统的空中更新。
15.一种设备,其包括:
存储器装置;以及
控制器,其与所述存储器装置耦合且经配置以使得所述设备:
至少部分地基于识别出将在存储器系统处写入数据而发射对所述存储器系统处的可用资源的大小的请求;
响应于所述请求而接收所述可用资源的所述大小的指示;
确定所述可用资源的所述大小是否大于或等于所述数据的大小;
至少部分地基于所述可用资源的所述大小小于所述数据的所述大小而发射引导所述存储器系统移除无效数据的一或多个命令;
响应于所述一或多个命令,接收所述可用资源的所述大小的第二指示;以及
至少部分地基于所述可用资源的所述大小的所述第二指示中指示的所述可用资源的所述大小大于或等于所述数据的所述大小而将所述数据发射到所述存储器系统。
16.根据权利要求15所述的设备,其中所述控制器进一步经配置以致使所述设备:
至少部分地基于所述可用资源的所述大小的所述第二指示中指示的所述可用资源的所述大小大于或等于所述数据的所述大小,发射用于所述数据的写入操作的开始的指示。
17.根据权利要求15所述的设备,其中所述控制器进一步经配置以致使所述设备:
至少部分地基于所述发射所述数据,接收所述数据被成功写入的指示;以及
至少部分地基于所述数据被成功写入,发射用于所述数据的写入操作的结束的指示。
18.根据权利要求15所述的设备,其中所述控制器进一步经配置以致使所述设备:
至少部分地基于所述发射所述数据,接收所述数据被不恰当地写入的指示;以及
至少部分地基于所述数据被不恰当地写入的所述指示,发射将第一映射恢复到第一状态或将第二映射恢复到第二状态中的一或两者的第二命令,所述第一映射包括所述存储器系统处的逻辑地址与物理地址之间的关联,所述第二映射指示存储在所述存储器系统处的物理地址处的数据的有效性,所述第一状态和所述第二状态在发射所述数据之前存在。
19.根据权利要求18所述的设备,其中所述控制器进一步经配置以致使所述设备:
响应于所述第二命令,接收未能将所述第一映射恢复到所述第一状态或未能将所述第二映射恢复到所述第二状态中的一或两者的指示;
响应于所述未能恢复的所述指示,发射使存储在写有所述数据的逻辑块地址集合中的数据无效的取消映射命令;以及
至少部分地基于所述取消映射命令的完成,将所述数据发射到所述存储器系统。
20.根据权利要求15所述的设备,其中所述控制器进一步经配置以致使所述设备:
确定所述数据的所述大小的上限,其中确定所述可用资源的所述大小是否大于或等于所述数据的所述大小包括至少部分地基于所述数据的所述大小未知而比较所述可用资源的所述大小与所述数据的所述大小的所述上限。
21.一种设备,其包括:
存储器装置;以及
控制器,其与所述存储器装置耦合且经配置以使得所述设备:
延迟对存储器系统处的资源集合的垃圾收集操作;
接收对所述存储器系统是否包括用于存储数据的可用资源的指示的请求;
响应于所述请求,至少部分地基于所述资源集合的大小与阈值大小的比较而发射所述存储器系统是否包括可用资源的所述指示;
至少部分地基于所述资源集合的所述大小小于所述阈值大小而接收所述数据;以及
将所述数据写入到所述资源集合。
22.根据权利要求21所述的设备,其中所述控制器进一步经配置以致使所述设备:
延迟对第二资源集合的垃圾收集操作;
接收对所述存储器系统是否包括用于存储第二数据的可用资源的第二指示的第二请求;以及
响应于所述第二请求,至少部分地基于所述阈值大小与所述资源集合和所述第二资源集合的组合大小的第二比较而发射所述存储器系统是否包括可用资源的所述第二指示。
23.根据权利要求22所述的设备,其中所述控制器进一步经配置以致使所述设备:
至少部分地基于所述组合大小大于所述阈值大小,接收启用对所述资源集合和所述第二资源集合的垃圾收集操作的命令;以及
至少部分地基于启用垃圾收集操作的所述命令而执行对所述资源集合和所述第二资源集合的一或多个垃圾收集操作。
24.根据权利要求21所述的设备,其中所述控制器进一步经配置以致使所述设备:
至少部分地基于所述资源集合的所述大小小于所述阈值大小,接收用于所述数据的写入操作的开始的指示;以及
至少部分地基于接收到所述写入操作的所述开始的所述指示而接收所述数据,其中将所述数据写入到所述资源集合至少部分地基于接收到所述数据。
25.根据权利要求24所述的设备,其中所述控制器进一步经配置以致使所述设备:
至少部分地基于将所述数据写入到所述资源集合,发射所述数据成功写入到所述资源集合的指示;
至少部分地基于所述数据被成功写入,接收所述写入操作的结束的指示;以及
至少部分地基于指示所述写入操作的所述结束,对所述资源集合执行延迟的一组垃圾收集操作。
26.根据权利要求24所述的设备,其中所述控制器进一步经配置以致使所述设备:
至少部分地基于接收到所述写入操作的所述开始的所述指示,存储第一映射或第二映射中的一或两者,所述第一映射包括所述存储器系统处的逻辑地址与物理地址之间的第一关联,所述第二映射指示存储在所述存储器系统处的物理地址处的数据的有效性。
27.根据权利要求26所述的设备,其中所述控制器进一步经配置以致使所述设备:
至少部分地基于将所述数据写入到所述资源集合,发射用于所述数据的所述写入操作的失败的指示;以及
至少部分地基于所述写入操作的所述失败,用所述第一映射替换第三映射且用所述第二映射替换第四映射,所述第三映射包括所述存储器系统处的逻辑地址与物理地址之间的第三关联,所述第四映射指示存储在所述存储器系统处的物理地址处数据的所述有效性。
28.根据权利要求27所述的设备,其中所述控制器进一步经配置以致使所述设备:
发射所述第三映射和第四映射已由所述第一映射和所述第二映射成功替换的指示。
29.根据权利要求21所述的设备,其中所述阈值大小至少部分地基于所述存储器系统处的所述可用资源的大小。
30.一种设备,其包括:
存储器装置;以及
控制器,其与所述存储器装置耦合且经配置以使得所述设备:
至少部分地基于将在存储器系统处写入数据而识别所述存储器系统处针对其延迟垃圾收集操作的资源集合;
发射对所述存储器系统是否包括用于存储所述数据的可用资源的指示的请求;
响应于所述请求,接收所述存储器系统是否包括可用资源的所述指示;以及
至少部分地基于所述存储器系统包括用于存储所述数据的可用资源而发射所述数据。
31.根据权利要求30所述的设备,其中所述控制器进一步经配置以致使所述设备:
至少部分地基于将在所述存储器系统处写入第二数据而发射延迟对第二资源集合的垃圾收集操作的命令;
发射对所述存储器系统是否包括用于存储第二数据的可用资源的第二指示的第二请求;以及
响应于所述第二请求,接收所述存储器系统是否包括可用资源的所述第二指示,所述第二指示至少部分地基于阈值大小和所述资源集合与所述第二资源集合的组合大小。
32.根据权利要求31所述的设备,其中所述控制器进一步经配置以致使所述设备:
至少部分地基于所述组合大小大于所述阈值大小,发射启用对所述资源集合和所述第二资源集合的垃圾收集操作的第二命令。
33.一种方法,其包括:
接收将在存储器系统处写入数据的指示;
至少部分地基于将写入所述数据的所述指示而移除所述存储器系统处的无效数据,直到所述存储器系统处的可用资源的大小大于或等于所述数据的大小为止;
至少部分地基于在移除所述无效数据之后所述可用资源的所述大小大于或等于所述数据的所述大小而延迟所述存储器系统处的垃圾收集操作;以及
至少部分地基于延迟所述垃圾收集操作而将所述数据写入到所述可用资源。
34.根据权利要求33所述的方法,其进一步包括:
响应于接收到将写入所述数据的所述指示,发射在移除所述无效数据之前的某一时间所述可用资源的所述大小的指示。
35.根据权利要求34所述的方法,其进一步包括:
至少部分地基于所述可用资源的所述所指示大小小于所述数据的所述大小而接收移除所述无效数据的命令;
至少部分地基于所述命令而执行垃圾收集操作,其中至少部分地基于执行所述垃圾收集操作而移除所述无效数据的一部分;以及
至少部分地基于所述垃圾收集操作的完成且在延迟垃圾收集操作之前发射所述可用资源的所述大小的第二指示。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163238027P | 2021-08-27 | 2021-08-27 | |
US63/238,027 | 2021-08-27 | ||
US17/488,205 | 2021-09-28 | ||
US17/488,205 US11989439B2 (en) | 2021-08-27 | 2021-09-28 | Determining available resources for storing data |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115718565A true CN115718565A (zh) | 2023-02-28 |
Family
ID=85254840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211031277.1A Pending CN115718565A (zh) | 2021-08-27 | 2022-08-26 | 确定用于存储数据的可用资源 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11989439B2 (zh) |
CN (1) | CN115718565A (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9176804B2 (en) * | 2013-06-27 | 2015-11-03 | International Business Machines Corporation | Memory dump optimization in a system |
US9696935B2 (en) * | 2015-04-24 | 2017-07-04 | Kabushiki Kaisha Toshiba | Storage device that secures a block for a stream or namespace and system having the storage device |
JP2018022397A (ja) * | 2016-08-04 | 2018-02-08 | 富士通株式会社 | ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム |
US10642602B2 (en) * | 2017-12-12 | 2020-05-05 | Nxp Usa, Inc. | NVM architecture with OTA support |
CN110780810B (zh) * | 2018-07-31 | 2023-06-27 | 爱思开海力士有限公司 | 用于彼此接合多个存储器系统以存储数据的设备和方法 |
US10789110B2 (en) * | 2018-09-28 | 2020-09-29 | Apple Inc. | Methods and apparatus for correcting out-of-order data transactions between processors |
US10908844B2 (en) * | 2019-06-18 | 2021-02-02 | Western Digital Technologies, Inc. | Storage system and method for memory backlog hinting for variable capacity |
KR20210111527A (ko) * | 2020-03-03 | 2021-09-13 | 에스케이하이닉스 주식회사 | 메모리 시스템에서 가비지 컬렉션을 수행하는 장치 및 방법 |
-
2021
- 2021-09-28 US US17/488,205 patent/US11989439B2/en active Active
-
2022
- 2022-08-26 CN CN202211031277.1A patent/CN115718565A/zh active Pending
-
2024
- 2024-04-24 US US18/644,759 patent/US20240345766A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US11989439B2 (en) | 2024-05-21 |
US20230063502A1 (en) | 2023-03-02 |
US20240345766A1 (en) | 2024-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114649031A (zh) | 用于存储器装置的逻辑到物理表信息的恢复 | |
CN113760183A (zh) | 存储器系统的存取操作状态信令 | |
CN114968085A (zh) | 数据重定位操作技术 | |
CN115373592B (zh) | 用于页线填充数据的设备、非暂时性计算机可读介质及方法 | |
US20240354032A1 (en) | Storing parity during refresh operations | |
CN114822670A (zh) | 有效数据感知媒体可靠性扫描 | |
CN114647378A (zh) | 用于垃圾收集的有效数据标识 | |
US20230104752A1 (en) | Techniques for failure management in memory systems | |
US11720253B2 (en) | Access of a memory system based on fragmentation | |
CN116343894A (zh) | 具有经减小时延的存储器装置的校正性读取 | |
CN116364152A (zh) | 用于原子写入操作的技术 | |
CN115705852A (zh) | 可配置校验电平 | |
US12124367B2 (en) | Techniques for accessing managed NAND | |
US11989439B2 (en) | Determining available resources for storing data | |
US12061820B2 (en) | Techniques for storing journaling information | |
WO2024187373A1 (en) | Write buffer flush techniques | |
US12111724B2 (en) | Redundant array management techniques | |
US20240054037A1 (en) | Common rain buffer for multiple cursors | |
US20240241788A1 (en) | Techniques for managing memory exception handling | |
US20240274215A1 (en) | Multi-level cell maintenance operations | |
US20240281346A1 (en) | Programming failure handling during data folding | |
US20240289042A1 (en) | Block replacement using combined blocks | |
US20240345733A1 (en) | Memory system procedure detection and latency reduction | |
US20240295971A1 (en) | Dynamic memory management operation | |
US20240319899A1 (en) | Assigning blocks of memory systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |