CN112534415B - 非易失性存储器中的数据有效性跟踪 - Google Patents

非易失性存储器中的数据有效性跟踪 Download PDF

Info

Publication number
CN112534415B
CN112534415B CN201980052059.6A CN201980052059A CN112534415B CN 112534415 B CN112534415 B CN 112534415B CN 201980052059 A CN201980052059 A CN 201980052059A CN 112534415 B CN112534415 B CN 112534415B
Authority
CN
China
Prior art keywords
data
validity
granularity
machine
processing device
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.)
Active
Application number
CN201980052059.6A
Other languages
English (en)
Other versions
CN112534415A (zh
Inventor
B·L·耶普
K·D·舒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN112534415A publication Critical patent/CN112534415A/zh
Application granted granted Critical
Publication of CN112534415B publication Critical patent/CN112534415B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers

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)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种计算机装置从配置文件中读取标识跟踪有效性的数据单元的粒度的指示符。所述粒度是范围为一个数据单元到多个数据单元的多个粒度中的一个。所述计算机装置生成机器可读文件,所述机器可读文件被配置成使存储器系统的处理装置使用多个数据有效性计数器以所标识的粒度来跟踪有效性,其中所述多个数据有效性计数器中的每个数据有效性计数器以所标识的粒度来跟踪一组数据单元的有效性。所述计算机装置将所述机器可读文件转移到所述存储器系统的存储器。

Description

非易失性存储器中的数据有效性跟踪
技术领域
本公开总体上涉及非易失性存储器,并且更具体地涉及跟踪数据有效性。
背景技术
存储器子系统可以是存储系统(例如,固态驱动器(SSD)),并且可以包含存储数据的一或多个存储器组件。存储器组件可以是例如非易失性存储器组件和易失性存储器组件。通常,主机系统可以利用存储器子系统在存储器组件处存储数据并从存储器组件中检索数据。可编程处理装置控制存储器子系统的操作。改变这些处理装置的编程可以改变存储器子系统的操作。
附图说明
根据以下给出的详细描述以及本公开的各个实施例的附图,将更充分地理解本公开。然而,附图不应被视为将本公开限制于具体实施例,而仅是用于解释和理解。
图1示出了根据本公开的一些实施例的包含存储器子系统的示范性计算环境。
图2A至2D示出了根据本公开的一些实施例的以数据单元的各个粒度跟踪数据有效性的示范性数据有效性图。
图3是根据本公开的一些实施例的用于生成机器可读文件以以各个粒度跟踪数据有效性的示范性方法的流程图。
图4是根据本公开的一些实施例的回收过程的示范性框图。
图5是根据本公开的一些实施例的用于回收存储器的未使用部分的示范性方法的流程图。
图6是本公开的实施例可以在其中操作的示范性计算机系统的框图。
具体实施方式
本公开的各个方面涉及在非易失性存储器子系统中的数据有效性跟踪。存储器子系统在下文中也被称为“存储器装置”。存储器子系统的一个实例是存储系统,例如固态驱动器(SSD)。在一些实施例中,存储器子系统是混合存储器/存储子系统。通常,主机系统可以利用包含一或多个存储器组件的存储器子系统。主机系统可以提供待存储在存储器子系统处的数据,并且可以请求从存储器子系统中检索数据。
为了促进主机系统从存储器子系统存储和检索数据的能力,存储器子系统包含一或多个处理装置,这些处理装置进行操作,例如编码和解码、错误恢复、压缩、地址转换、数据擦除等。改变这些一或多个处理装置的编程将改变存储器子系统的操作。
由一或多个处理装置进行的多个操作都具有计算成本(这可能会增加主机系统读取或写入存储器所需的时间的延迟)和存储器成本(这可能会保留一部分存储器,从而减少主机系统可用的量)。数据回收就是一种此类操作。有时被称为“垃圾收集”或“折叠”,数据回收是广泛部署在闪速存储器子系统中用于回收存储器的未使用部分的过程。数据回收解决了在向其中写入新数据之前擦除块中的闪速存储器的需要。当不再需要存储在存储器子系统中的数据时(例如,由于主机系统“删除”或重写了数据),数据不会被立即删除,而是被标记为不再需要(例如,“过期”)。由于过期数据可能与其它非过期数据一起存储在作为块擦除的存储器的一部分中,因此数据回收过程有时会将非过期数据移动到存储器的另一部分,使得可以擦除所述存储器块并且使其可供新数据使用。因此,数据回收过程将保留非过期或“有效”数据,同时释放与过期或“无效”数据相关联的空间。
取决于与存储器子系统一起包含的一或多个处理装置的可用计算和存储资源,存储器子系统的编程可能会有所不同,因为与一种数据回收方法相关联的计算和存储器成本对于针对一种工作负载设计的存储器子系统是可能的,但是对于针对另一种工作负载设计的另一个存储器子系统是不可能的。例如,针对企业级存储应用程序的存储器子系统可以具有较大的计算和存储器预算来支持存储器子系统操作,从而因相对于消费者级存储器子系统的资源预算的增加而提供了更高的性能。因此,存储器子系统的操作(以及因此编程)在存储器子系统设计之间会有所不同。因此,存储器子系统制造商针对其产品线中的每个变型或版本开发了许多不同的代码版本。此外,存储器子系统制造商维护每个代码版本以集成更新、修复等,从而使不同存储器子系统的代码库的维护变得复杂化。
本公开的各个方面通过自动且动态地准备控制存储器子系统中的数据回收操作的固件和/或软件来解决以上和其它缺陷。以这种方式,具有不同计算和存储器预算的不同存储器子系统不需要为每个存储器子系统开发和维护不同的代码库。另外,本公开的各个方面通过数据回收过程的各个实施方案解决了以上和其它缺陷,所述实施方案可以维持数据回收过程的计算成本并同时降低相关联的存储器成本。降低的存储器成本可以包含减少有效性表的占用空间和地址转换表的占用空间,所述有效性表通知数据回收过程哪些数据是过期/非过期的;所述地址转换表在操作期间用于将与来自主机系统的读取或写入命令相关联的“逻辑”地址转换为与实际上存储数据的存储器子系统内的一或多个位置相对应的“物理”地址。
图1示出了根据本公开的一些实施例的包含存储器子系统110的示范性计算环境100。存储器子系统110可以包含媒体,例如存储器组件112A到112N。存储器组件112A到112N可以是易失性存储器组件、非易失性存储器组件或这些的组合。在一些实施例中,存储器子系统是存储系统。存储系统的一个实例是SSD。在一些实施例中,存储器子系统110是混合存储器/存储子系统。在一些实施例中,计算环境100包含计算机系统120,所述计算机系统可以将新的或更新的编程转移到存储器子系统110。例如,计算机系统120可以将编程信息存储到控制器存储器119。在其它实施例中,计算机系统120使用存储器子系统110进行从存储器组件112A到112N的数据存储和检索操作。例如,计算机系统120可以将数据写入存储器子系统110,并从存储器子系统110中读取数据。
计算机系统120可以是计算装置,例如台式计算机、膝上型计算机、存储器编程装置、网络服务器、移动装置或包含处理装置121和存储器122的这种计算装置。计算机系统120可以包含或耦合到存储器子系统110,使得计算机系统120可以从存储器子系统110中读取数据或向存储器子系统写入数据。计算机系统120可以经由物理接口耦合到存储器子系统110。在一些实施例中,在制造存储器子系统之前或期间,计算机系统120耦合到存储器子系统110的组件,例如控制器存储器119。如本文使用,“耦合到”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有中间组件),无论是有线还是无线,包含诸如电、光、磁等的连接。物理接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连快速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接SCSI(SAS)、JTAG IEEE 1149等。物理接口可以用于在计算机系统120和存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与计算机系统120耦合时,计算机系统120可以进一步利用NVM快速(NVMe)接口来访问存储器组件112A到112N。物理接口可以提供用于在存储器子系统110和计算机系统120之间传递控制、地址、数据和其它信号的接口。
在计算机系统120的所示实施例中,存储器122包含代码124和配置数据125。例如,代码124可以是人类可读软件(例如,用C、C++等编写)和/或固件(例如,用硬件描述语言等编写)和其它文件(例如,文库等),这些均被开发成支持多个不同的存储器子系统。配置数据125包含配置参数126,以调整跟踪数据有效性的粒度,如下所述。在计算机系统120中执行的编译器或其它开发工具(未示出)使用配置数据125将人类可读软件/固件转换成一或多个机器可读文件,所述机器可读文件包含指令或配置数据来对控制器115进行编程和/或配置以进行本文所述的功能。在其它实施例中,计算机系统120使用存储器子系统110但不对其进行编程(例如,存储器122不包含代码124和配置数据125)。
存储器组件112A到112N可以包含不同类型的非易失性存储器组件和/或易失性存储器组件的任何组合。非易失性存储器组件的一个实例包含负与(NAND)型闪速存储器。存储器组件112A到112N中的每一个可以包含一或多个存储器单元(例如,单层单元(SLC)或多层单元(MLC)(例如,三层单元(TLC)或四层单元(QLC)))的阵列。在一些实施例中,特定的存储器组件可以包含存储器单元的SLC部分和MLC部分两者。存储器单元中的每一个可以存储由计算机系统120使用的一或多个数据位(例如,数据块)。尽管描述了诸如NAND型闪速存储器的非易失性存储器组件,但是存储器组件112A到112N可以基于任何其它类型的存储器(例如,易失性存储器)。在一些实施例中,存储器组件112A到112N可以是但不限于随机存取存储器(RAM)、只读存储器(ROM)、动态RAM(DRAM)、同步DRAM(SDRAM)、相变存储器(PCM)、磁RAM(MRAM)、负或(NOR)闪速存储器、电可擦除可编程只读存储器(EEPROM)以及非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可以基于体电阻的变化与可堆叠的交叉网格数据访问阵列一起进行位存储。另外,与多个基于闪存的存储器相反,交叉点非易失性存储器可以进行就地写入操作,其中可以对非易失性存储器单元进行编程,而无需事先擦除非易失性存储器单元。此外,存储器组件112A到112N的存储器单元可以被分组为存储器页或数据块,所述存储器页或数据块可以是指用于存储数据的存储器组件的单元。
存储器子系统控制器115(以下被称为“控制器”)可以与存储器组件112A到112N通信以进行诸如在存储器组件112A到112N处读取数据、写入数据或擦除数据的操作以及其它此类操作。控制器115可以包含硬件,例如一或多个集成电路和/或分立组件、缓冲存储器或其组合。控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其它合适的处理器。控制器115可以包含被配置成执行存储在控制器存储器119中的指令的处理器(处理装置)117。在所示实例中,控制器115的控制器存储器119包含被配置成存储指令的嵌入式存储器,所述指令用于进行控制存储器子系统110的操作(包含处理存储器子系统110和计算机系统120之间的通信)的各种过程、操作、逻辑流程和例程。在一些实施例中,计算机系统120将这些指令存储在控制器存储器119中。在一些实施例中,控制器存储器119可以包含存储存储器指针、获取数据等的存储器寄存器。控制器存储器119还可以包含只读存储器(ROM)以用于存储从计算机系统120接收的代码(例如,微代码)。在一些实施例中,指令/配置数据118包含来自由计算机系统120的编译器或其它开发工具生成的机器可读文件的数据。指令/配置数据118可以由存储器子系统110的组件(例如,处理器117或回收管理器113)执行或可以对其进行配置。尽管图1中的示范性存储器子系统110已被示出为包含控制器115,但是在本公开的另一实施例中,存储器子系统110可以不包含控制器115,而是可以依赖于外部控制(例如,由外部主机或者由与存储器子系统分开的处理器或控制器提供)。
在一些实施例中,控制器存储器119还可以包含DRAM和/或静态RAM(SRAM),以存储用于由控制器115进行的各种过程、操作、逻辑流程和例程的数据。一种此类型的数据是有效性图116。如下所述,有效性图116包含在数据回收过程期间用于标识有效和无效数据的数据。
通常,控制器115可以从计算机系统120接收命令或操作,并且可以将命令或操作转换成指令或适当的命令以实现对存储器组件112A到112N的期望访问。在一些实施例中,控制器115包含命令支持以允许计算机系统120对控制器存储器119进行编程。控制器115可以负责其它操作,例如损耗平衡操作、垃圾收集操作、错误检测和错误校正代码(ECC)操作、加密操作、缓存操作以及与存储器组件112A到112N相关联的逻辑块地址和物理块地址之间的地址转换。在一些实施例中,控制器115在媒体的一部分(例如,存储器组件112A到112N)中维护一或多个地址查找表。在一些实施例中,控制器115可以在控制器存储器119中获取并缓存所述一或多个表的一部分。使用逻辑到物理地址查找表,控制器115可以在给定数据的逻辑地址的情况下获得其物理地址(例如,从计算机系统120)。取决于跟踪数据有效性的粒度级别,控制器115可以使用物理到逻辑地址查找表来查找用于特定物理地址的逻辑地址(例如,在数据回收期间,如本文所述)。在一些实施例中,如本文所述,如果控制器115跟踪数据有效性的粒度足够精细,则物理到逻辑地址查找表可能不是必需的。
控制器115可以进一步包含接口电路系统,以经由物理接口与计算机系统120通信。接口电路系统可以将从计算机系统120接收的命令转换成访问存储器组件112A到112N的命令指令,并将与存储器组件112A到112N相关联的响应转换成计算机系统120的信息。
存储器子系统110还可以包含未示出的另外的电路系统或组件。在一些实施例中,存储器子系统110可以包含可以从控制器115接收地址并解码所述地址以访问存储器组件112A到112N的缓存或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器)。
存储器子系统110包含回收管理器组件113,其以可用于基于有效性图116回收媒体的多个部分。在一些实施例中,控制器115包含回收管理器组件113的至少一部分。例如,控制器115可以包含处理器117(处理装置),所述处理器被配置成执行存储在控制器存储器119中的指令以进行本文所述的操作。在一些实施例中,回收管理器组件113是计算机系统120、应用或操作系统的一部分。
回收管理器组件113可以标识待回收的存储器的一部分,确定所述存储器部分中的哪些数据已使用而哪些数据未使用,将已使用的数据移动到存储器的另一部分,并擦除所回收的存储器部分。下面描述了关于回收管理器组件113的操作的另外的细节。
可以采用各种数据组织方案来辅助媒体的管理。在一个实施例中,转换单元(TU)是跨地址转换层(从逻辑到物理地址,并且反之亦然)跟踪的最小粒度。TU包含元数据和用户数据。在一些实施例中,TU中的用户数据的大小是逻辑块寻址扇区大小的整数倍。例如,如果逻辑地址空间中的每个地址标识一个512千字节的扇区,则用户数据的大小可能是所述扇区大小的八倍或4,096千字节。TU中的元数据包含用户数据的逻辑地址信息。因此,当计算机系统120在逻辑地址处将用户数据写入存储器子系统时,控制器在媒体内的特定物理位置处存储TU(其包含用户数据和标识所述逻辑地址的元数据)。
可以对TU进行分组以形成较粗糙的粒度级别的较高逻辑组。例如,可以将四个TU分组成一个页。可以将四个页进行分组以形成多平面。多平面可以驻留在单个存储器组件112上或跨越多个存储器组件112A-112N以形成页条带。可以将多个页条带进行分组以形成块条带。其它实施例可以包含不同的组大小、不同数量的粒度级别以及不同的布局。
受限于不同的性能级别,控制器115可以以不同的粒度级别发出读取或写入操作。例如,一些实施例可以随着粒度的每一次增加而表现出延迟的增加(例如,TU读取操作比页读取操作更快;页读取操作比多平面读取操作更快等)。其它实施例可以具有与多个粒度级别相当的操作延迟。例如,在TU、页和多平面驻留在单个存储器组件112内的实施例中,与那些逻辑组相关联的读取延迟可以是相当的(例如,100微秒)。如果块条带跨越多个存储器组件112A-112N,则与块条带相关联的读取延迟可以随着存储器组件的数量增加而成比例增加(例如,100N微秒,其中N是块条带跨越的存储器组件112的数量)。
图2A至2D示出了根据本公开的一些实施例的以数据单元的各个粒度跟踪数据有效性的示范性数据有效性图。取决于配置数据125,控制器115以不同的粒度级别跟踪数据有效性。图2A至2D中的示范性有效性图116基于上述四个粒度级别(TU、页、多平面、块条带),并且假设一个块条带大小包含64个TU,其中每个页四个TU,每个多平面四个页,每个块条带四个多平面。
在图2A中,配置数据125指定有效性图以TU级别的数据粒度跟踪数据。有效性图116A示出了TU粒度级别的有效性图。有效性图116A包括每个块条带的每个TU的计数器。所述计数器表示具有有效数据的TU的数量。因为本实例中的粒度是一个TU,所以一个单位计数器205A表示TU的有效性(例如,‘1’为有效,‘0’表示无效)。因此,基于64TU大小的块条带,控制器存储器119中的有效性图116A的总占用空间是适合于媒体内的块条带的数量的64倍(64位x块条带的数量)。
在图2B中,配置数据125指定有效性图以页级别的数据粒度跟踪数据。有效性图116B示出了页粒度级别的有效性图。有效性图116B包括每个块条带的每个页的计数器。所述计数器表示所述页内的具有有效数据的TU的数量。因为本实例中的粒度是一个页(并且假设每个页有四个TU),所以有效性图116B在每个页中存储一个三位计数器205B以表示五种可能的状态(例如,无有效TU,一个有效TU,两个有效TU,三个有效TU或四个有效TU)。因此,基于64TU大小的块条带,控制器存储器119中的有效性图116B的总占用空间是适合于媒体内的块条带的数量的48倍(3位/页x16页x块条带的数量)。
在图2C中,配置数据125指定有效性图以多平面级别的数据粒度跟踪数据。有效性图116C示出了多平面粒度级别的有效性图。有效性图116C包括每个块条带的每个多平面的计数器。所述计数器表示所述多平面内的具有有效数据的TU的数量。因为本实例中的粒度是一个多平面(并且假设每个多平面有十六个TU),所以有效性图116C在每个多平面中存储一个五位计数器205C以表示十七种可能的状态(例如,无有效TU,一个有效TU,两个有效TU,直到十六个有效TU)。因此,基于64TU大小的块条带,控制器存储器119中的有效性图116B的总占用空间是适合于媒体内的块条带的数量的20倍(5位/多平面x4个多平面x块条带的数量)。
在图2D中,配置数据125指定有效性图以块条带级别的数据粒度跟踪数据。有效性图116D示出了块条带粒度级别的有效性图。有效性图116D包括每个块条带的计数。所述计数表示所述块条带内的具有有效数据的TU的数量。因为本实例中的粒度是一个块条带(并且假设每个块条带有64个TU),所有有效性图116D在每个块条带中存储一个七位计数205D以表示六十五种可能的状态(例如,无有效TU,一个有效TU,两个有效TU,直到六十四个有效TU)。因此,基于64TU大小的块条带,控制器存储器119中的有效性图116B的总占用空间是适合于媒体内的块条带的数量的7倍(7位/块条带x块条带的数量)。
如有效性图116A-D的以上描述所示出,跟踪数据有效性的粒度越粗糙,控制器存储器119中的有效性图的存储器占用空间就越小。因此,控制器115基于配置数据125而在存储器中提供了一定量的空间以用于有效性图116。
图3是根据本公开的一些实施例的用于生成机器可读文件以以各个粒度跟踪数据有效性的示范性方法的流程图。方法300可以由处理逻辑来进行,所述处理逻辑可以包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法300由图1的处理器121进行。尽管以特定的次序或顺序示出,但是除非另有说明,否则可以修改过程的顺序。因此,所示出的实施例应当仅被理解为实例,并且所示出的过程可以以不同的顺序进行,并且一些过程可以并行地进行。另外,在各个实施例中可以省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它处理流程也是可能的。
在一些实施例中,所述过程响应于来自用户(例如,开发人员)的命令而开始。在框310处,处理装置读取一或多个含有用于生成控制存储器子系统的固件和/或软件的代码(例如,代码124)的文件。这些文件是支持多个不同的存储器子系统的单个代码库的一部分。
在框310处,处理装置进一步读取配置数据(例如,配置数据125)。配置数据可以特定于单个存储器子系统或与代码库所支持的存储器子系统的适当子集相关联。处理装置获得指示符,所述指示符标识跟踪有效性的数据单元的粒度。指示符可以指定各个数据单元中的一个(例如,本文所述的TU、页、多平面或块条带)或基于一些其它数据组织方案的单元。在一些实施例中,基于配置数据动态地计算指示符,所述配置数据指定相对于有效性图的可用空间的量的跟踪其有效性的存储器的总量。例如,配置数据可以指示媒体含有1,000个有效性跟踪块条带的空间,并且有效性图不能超过10千位的存储器。基于本文所述的数据组织和参考图2A至2B描述的有效性图,处理装置确定以块条带级别跟踪有效性,因为有效性图大小(7,000位)与块条带计数(1,000)的相关联比例7:1适合于10千位内,而以多平面级别的粒度跟踪的有效性图的比例20:1将需要比可用存储器更多的存储器。
在框310处读取的一或多个文件可以被存储在由制造商或代码开发人员维护的版本控制存储库中。
在框315处,处理装置生成机器可读文件,所述机器可读文件被配置成使与存储器子系统相关联的处理装置使用多个数据有效性计数器以所标识的粒度来跟踪有效性,所述多个数据有效性计数器中的每个数据有效性计数器以所标识的粒度跟踪一组数据单元的有效性。所述文件可以是二进制文件、可执行文件或控制器115可读取的一些其它文件中的固件和/或软件。在框320处,处理装置将所生成的文件(或其中含有的数据)转移到存储器子系统的组件。例如,计算机系统120将所生成的文件转移到存储器子系统110,所述存储器子系统将所转移的数据作为指令/配置数据118存储在控制器存储器119中,这使控制器115(或其组件,例如回收管理器113或处理器117)如本文所述跟踪数据有效性。在一些实施例中,处理装置在存储器子系统的完全组装之前将所生成的文件转移到存储器子系统的存储器。
当控制器115在媒体内移动数据或计算机系统120将数据写入媒体时,控制器115更新有效性图中的计数器。例如,当控制器115将整个数据块条带写入媒体时,控制器115设置与所述块条带相关联的所有计数器以反映所述块条带内的所有TU都是有效的。当数据被移动或擦除时,控制器115从控制器存储器119中的有效性图116中读取与一或多个受影响的TU相关联的有效性计数器,对所述计数器进行递增或递减,并将更新的计数器写回到有效性图116。
在媒体内移动数据会使媒体变成有效和无效数据的拼凑体。回收过程会将有效数据移动到存储器中的新位置,使得可以擦除原始位置并使其可用于写入数据。例如,回收管理器113可以处理数据的块条带。以较高级别,回收管理器113标识一或多个包含无效数据的“牺牲”块条带和可用于写入的目标块条带。回收管理器基于有效性图116来标识一或多个牺牲块条带内的有效数据,以将有效数据移动到目标块条带,从而可以擦除牺牲块条带。
图4是根据本公开的一些实施例的回收过程的示范性框图。在此类实施例中,回收管理器113与一或多个其它组件通信或包含一或多个其它组件,所述一或多个其它组件包含逻辑到物理管理器405、读取-写入(RW)管理器410、媒体接口415和锁定管理器420。这些组件中的每一个可以是控制器115的一部分(但未在图1中具体示出)。圈起来的字母“A”至“F”示出了本实例中的回收过程的总体流程。
在圈A处,回收管理器113读取有效性图116以标识用于回收的候选块条带。在一些实施例中,回收管理器113通过例如搜索具有指示大量无效TU的计数的一或多个块条带,基于存储在有效性图116内的有效性计数来标识一或多个牺牲块条带。一旦回收管理器113已标识牺牲块条带,回收管理器113读取牺牲块条带内的一定数量的TU的有效性计数。如果有效性计数指示在由有效性计数表示的粒度内没有有效TU,则回收管理器113不需要在所述一组TU内移动任何数据。如果有效性计数指示在由有效性计数表示的粒度内的一或多个有效TU,则回收管理器113确定与所述计数相关联的所述一组数据单元中的哪个或哪些TU含有有效数据。如果有效性计数为TU粒度级别并且计数器指示TU有效(例如,‘1’),则回收管理器113前进到圈E。如果有效性计数为比TU更高的粒度级别,则计数器值指示包含有效数据的TU的总数,但不指示哪些TU包含有效数据而哪些TU不包含有效数据。在这种情况下,回收管理器前进到圈B。
在圈B处,回收管理器113向媒体接口415发出读取,以读取与有效性计数相关联的所述一组TU。例如,如果有效性计数为页粒度级别,则回收管理器113将读取的页发给媒体接口415以读取所述页。回收管理器113基于其在媒体内的位置来确定与每个TU相关联的物理地址。例如,回收管理器113可以基于其在块条带内的相对位置被以已知物理地址回收来确定TU的物理地址。如果用于回收的64TU块条带位于媒体中的特定地址处,则可以基于地址偏移确定每个TU在块条带内的位置。对于所述组中的每个TU,回收管理器113从相关联的元数据中提取逻辑地址,并进行以下参考圈C至I所述的操作。
在圈C处,回收管理器113从逻辑到物理管理器405请求与从TU元数据获得的逻辑地址相关联的物理地址。如果逻辑到物理管理器405尚未缓存包含来自TU元数据的逻辑地址的逻辑到物理地址查找表的一部分,则逻辑到物理管理器405经由媒体接口415读取逻辑到物理地址查找表的适当部分,如由圈D所指示。一旦逻辑到物理管理器405从与存储在TU元数据中的逻辑地址相关联的查找返回TU的物理地址,回收管理器将所述地址与从其在媒体内的位置确定的TU的物理地址(如在圈B处读取)进行比较。匹配的物理地址指示TU含有有效数据(因为逻辑地址转换仍指向物理地址位置),而不同的物理地址指示TU含有无效数据。
在圈E处,当回收管理器113已标识有效TU时,回收管理器113从锁定管理器420请求TU的锁定,以防止对所述TU的修改,直到回收过程完成。在圈F处,回收管理器113向RW管理器410发送命令以将TU写入(或排队写入)到目标块条带。在圈G处,RW管理器410向逻辑到物理管理器405发送消息,以用目标块条带内的TU的新物理地址来更新逻辑到物理地址查找表。
在圈H处,逻辑到物理管理器405从控制器存储器119中的有效性图116中读取与旧的TU位置(在牺牲块条带中)和新的TU位置(在目标块条带中)相关联的有效计数,递减前者中的有效计数并递增后者中的有效计数,并且将有效计数写回到有效性图119。在一些实施例中,有效性图的这些更新可以排队,直到与圈B处的读取相关联的整组TU完成(并且与新位置和旧位置相关联的有效计数由所述组中的TU的数量更新)之后。在圈I处,RW管理器410将重新定位的TU写入目标块条带,并且锁定管理器420释放对一或多个TU的锁定。
在以上流程中,回收管理器113无需查阅物理到逻辑地址查找表,因为回收管理器113能够从媒体中读取与有效性计数相关联的TU(圈B)。在一些情况下,粒度级别可能太粗糙(例如,覆盖了太多的TU),使得所有TU的读取操作(以获得标识其相关联的逻辑地址的元数据)会对回收管理器113的性能产生负面影响。例如,如果有效性图以块条带粒度级别跟踪有效性,则进行整个块条带的读取可能会严重阻碍其它媒体操作(例如,计算机系统120访问)等。因此,在采用某一级别或更低级别的有效性计数粒度的一些实施例中,可以省略物理到逻辑地址查找表。在这些情况下,控制器115避免在媒体(例如,存储器组件112A到112N)中提供用于物理到逻辑地址查找表的空间,从而释放媒体资源用于其它目的。
图5是根据本公开的一些实施例的用于回收存储器的未使用部分的示范性方法的流程图。方法500可以由处理逻辑来进行,所述处理逻辑可以包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法500由图1的回收管理器组件113进行。尽管以特定的次序或顺序示出,但是除非另有说明,否则可以修改过程的顺序。因此,所示出的实施例应当仅被理解为实例,并且所示出的过程可以以不同的顺序进行,并且一些过程可以并行地进行。另外,在各个实施例中可以省略一或多个过程。因此,并非在每个实施例中都需要所有过程。其它处理流程也是可能的。
已标识一或多个折叠牺牲者和折叠目标后,在框505处,处理装置从与牺牲者中的一个(例如,条带)相关联的有效性图中读取有效性计数。有效性计数表示基于存储器子系统110根据指令/配置数据118进行的配置或由存储器子系统执行的指令的粒度的一组数据单元的有效性。例如,如果牺牲者是含有四个多平面的块条带并且有效性图粒度为多平面级别,计数表示多平面内的有效TU的数量。
在框510处,处理装置从媒体中读取与有效性计数相关联的所述一组数据单元。所读取的数据包含标识所述组内的每个单元TU的逻辑地址的元数据。例如,如果有效性计数为多平面级别,则所述组包含16个TU,每个TU具有标识其相对应的逻辑地址的元数据。注意,处理装置可以基于其在牺牲块条带内的相对位置(例如,基于相对于块条带的物理地址的偏移)来确定所述组中的每个TU的物理地址。
在框515处,处理装置从逻辑到物理地址查找中获得数据单元的另一个物理地址。本第二物理地址基于存储在与逻辑到物理地址转换表中的数据单元相关联的元数据中的逻辑地址的查找。
在框520处,处理装置确定单元是否具有有效数据。为此,处理装置将数据单元的基于偏移的物理地址(例如,根据数据单元在牺牲块条带内的位置)与基于逻辑到物理查找的物理地址(例如,根据地址转换表)进行比较。因为逻辑地址的写入会被写入存储器中的新位置(对逻辑到物理地址转换表进行相对应的更新)而不是覆盖存储器中的现有数据,所以如果基于偏移的物理地址与基于逻辑到物理查找的物理地址不匹配,则数据单元不再有效。
在框525处,处理装置将被确定为具有有效数据的每个单元写入目标块条带内的新位置,并通过将目标块条带内的单元的新物理地址写入表内的相对应的逻辑地址位置来更新每个重写单元的逻辑到物理地址表。一旦已移动了牺牲块条带中的所有有效数据,就可以擦除所述块条带。
在框530处,处理装置通过递增和/或递减与一或多个牺牲和目标块条带中的TU相关联的有效性计数来更新有效性图。例如,如果有效性图包含以多平面级别跟踪有效性的计数器,并且将四个有效TU从牺牲块条带中的多平面重新定位到目标块条带中的多平面,则处理装置对与牺牲块条带中的多平面相关联的计数器进行递减并对与目标块条带中的多平面相关联的计数器进行递增。当计数器粒度内的所有数据单元都已移动(例如,-/+X,其中X在1和计数器粒度内的数据单元的数量之间)时,可以在每次移动最小粒度的数据之后进行递增或递减(例如,每次移动TU时-/+1),或者递增或递减可以以一些其它方式进行。在一些实施例中,当擦除块条带时,处理装置在牺牲块条带内移动所有有效数据,并重置所有相对应的有效性计数器(而不进行递减)。
图6示出了计算机系统600的示范性机器,在其中可以执行用于使所述机器进行本文讨论的任何一或多种方法的一组指令。在一些实施例中,计算机系统600可以对应于包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)的计算机系统(例如,图1的计算机主机系统120),或者可以用于进行控制器的操作(例如,执行操作系统以进行与图1的回收管理器组件113相对应的操作)。在替代实施例中,所述机器可以连接(例如,联网)到LAN、内联网、外联网和/或因特网中的其它机器。所述机器可以在客户端-服务器网络环境中以服务器或客户端机器的身份操作,在对等(或分布式)网络环境中作为对等机器操作,或者在云计算基础设施或环境中作为服务器或客户端机器操作。
所述机器可以是个人计算机(PC)、平板计算机、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web器械、服务器、网络路由器、交换机或网桥或能够执行一组指令(顺序或其它方式)的任何机器,所述指令指定待由所述机器进行的动作。此外,尽管示出了单个机器,但是术语“机器”还应被理解为包含机器的任何集合,所述机器单独地或共同地执行一组(或多组)指令以进行本文讨论的任何一或多种方法。
示范性计算机系统600包含处理装置602、主存储器604(例如,只读存储器(ROM)、闪速存储器、动态随机存取存储器(DRAM)(例如,同步DRAM(SDRAM)或Rambus DRAM(RDRAM))等)、静态存储器606(例如,闪速存储器、静态随机存取存储器(SRAM)等)和数据存储系统618,它们经由总线630彼此通信。
处理装置602表示一或多个通用处理装置,例如微处理器、中央处理单元等。更特别地,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、或实施其它指令集的处理器、或实施指令集的组合的处理器。处理装置602也可以是一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置602被配置成执行指令626以进行本文讨论的操作和步骤。计算机系统600可以进一步包含网络接口装置608,以通过网络620进行通信。
数据存储系统618可以包含机器可读存储媒体624(也被称为计算机可读媒体),在其上存储体现本文所述的任何一或多种方法或功能的一或多组指令626或软件。在计算机系统600执行指令626期间,指令也可以全部地或至少部分地驻留在主存储器604内和/或处理装置602内,主存储器604和处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储系统618和/或主存储器604可以对应于图1的存储器子系统110。
在一个实施例中,指令626包含用于实施与回收管理器组件(例如,图1的回收管理器组件113)相对应的功能的指令。尽管在一个示范性实施例中将机器可读存储媒体624示出为单个媒体,但是术语“机器可读存储媒体”应被认为包含存储一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码一组指令以供机器执行并且使机器进行本公开的任何一或多种方法的任何媒体。因此,术语“机器可读存储媒体”应被认为包含但不限于固态存储器、光学媒体和磁性媒体。
已根据计算机存储器内的数据位上的操作的算法和符号表示来呈现前述详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用来最有效地向本领域其它技术人员传达其工作实质的方式。这里,算法通常被认为是导致期望结果的自洽操作序列。所述操作是需要对物理量进行物理操纵的操作。通常但并非必须,这些量采用能够被存储、组合、比较和以其它方式操纵的电或磁信号的形式。已证明,主要出于通用的原因,有时将这些信号称为位、值、元素、符号、字符、项、数字等是方便的。
然而,应当记住,所有这些和类似术语应与适当的物理量相关联,并且仅仅是应用于这些量的方便标签。本公开可以是指计算机系统或类似的电子计算装置的动作和过程,其将在计算机系统的寄存器和存储器内以物理(电子)量表示的数据操纵并转换成在计算机系统存储器或寄存器或其它此类信息存储系统内以物理量类似地表示的其它数据。
本公开还涉及一种用于进行本文中的操作的设备。本设备可以被特别地构造用于预期目的,或者它可以包含由计算机中存储的计算机程序选择性地激活或重新配置的通用计算机。例如,计算机系统或其它数据处理系统(例如,控制器115),可以响应于其处理器执行存储器或其它非暂时性机器可读存储媒体中含有的计算机程序(例如,指令序列)来执行计算机实施的方法500。作为另一个实例,计算机系统或其它数据处理系统(例如,处理器121)可以响应于其处理器执行存储器或其它非暂时性机器可读存储媒体中含有的计算机程序(例如,指令序列)来执行计算机实施的方法300。此计算机程序可以存储在计算机可读存储媒体中,例如但不限于任何类型的磁盘(包含软盘、光盘、CD-ROM和磁光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡、或适合于存储电子指令的任何类型的媒体(每一个都耦合到计算机系统总线)。
本文呈现的算法和显示与任何特定计算机或其它设备没有固有的关联。各种通用系统可以与根据本文的教导的程序一起使用,或者可以证明,构造更专用的设备来进行所述方法是方便的。各种这些系统的结构将在以下的说明中阐述。另外,未参考任何特定编程语言来描述本公开。将理解,可以使用各种编程语言来实施本文所述的本公开的教导。
本公开可以被提供作为计算机程序产品或软件,其可以包含其上存储有指令的机器可读媒体,所述指令可以用于对计算机系统(或其它电子装置)进行编程以进行根据本公开的过程。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。在一些实例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、闪速存储器组件等。
在前述说明书中,已参考本公开的具体示范性实施例描述了本公开的实施例。将显而易见的是,在不脱离如以下权利要求书中阐述的本公开的实施例的更广泛的精神和范围的情况下,可以对其进行各种修改。因此,说明书和附图应被认为是说明性而不是限制性的。

Claims (20)

1.一种计算方法,其包括:
由计算机装置从配置文件中读取指示符,所述指示符标识跟踪数据有效性的粒度,其中所述粒度是一组数据单元,并且所述粒度是范围为每组一个数据单元到每组多个数据单元的多个粒度中的一个;
由所述计算机装置基于所述配置文件中的所述指示符来生成机器可读文件,所述机器可读文件被配置成使存储器系统的处理装置使用多个数据有效性计数器以所标识的粒度来跟踪每组内的一或多个数据单元的有效性,所述多个数据有效性计数器中的每个数据有效性计数器以所标识的粒度来跟踪相对应组中的每个单独数据单元的有效性,其中每个数据有效性计数器指示相对应组的数据单元中的有效数据单元的数量;和
将所述机器可读文件从所述计算机装置转移到所述存储器系统的存储器。
2.根据权利要求1所述的计算方法,其中如果所述粒度从所述多个粒度中标识第一粒度,则所述机器可读文件进一步被配置成使所述处理装置在非易失性存储器阵列中提供空间以用于逻辑到物理地址转换表和物理到逻辑地址转换表。
3.根据权利要求2所述的计算方法,其中如果所述粒度从所述多个粒度中标识第二粒度,则所述机器可读文件进一步被配置成使所述处理装置在非易失性存储器阵列中提供空间以用于逻辑到物理地址转换表,并且排除物理到逻辑地址转换表。
4.根据权利要求1所述的计算方法,其中所述机器可读文件进一步被配置成使所述处理装置在易失性存储器中提供空间以用于有效性表,所述有效性表存储所述多个数据有效性计数器中的每个数据有效性计数器的值。
5.根据权利要求4所述的计算方法,其中所述机器可读文件进一步被配置成使所述处理装置在由第一数据有效性计数器跟踪的所述一组数据单元内的第一数据单元被标记为过期时更新所述有效性表中的所述第一数据有效性计数器的第一值。
6.根据权利要求4所述的计算方法,其中所述机器可读文件进一步被配置成使所述处理装置部分地基于所述有效性表来回收非易失性存储器阵列的一部分。
7.根据权利要求6所述的计算方法,其中回收所述非易失性存储器阵列的所述部分包括:
从所述有效性表中读取所述多个数据有效性计数器中的第一数据有效性计数器的值,所述第一数据有效性计数器以所标识的粒度来跟踪第一组数据单元的有效性;
如果所述第一数据有效性计数器的所述值不等于零或所标识的粒度的数据单元的总数:
读取与所述第一组数据单元相关联的元数据;
基于所述元数据内存储的所述第一组数据单元内的第一数据单元的逻辑地址,从逻辑到物理地址查找中确定所述第一组数据单元内的第一数据单元的第一物理地址;
基于所述第一组数据单元内的所述第一数据单元的位置,确定所述第一组数据单元内的所述第一数据单元的第二物理地址;和
如果所述第一物理地址与所述第二物理地址匹配,则将所述第一数据单元移动到所述非易失性存储器阵列中。
8.一种非暂时性计算机可读存储媒体,其包括指令,当所述指令由计算机装置执行时,使所述计算机装置:
从配置文件中读取指示符,所述指示符标识跟踪数据有效性的粒度,其中所述粒度是一组数据单元,并且所述粒度是范围为每组一个数据单元到每组多个数据单元的多个粒度中的一个;
基于所述配置文件中的所述指示符来生成机器可读文件,所述机器可读文件被配置成使存储器系统的处理装置使用多个数据有效性计数器以所标识的粒度来跟踪每组内的一或多个数据单元的有效性,所述多个数据有效性计数器中的每个数据有效性计数器用于以所标识的粒度来跟踪相对应组中的每个单独数据单元的有效性,其中每个数据有效性计数器指示相对应组的数据单元中的有效数据单元的数量;和
将所述机器可读文件转移到所述存储器系统的存储器。
9.根据权利要求8所述的非暂时性计算机可读存储媒体,其中如果所述粒度从所述多个粒度中标识第一粒度,则所述机器可读文件进一步被配置成使所述处理装置在非易失性存储器阵列中提供空间以用于逻辑到物理地址转换表和物理到逻辑地址转换表。
10.根据权利要求9所述的非暂时性计算机可读存储媒体,其中如果所述粒度从所述多个粒度中标识第二粒度,则所述机器可读文件进一步被配置成使所述处理装置在非易失性存储器阵列中提供空间以用于逻辑到物理地址转换表,并且排除物理到逻辑地址转换表。
11.根据权利要求8所述的非暂时性计算机可读存储媒体,其中所述机器可读文件进一步被配置成使所述处理装置在易失性存储器中提供空间以用于有效性表,所述有效性表用于存储所述多个数据有效性计数器中的每个数据有效性计数器的值。
12.根据权利要求11所述的非暂时性计算机可读存储媒体,其中所述机器可读文件进一步被配置成使所述处理装置在由第一数据有效性计数器跟踪的所述一组数据单元内的第一数据单元被标记为过期时更新所述有效性表中的所述第一数据有效性计数器的第一值。
13.根据权利要求11所述的非暂时性计算机可读存储媒体,其中所述机器可读文件进一步被配置成使所述处理装置部分地基于所述有效性表来回收非易失性存储器阵列的一部分。
14.根据权利要求13所述的非暂时性计算机可读存储媒体,其中为了回收所述非易失性存储器阵列的一部分,所述处理装置将:
从所述有效性表中读取所述多个数据有效性计数器中的第一数据有效性计数器的值,所述第一数据有效性计数器用于以所标识的粒度来跟踪第一组数据单元的有效性;
如果所述第一数据有效性计数器的所述值不等于零或所标识的粒度的数据单元的总数:
读取与所述第一组数据单元相关联的元数据;
基于所述元数据内存储的所述第一组数据单元内的第一数据单元的逻辑地址,从逻辑到物理地址查找中确定所述第一组数据单元内的第一数据单元的第一物理地址;
基于所述第一组数据单元内的所述第一数据单元的位置,确定所述第一组数据单元内的所述第一数据单元的第二物理地址;和
如果所述第一物理地址与所述第二物理地址匹配,则将所述第一数据单元移动到所述非易失性存储器阵列中。
15.一种计算系统,其包括:
存储器子系统的处理装置;和
与所述处理装置可操作地耦合的计算机装置,其用于:
从配置文件中读取指示符,所述指示符标识跟踪数据有效性的粒度,其中所述粒度是一组数据单元,并且所述粒度是范围为每组一个数据单元到每组多个数据单元的多个粒度中的一个;
基于所述配置文件中的所述指示符来生成机器可读文件,所述机器可读文件被配置成使存储器系统的处理装置使用多个数据有效性计数器以所标识的粒度来跟踪每组内的一或多个数据单元的有效性,所述多个数据有效性计数器中的每个数据有效性计数器用于以所标识的粒度来跟踪相对应组中的每个单独数据单元的有效性,其中每个数据有效性计数器指示相对应组的数据单元中的有效数据单元的数量;和
将所述机器可读文件转移到所述存储器系统的存储器。
16.根据权利要求15所述的计算系统,其中如果所述粒度从所述多个粒度中标识第一粒度,则所述机器可读文件进一步被配置成使所述处理装置在非易失性存储器阵列中提供空间以用于逻辑到物理地址转换表和物理到逻辑地址转换表。
17.根据权利要求16所述的计算系统,其中如果所述粒度从所述多个粒度中标识第二粒度,则所述机器可读文件进一步被配置成使所述处理装置在非易失性存储器阵列中提供空间以用于逻辑到物理地址转换表,并且排除物理到逻辑地址转换表。
18.根据权利要求15所述的计算系统,其中所述机器可读文件进一步被配置成使所述处理装置在易失性存储器中提供空间以用于有效性表,所述有效性表用于存储所述多个数据有效性计数器中的每个数据有效性计数器的值。
19.根据权利要求18所述的计算系统,其中所述机器可读文件进一步被配置成使所述处理装置在由第一数据有效性计数器跟踪的所述一组数据单元内的第一数据单元被标记为过期时更新所述有效性表中的所述第一数据有效性计数器的第一值。
20.根据权利要求18所述的计算系统,其中所述机器可读文件进一步被配置成使所述处理装置部分地基于所述有效性表来回收非易失性存储器阵列的一部分。
CN201980052059.6A 2018-08-10 2019-07-26 非易失性存储器中的数据有效性跟踪 Active CN112534415B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/101,288 2018-08-10
US16/101,288 US10795828B2 (en) 2018-08-10 2018-08-10 Data validity tracking in a non-volatile memory
PCT/US2019/043628 WO2020033167A1 (en) 2018-08-10 2019-07-26 Data validity tracking in a non-volatile memory

Publications (2)

Publication Number Publication Date
CN112534415A CN112534415A (zh) 2021-03-19
CN112534415B true CN112534415B (zh) 2022-04-01

Family

ID=69407017

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980052059.6A Active CN112534415B (zh) 2018-08-10 2019-07-26 非易失性存储器中的数据有效性跟踪

Country Status (5)

Country Link
US (2) US10795828B2 (zh)
EP (1) EP3834091A4 (zh)
KR (1) KR102281750B1 (zh)
CN (1) CN112534415B (zh)
WO (1) WO2020033167A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112181837A (zh) * 2020-09-30 2021-01-05 深圳市元征科技股份有限公司 一种信息处理方法、信息处理装置及终端设备
US11775422B2 (en) * 2021-08-11 2023-10-03 Micron Technology, Inc. Logic remapping techniques for memory devices
WO2023159400A1 (en) * 2022-02-23 2023-08-31 Huawei Technologies Co.,Ltd. Usage driven memory mapping

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1703679A (zh) * 2002-10-04 2005-11-30 皇家飞利浦电子股份有限公司 具有分层存储器体系结构的数据处理系统和操作该系统的方法
CN101814018A (zh) * 2008-12-30 2010-08-25 英特尔公司 事务存储器(tm)系统中的读和写监控属性
CN104813408A (zh) * 2012-12-14 2015-07-29 桑迪士克科技股份有限公司 跟踪对非易失性存储器的区域的读访问
CN105264497A (zh) * 2014-04-22 2016-01-20 华为技术有限公司 一种文件管理方法及文件系统
CN106463181A (zh) * 2014-06-16 2017-02-22 桑迪士克科技有限责任公司 具有物理‑到‑物理地址重新映射的非易失性存储器模块
CN107301016A (zh) * 2016-04-15 2017-10-27 西部数据科技股份有限公司 用于垃圾收集的有效性跟踪

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2619641B1 (fr) * 1987-08-22 1992-05-07 Nec Corp Dispositif de cache hierarchique
JPH04248645A (ja) * 1991-02-05 1992-09-04 Fujitsu Ltd キャッシュメモリ
US7831783B2 (en) * 2005-12-22 2010-11-09 Honeywell International Inc. Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems
US9411517B2 (en) 2010-08-30 2016-08-09 Vmware, Inc. System software interfaces for space-optimized block devices
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
US8938563B2 (en) * 2011-12-27 2015-01-20 Kaminario Technologies Ltd. Modified I/Os among storage system layers
US9251055B2 (en) * 2012-02-23 2016-02-02 Kabushiki Kaisha Toshiba Memory system and control method of memory system
US9348746B2 (en) 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim operations in a multi-layer memory
US8996796B1 (en) * 2013-03-15 2015-03-31 Virident Systems Inc. Small block write operations in non-volatile memory systems
US9383927B2 (en) * 2014-05-28 2016-07-05 SandDisk Technologies LLC Method and system for creating a mapping table cache from an interleaved subset of contiguous mapping data for a storage device
US9720835B1 (en) * 2015-01-30 2017-08-01 EMC IP Holding Company LLC Methods to efficiently implement coarse granularity cache eviction based on segment deletion hints
US10229048B2 (en) * 2016-06-29 2019-03-12 Western Digital Technologies, Inc. Unified paging scheme for dense and sparse translation tables on flash storage systems
CN107797934B (zh) * 2016-09-05 2022-07-22 北京忆恒创源科技股份有限公司 处理去分配命令的方法与存储设备
US10579471B2 (en) * 2017-03-02 2020-03-03 Toshiba Memory Corporation Storage device and error correction method for storage device
TWI670594B (zh) * 2018-01-18 2019-09-01 慧榮科技股份有限公司 資料儲存裝置
US10997066B2 (en) * 2018-02-20 2021-05-04 Samsung Electronics Co., Ltd. Storage devices that support cached physical address verification and methods of operating same

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1703679A (zh) * 2002-10-04 2005-11-30 皇家飞利浦电子股份有限公司 具有分层存储器体系结构的数据处理系统和操作该系统的方法
CN101814018A (zh) * 2008-12-30 2010-08-25 英特尔公司 事务存储器(tm)系统中的读和写监控属性
CN104813408A (zh) * 2012-12-14 2015-07-29 桑迪士克科技股份有限公司 跟踪对非易失性存储器的区域的读访问
CN105264497A (zh) * 2014-04-22 2016-01-20 华为技术有限公司 一种文件管理方法及文件系统
CN106463181A (zh) * 2014-06-16 2017-02-22 桑迪士克科技有限责任公司 具有物理‑到‑物理地址重新映射的非易失性存储器模块
CN107301016A (zh) * 2016-04-15 2017-10-27 西部数据科技股份有限公司 用于垃圾收集的有效性跟踪

Also Published As

Publication number Publication date
EP3834091A1 (en) 2021-06-16
WO2020033167A1 (en) 2020-02-13
US20200409870A1 (en) 2020-12-31
CN112534415A (zh) 2021-03-19
US11586561B2 (en) 2023-02-21
KR20210019577A (ko) 2021-02-22
EP3834091A4 (en) 2022-04-20
US20200050556A1 (en) 2020-02-13
US10795828B2 (en) 2020-10-06
KR102281750B1 (ko) 2021-07-28

Similar Documents

Publication Publication Date Title
CN109144888B (zh) 存储器系统
JP2023524014A (ja) 順次的にプログラムするメモリサブシステムにおいて非同期電力損失をハンドリングすること
CN112433956A (zh) 逻辑到物理表高速缓存中基于顺序写入的分区
CN114730300B (zh) 对区命名空间存储器的增强型文件系统支持
CN114341824B (zh) 用于粗映射存储器子系统的取消映射
US11586561B2 (en) Data validity tracking in a non-volatile memory
US11537307B2 (en) Hybrid wear leveling for in-place data replacement media
US20200264984A1 (en) Partial caching of media address mapping data
WO2021127349A1 (en) Logical-to-physical mapping of data groups with data locality
CN112166405A (zh) 在存储器系统中分配可变媒体类型的存储器装置
CN112948284A (zh) 高速缓存媒体中的动态存取粒度
US11727969B2 (en) Memory sub-system managing remapping for misaligned memory components
WO2023201462A1 (en) Namespace level valid translation unit count
CN112805692A (zh) 混合式双列直插式存储器模块中的高速缓存操作
CN112860182B (zh) 用于写回合并的位屏蔽有效扇区
WO2019109030A1 (en) Logical block mapping based on an offset
CN114077404B (zh) 使存储器单元与主机系统解除关联
US10628044B2 (en) Dynamic allocation of volatile memory to storage management components of a non-volatile storage device
CN113012741B (zh) 用于存储器子系统的媒体管理的弹性缓冲器
CN112740189B (zh) 非易失性存储器的多级损耗均衡
CN113918479B (zh) 用于并行独立线程的低位密度存储器高速缓存的方法及系统
CN113010447A (zh) 用于存储器子系统的媒体管理的快照读取优化
CN113012741A (zh) 用于存储器子系统的媒体管理的弹性缓冲器

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
GR01 Patent grant
GR01 Patent grant