CN110998550B - 存储器寻址 - Google Patents
存储器寻址 Download PDFInfo
- Publication number
- CN110998550B CN110998550B CN201880049529.9A CN201880049529A CN110998550B CN 110998550 B CN110998550 B CN 110998550B CN 201880049529 A CN201880049529 A CN 201880049529A CN 110998550 B CN110998550 B CN 110998550B
- Authority
- CN
- China
- Prior art keywords
- entry
- physical address
- array
- physical
- entries
- 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
Links
Images
Classifications
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- 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/60—Details of cache memory
-
- 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/65—Details of virtual memory and virtual address translation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
用于存储器寻址的示范性设备可以包含存储器单元阵列。所述设备可以包含存储器缓存,其被配置成存储地址映射表的至少一部分。所述地址映射表可以包含与所述阵列的相应量的逻辑地址空间相对应的多个区域。所述地址映射表可以将转换单元TU映射到所述阵列中的物理位置。所述多个区域中的每一个可以包含第一表。所述第一表可以包含与所述相应量的逻辑地址空间的相应TU逻辑地址、相应指针和相应偏移相对应的条目。所述多个区域中的每一个可以包含第二表。所述第二表可以包含与所述阵列的相应物理地址范围相对应的条目。所述第二表的所述条目可以包含相应物理地址字段和对应的相应计数字段。
Description
技术领域
本公开总体上涉及半导体存储器和方法,更具体地涉及存储器寻址。
背景技术
存储器装置通常被提供为计算机或其它电子装置中的内部、半导体、集成电路和/或外部可移除装置。存在许多不同类型的存储器,包含易失性和非易失性存储器。易失性存储器可能需要电力来维护其数据,并且可以包含随机访问存储器(RAM)、动态随机访问存储器(DRAM)和同步动态随机访问存储器(SDRAM)等。非易失性存储器在没有电力供应时可以保留存储的数据,并且可以包含NAND快闪存储器、NOR快闪存储器、相变随机访问存储器(PCRAM)、电阻式随机访问存储器(RRAM)和磁性随机访问存储器(MRAM)等。
可以将存储器装置组合在一起以形成固态驱动器(SSD)。SSD可以包含非易失性存储器(例如,NAND快闪存储器和/或NOR快闪存储器),和/或可以包含易失性存储器(例如,DRAM和/或SRAM),以及各种其它类型的非易失性和易失性存储器。快闪存储器装置例如可以包含以电荷存储结构(例如,浮栅)存储数据的存储器单元,并且可以用作用于广泛电子应用范围的非易失性存储器。快闪存储器装置通常使用单晶体管存储器单元,从而实现高存储器密度、高可靠性和低电力消耗。
快闪存储器装置可以用作用于广泛电子应用范围的易失性和非易失性存储器。快闪存储器装置通常使用单晶体管存储器单元,从而实现高存储器密度、高可靠性和低电力消耗。快闪存储器装置通常可以具有“NAND”或“NOR”存储器阵列架构,因此被称为逻辑形式,其中每个存储器装置的基本存储器单元配置被布置为逻辑形式。快闪存储器的用途包含用于固态驱动器(SSD)、个人计算机、个人数字助理(PDA)、数码相机、蜂窝电话、便携式音乐播放器(例如,MP3播放器)和电影播放器以及其它电子装置的存储器。数据(例如,程序代码)、用户数据和/或系统数据(例如,基本输入/输出系统(BIOS))通常存储在快闪存储器装置中。
快闪存储器装置可以包含快闪过渡层(FTL)。可以使用FTL(例如,在快闪存储器装置上执行的编程操作期间)将与数据条目相关联的逻辑地址映射到快闪存储器中的物理地址。FTL可以在快闪存储器装置的本地存储器中包含地址映射表以执行映射操作。然而,在先前的FTL方法中使用的地址映射表的大小(例如,存储在其中的数据的量)可能是固定的,并且更难扩展。因为在先前的FTL方法中使用的地址映射表的大小可能是固定的,所以在先前的FTL方法中使用的地址映射表可能不适用于不同类型的快闪存储器装置。也就是说,先前的FTL方法可能只在一种类型的快闪存储器装置中使用。进一步地,随着物理地存储数据的存储器的大小增加,地址映射表可能增加到变得难以管理的大小。
附图说明
图1示出了根据本公开的多个实施例的具有多个物理块的存储器阵列的一部分的图。
图2是根据本公开的多个实施例的呈包括存储器系统的计算系统形式的设备的框图。
图3A示出了呈主机和存储器阵列形式的设备的框图。
图3B示出了根据本公开的多个实施例的地址映射表的框图。
图4示出了根据本公开的多个实施例的地址映射表的框图。
图5示出了根据本公开的多个实施例的用于存储器寻址的方法的框图。
具体实施方式
用于存储器寻址的示范性设备可以包含存储器单元阵列。所述设备可以包含存储器缓存,其被配置成存储地址映射表的至少一部分。所述地址映射表可以包含与所述阵列的相应量的逻辑地址空间相对应的多个区域。所述地址映射表可以将转换单元(TU)映射到所述阵列中的物理位置。所述多个区域中的每一个可以包含第一表,其包含与相应TU逻辑地址相对应的条目。所述多个区域中的每一个可以包含第二表,其包含与所述阵列的相应物理地址范围相对应的条目。所述第一表的所述条目可以包含指向所述第二表中的特定条目的相应指针。所述第一表的所述条目可以包含对应的相应偏移,其指示与所述第二表中的所述特定条目相对应的所述物理地址范围内的位置,与所述相应TU相对应的所述物理数据被存储在所述位置。所述第二表的所述条目可以包含相应物理地址字段,其指示与所述特定条目相对应的所述物理地址范围的第一物理地址。所述第二表的所述条目可以包含对应的相应计数字段,其指示与与所述特定条目相对应的所述物理地址范围相关联的TU的数量。
本公开的实施例可以包含快闪转换层,其具有具有可变大小的表(例如,地址映射表)。也就是说,本公开的快闪转换层中的表的大小(例如,存储在其中的数据的量)可以改变。因为本公开的快闪转换层中的表的大小可以改变,所以表可以适用于不同类型的快闪存储器装置。也就是说,根据本公开的快闪转换层可以用于不同类型的快闪存储器装置中。
本公开的实施例可以包含地址映射表,其将转换单元(TU)的多个逻辑地址与所述地址映射表中的单个物理地址相关联。这可以通过将依次写入从特定物理地址开始的物理位置中的多个TU与包含指向所述特定物理地址的条目的物理地址条目相关联来执行。作为一个实例,与TU的逻辑地址相对应的三个条目可以与单个物理地址相关联。与所述三个逻辑地址条目中的每个相关联的偏移可以指示所述TU相对于所述单个物理地址物理上位于何处。随着存储器驱动器的大小继续增加,一种减小地址映射表的大小的方法可以允许更大的存储器驱动器大小,而不会对应地增加用于将逻辑地址映射到物理地址的地址映射表。这样,可以最小化用于存储地址映射表的物理存储器空间,并且可以增加地址映射表的可扩展性。
在本公开的以下详细描述中,参考了形成本公开的一部分的附图,并且在附图中通过图示的方式示出了可以如何实践本公开的多个实施例。足够详细地描述了这些实施例,使得本领域普通技术人员能够实践本公开的实施例,并且应当理解,在不脱离本公开的范围的情况下,可以利用其它实施例,并且可以进行过程、电气和/或结构改变。
如本文使用,“多个”某物可以指一或多个这样的事物。例如,多个存储器单元可以指一或多个存储器单元。另外,如本文使用,尤其是相对于附图中的附图标记,指定词“N”指示这样指定的多个特定特征可以包含在本公开的多个实施例中。
本文中的附图遵循编号惯例,其中第一个数字或第一组数字与附图编号相对应,其余数字标识附图中的元件或组件。可以通过使用相似的数字来识别不同附图之间的相似的元件或组件。例如,202可以在图2中引用元件“02”,并且相似的元件可以在图3中引用为302。可以理解的是,本文的各个实施例中所示的元件可以被加入、交换和/或消除以提供本公开的多个另外的实施例。另外,可以理解的是,在附图中提供的元件的比例和相对比例旨在示出本公开的实施例,而不应被认为是限制性的。
图1示出了根据本公开的一或多个实施例的具有多个物理块的存储器阵列100的一部分的图。存储器阵列100可以是例如NAND或NOR快闪非易失性存储器阵列。然而,本公开的实施例不限于特定类型的存储器阵列。进一步地,尽管未在图1中示出,本领域的普通技术人员将理解,存储器阵列100可以连同与其操作相关联的各种外围电路系统一起位于特定半导体管芯上或跨多个半导体管芯构造。
如图1所示,存储器阵列100具有存储器单元的多个物理块116-0(块0)、116-1(块1)、……、116-B(块B)。存储器单元可以是单级单元和/或多级单元。作为一个实例,存储器阵列100中的多个物理块可以是128个块、512个块或1,024个块,但是实施例不限于128的特定倍数或存储器阵列100中的物理块的任何特定数目。
在图1所示的实例中,每个物理块116-0、116-1、……、116-B包含可以作为一个单位一起被擦除的存储器单元(例如,每个物理块中的单元可以以基本上同时的方式被擦除)。例如,每个物理块中的存储器单元可以在单个擦除操作中一起被擦除。
如图1所示,每个物理块116-0、116-1、……、116-B含有耦合到访问线(例如,字线)的存储器单元的多个物理行(例如,120-0、120-1、……、120-R)。每个物理块中的行(例如,字线)的数目可以是32,但是实施例不限于每个物理块的行120-0、120-1、……、120-R的特定数目。
如本领域普通技术人员将理解的,每个行120-0、120-1、……、120-R可以包含(例如,存储)一或多个数据物理页。一个物理页是指一个编程和/或感测的单位(例如,作为存储器单元的功能组一起被编程和/或感测的多个单元)。在图1所示的实施例中,每个行120-0、120-1、……、120-R存储一页数据。然而,本公开的实施例不限于此。例如,在本公开的一或多个实施例中,每个行可以存储多页数据,其中一或多个偶数页数据与偶数位线相关联,并且一或多个奇数页数据与奇数位线相关联。另外,对于包含多级单元的实施例,物理页可以在逻辑上分为数据上页和下页,一行中的每个单元向数据上页贡献一或多个位并向数据下页贡献一或多个位。在一或多个实施例中,存储器阵列可以包含存储器单元的多个物理块,并且每个物理块可以被组织成多个页。
在本公开的一或多个实施例中,并且如图1所示,与行相关联的页可以存储被称为转换单元(TU)122-0、122-1、……、122-S的数据(例如,在编程操作之后)。每个TU 122-0、122-1、……、122-S可以被存储在与一或多个数据逻辑部分相对应的页120-0、120-1、……、120-R的一部分中。例如,特定TU可以与存储在页中的特定逻辑扇区相对应,例如,因为TU122-0到122-S被示为存储在页120-0中。
存储在页120-0中的每个TU 122-0、122-1、……、122-S,例如,将具有与其相关联的物理标识符,例如,物理块编号(PBN)。与TU 122-0到122-S相关联的PBN标识在存储器阵列100内扇区的实际物理位置。例如,PBN可以标识CE#、LUN、平面、块、页、位置和/或状态。进一步地,多个PBN可以映射到存储器阵列100中的存储器单元的物理页上。例如,取决于存储器阵列100是什么类型,一个、两个或四个PBN可以映射到物理页上。在多个实施例中,一个块指的是作为一个单位一起被擦除的一组存储器单元。多个块可以被包含在存储器单元的一个平面中,并且一个阵列可以包含多个平面。作为一个实例,存储器装置可以被配置成存储8KB(千字节)用户数据每页,128页用户数据每块,2048个块每平面以及16个平面每装置。
在本实例中,TU被用作转换的单元或用于传输和监视数据的管理单元。每个TU可以由单个逻辑块地址(LBA)或多于一个LBA构成。如本领域的普通技术人员将理解的,逻辑块寻址是可以被主机使用用于标识数据的逻辑扇区的方案。例如,每个逻辑扇区可以与唯一的逻辑块地址(LBA)相对应。另外,LBA也可以与物理地址相对应。作为一个实例,数据的逻辑扇区可以是多个字节的数据(例如,256字节、512字节或1,024字节)。然而,实施例不限于这些实例。
在本公开的一或多个实施例中,多个LBA可以与一个逻辑页号(LPN)相对应。也就是说,一个LPN可以包含多个LBA(例如,多个数据的逻辑扇区)。例如,取决于LBA和/或LPN的大小,一或多个LPN可以在逻辑上映射到一个LBA中。另外,虚拟页号(VPN)可以例如用于标识存储在表(例如,在本文中结合图2A-5进一步描述的表232、236、242、332、438和/或542)中的数据的逻辑地址(例如,映射所述位置)。也就是说,VPN可以等同于存储在表中的数据的LPN。
注意,物理块116-0、116-1、……、116-B,行120-0、120-1、……、120-R,扇区122-0、122-1、……、122-S和页的其它配置是可能的。例如,物理块116-0、116-1、……、116-B的行120-0、120-1、……、120-R可以各自存储与单个逻辑扇区相对应的数据,所述逻辑扇区可以包含例如多于或少于512字节的数据。
图2是根据本公开的多个实施例的呈包括存储器系统204的计算系统201形式的设备的框图。如本文使用,存储器系统、控制器和/或存储器装置可以分别是“设备”。
存储器系统204可以是例如固态驱动器(SSD)。在图2所示的实施例中,存储器系统204包含主机接口206、存储器(例如,多个存储器装置210-1、210-2、……、210-N)和耦合到物理主机接口206和存储器装置210-1、210-2、……、210-N的控制器208(例如,SSD控制器)。
存储器装置210-1、210-2、……、210-N可以包含例如多个非易失性存储器阵列(例如,非易失性存储器单元阵列)。例如,存储器装置210-1、210-2、……、210-N可以包含多个存储器阵列,类同于先前结合图1描述的存储器阵列100。存储器装置210-1可以包含存储在存储器装置210-1内的表211。在一些实施例中,表211可以是与所有存储器(例如,存储器装置210-1、201-2、……、210-N)相对应并包含所有存储器的逻辑到物理映射的地址映射表。
在操作中,例如,数据可以作为数据页被写入到和/或读取自存储器系统的存储器装置(例如,存储器系统204的存储器装置210-1、……、210-N)。这样,数据页可以被称为存储器系统的数据传输大小。数据可以以被称为扇区(例如,主机扇区)的数据段被传输到/自主机202。这样,数据扇区可以被称为主机的数据传输大小。在一些实施例中,NAND块可以被称为擦除块,其中块是擦除的单位,而页是读取和/或写入的量度。
主机接口206可以用于在存储器系统204与另一装置(例如主机202)之间传达信息。主机202可以包含存储器访问装置(例如,处理器)。如本文使用,“处理器”可以意指多个处理器,例如并行处理系统、多个协处理器等。示范性主机可以包含个人膝上型计算机、台式计算机、数码相机、数字记录和回放装置、移动(例如,智能)电话、PDA、存储器卡读取器、接口集线器等。
主机接口206可以是标准化物理接口的形式。例如,当存储器系统204用于计算系统201中的信息存储时,主机接口206可以是串行高级技术附件(SATA)物理接口、外围组件互连快速(PCIe)物理接口或通用串行总线(USB)物理接口、以及其它物理连接器和/或接口。然而,通常,主机接口206可以提供用于在存储器系统204与具有与主机接口206兼容的接收器的主机(例如主机202)之间传递控制、地址、信息(例如,数据)和其它信号的接口。
控制器208可以包含例如控制电路系统和/或逻辑(例如,硬件和固件)。控制器208可以被包含在与存储器210-1、210-2、……、210-N相同的物理装置(例如,相同的管芯)上。例如,控制器208可以是耦合到印刷电路板的专用集成电路(ASIC),所述印刷电路板包含物理主机接口206和存储器210-1、210-2、……、210-N。可替代地,控制器208可以被包含在单独的物理装置上,所述单独的物理装置通信地耦合到包含存储器210-1、210-2、……、210-N的物理装置。在多个实施例中,控制器208的组件可以作为分布式控制器分布在多个物理装置上(例如,与存储器在相同管芯上的一些组件,以及在不同管芯、模块或板上的一些组件)。
控制器208可以包含存储表209的缓存207(例如,使用DRAM或SRAM来存储数据的存储器缓存)。表209可以包含地址映射表的至少一部分。例如,缓存207可以存储加载到其上的地址映射表(例如211)的一或多个区域。地址映射表211的区域可以与由表211映射的存储器(例如,210-1到210-N)的相应物理区域相对应(下面结合图4进一步描述)。
控制器208可以与存储器装置210-1、210-2、……、210-N通信,以感测(例如,读取)、编程(例如,写入)和/或擦除信息,以及进行其它操作。另外,与擦除现有数据相比,控制器208可以与存储器装置210-1、210-2、……、210-N通信以用新数据覆写现有数据。控制器208可以具有可以是多个集成电路和/或分立组件的电路系统。在多个实施例中,控制器208中的电路系统可以包含用于控制跨存储器装置210-1、210-2、……、210-N的访问的控制电路系统和/或用于在主机202和存储器系统204之间提供转换层(例如,快闪转换层)的电路系统。
控制器208可以控制作为(例如,配置每个相应存储器装置210-1、210-2、……、210-N的一部分以运行作为)静态(例如,专用)单级单元(SLC)缓存和/或动态SLC缓存的每个相应存储器装置210-1、210-2、……、210-N的专用区域(例如,块寻址部分)的操作。静态SLC缓存是指在缓存处理转换时未被更新并且未被插入数据的缓存。一旦创建静态缓存,将查询所述缓存,而不是查询查找表。动态SLC缓存是指一种缓存,其存储可以更新的数据部分或存储在访问所述数据部分时被插入到缓存中的另外的数据。例如,每个相应存储器装置210-1、210-2、……、210-N的一部分可以被配置成在SLC模式下作为静态缓存运行和/或在SLC模式下作为动态缓存运行。每个相应存储器装置210-1、210-2、……、210-N的此部分可以是例如每个相应存储器中的存储器单元的第一多个块(例如,物理块),如本文中将进一步描述的(例如,结合图3),并且可以在本文中被称为存储器的第一部分。另外,每个相应存储器装置210-1、210-2、……、210-N的部分可以包含第二多个块、第三多个块等。
图2所示的实施例可以包含未示出的另外的电路系统、逻辑和/或组件,以免模糊本公开的实施例。例如,存储器装置204可以包含地址电路系统,以锁存通过I/O电路系统在I/O连接器上提供的地址信号。行解码器和列解码器可以接收和解码地址信号,以访问存储器210-1、210-2、……、210-N。尽管在本实例中示出了具体电路系统,但是在实例中可以包含并使用未描述或示出的另外的电路系统。
图3A示出了呈主机和存储器阵列形式的设备303的框图。主机302可以由箭头312所示将数据发送到存储器单元阵列310。存储器单元阵列310可以包含多组存储器单元311-1、311-2、311-3。主机302可以发送顺序格式的数据,以作为在本文中被称为转换单元(TU)的存储器的部分而被写入。这些TU可以用作管理单元,以更轻松地管理物理存储器中的特定量的数据。在一些实施例中,存储器的这些部分可以是任何数的长度。在一些实例中,TU的长度可以为4KB。TU中的每个可以与存储器阵列中的一组存储器单元相关联。例如,第一TU(例如,“TU1”)可以与第一组存储器单元311-1相关联,并且可以从物理地址位置313开始。
主机可以将顺序格式的TU写入阵列310。例如,第一数据部分可以作为第一TU311-1被写入,第二数据部分可以作为第二TU(例如,“TU2”)311-2被写入,并且第三数据部分可以在写入第二TU 311-2之后作为第三TU(例如“TU3”)311-3被写入。第二数据部分可以作为从物理地址位置314开始的第二TU 311-2被写入,并且第三TU 311-3从物理地址位置315开始被写入。
在一些先前的方法中,地址映射表(例如,图2中的表209)可以使用逻辑地址作为与第一到第三TU中的每个相对应的地址映射表中的索引,并且所述地址映射表可以包含映射到被索引的逻辑地址中的每个的物理地址条目。这可以被称为逻辑与物理地址的1:1相关性。然而,与本文描述的实施例相关联,可以使用不同的相关性来最小化其中存储了地址映射表的物理空间的量。为了实现这种相关性,可以输入顺序写入的数据的初始物理地址位置,并且可以基于每个数据部分的偏移来输入在物理地址位置之后写入的另外的数据部分。
图3B示出了根据本公开的多个实施例的地址映射表328的框图。地址映射表328示出了与写入图3A所示的转换单元(TU1、TU2、TU3)相对应的条目。具体地,地址映射表328示出了存储器阵列内转换单元(TU)的逻辑到物理地址映射。阵列中作为TU被写入的数据可以以较大区块被顺序写入以提高效率,而不是以小于TU大小的数据量进行写入。例如,可以将多个TU以一次四个TU、八个TU、十六个TU或更多TU的区块顺序写入到阵列中。为了利用这种顺序写入并最小化地址映射表的大小,可以输入写入的第一TU的页的第一物理地址,并且可以将写入的随后的TU与所述第一物理地址以对应的偏移的相关联,以指示在阵列的页中TU距第一物理地址多远被写入。
如图3B所示,可以使用索引来组织地址映射表328的第一表332以与TU逻辑地址相对应。例如,第一条目333-1与第一TU(例如,“TU1”)相对应,第二条目333-2与第二TU(例如,“TU2”)相对应,第三条目333-3与第三TU(例如“TU3”)相对应,等等(因为另外的条目可以包含在第一表332中,如图4进一步所示)。条目333-1、333-2、333-3可以包含指向地址映射表328的第二表334中的对应的条目331的相应指针335-1、335-2、335-3。第一表332的条目333-1、331-2、333-3可以包含相应偏移336-1、336-2、336-3,其指示与第二表334中的条目相对应的物理地址范围内的位置,与相应TU相对应的物理数据被存储在所述位置。
第二表334可以包含多个条目331,其与存储器阵列(例如,图3A中的存储器阵列310)中的物理地址范围相对应。多个条目331各自包含物理地址字段337和计数字段338。物理地址字段337可以指示存储了逻辑地址的对应的数据的物理地址(“PA”)。计数字段338可以指示与第二表中的条目331相关联的第一表332中的条目的数量。
当第一数据部分在阵列(例如,阵列310)内作为第一转换单元(“TU1”)被写入时,与与第一TU相关联的第一TU逻辑地址相对应的第一条目333-1在第一表332中被更新。第一表332中的更新后的第一条目333-1包含指针(“P”)335-1,其指向第二表334中的条目331(箭头所示),以指示第一TU逻辑地址的数据被存储在由条目331表示的物理地址范围中。物理地址(例如,“PA”)337指示第一数据部分被写入处的阵列(例如,阵列310)中第一页的物理位置的起点。由于在本实例中第一数据部分是在多个顺序写入的部分中写入的第一数据,所以在对应的偏移字段336中输入偏移336-1(例如“OS 0”)零。偏移零指示从第二表334中对应的条目的物理地址位置开始,将对应的TU写入到阵列。例如,条目333-1与将数据在PA337处作为第一TU存储相关联。当第一条目333-1通过指针335-1与条目331相关联时,与条目331相关联的计数字段338增加一(1)(导致计数字段338的值为1,未示出)。尽管所示实例描述了将每个TU条目逐个地写入表中,但是实例不限于此。例如,当一个主机命令包含4个TU时,可以同时在第一表和第二表中更新进入存储器阵列的所有4个TU。
当第二数据部分(例如“TU2”)在第一部分之后被顺序地物理写入到阵列时,在第一表332中更新与与第二部分相关联的第二TU逻辑地址相对应的第二条目333-2。第一表332中的更新后的第二条目333-2的指针335-2指向第二表334中的条目331(由箭头指示)。指向第二表中的条目331的第一表332的条目333-2指示第二部分被写入到与条目331相关联的物理地址范围。第二条目333-2包含偏移336-2一(1)(例如“OS 1”)。偏移336-2一(1)指示与第二条目相关联的转换单元(TU2)在被物理写入时从第二表334中的所述条目331所指示的物理地址(“PA”)337位置偏移了一个转换单元长度。当第二条目333-2通过指针335-2与条目331相关联时,与条目331相关联的计数字段338增加一(1)(导致计数字段338的值为2,未示出)。
当第三数据部分(例如,“TU3”)在第二部分之后被顺序地物理写入到阵列时,在第一表332中更新与与第三部分相关联的第三TU逻辑地址相对应的第三条目333-3。第一表332中的更新后的第三条目333-3的指针335-3指向第二表334中的条目331(由箭头指示)。指向第二表中的条目331的第一表332的条目333-3指示第三部分被写入到与条目331相关联的物理地址范围。第三条目333-3包含偏移336-3二(2)(例如“OS 2”)。偏移336-2二(2)指示与第三条目相关联的转换单元(TU3)在被物理写入时从第二表334中的所述条目331所指示的物理地址(“PA”)337位置偏移了两个转换单元长度。当第三条目333-3通过指针335-3与条目331相关联时,与条目331相关联的计数字段338增加一(1)(导致计数字段338的值为3,如图3B所示)。
这样,第一、第二和第三TU(TU1、TU2、TU3)被顺序写入阵列的存储器单元中,并且地址映射表328包含与逻辑地址相对应的第一表332中的三个条目333-1、333-2、333-3以及与逻辑地址相对应的第二表334中的仅单个条目。通过将第一表332中的一个以上条目与第二表334中的单个条目相关联,可以最小化地址映射表328的大小。
图4示出了根据本公开的多个实施例的地址映射表405的框图。地址映射表405可以包含地址映射表的多个区域(逻辑到物理(L2P)映射区域)(“L2P区域0”、“L2P区域1”、……、“L2P区域N”)428-0、428-1、……、428-N。多个区域中的每个可以与存储器阵列(例如,图1中的存储器阵列100)中的逻辑地址(例如,与n个TU相关联的n多个逻辑地址)的特定范围相对应。在一些实施例中,区域中的每个包含与对应区域相对应的相同n多个TU。可以对TU的值执行特定功能,以确定TU的特定地址位于哪个区域。作为一个实例,可以对TU的值执行移位功能,以确定TU的特定地址所位于的区域。尽管在本实例中,地址映射表405的区域中的每个包含第一表432-0、432-1、432-2中的八(8)个条目和第二表434-0、434-1、434-2中的四(4)个条目,但是实施例不限于此。如下所述,元件编号可以整体指示多个元件。例如,为了便于参考,条目433-1到433-8可以被称为条目433。
每个区域(“L2P区域0”、“L2P区域1”、“L2P区域2”)428-0、428-1、……、428-N可以包含与存储在第一表(表432)中的转换单元(TU)的多个逻辑地址相关联的多个条目(区域428-0是433;区域428-1是439;区域428-N是450)。第一表432中的条目433、439、450可以包含指向第二表中的对应的条目的相应指针(435、440和452)(例如,第二表434,如箭头所示从第一表432的条目指向第二表434的条目)。第一表432可以包含偏移436、442、454,其指示与偏移的条目所指向的第二表434中的对应的条目中的特定物理地址的偏移。相应区域428的第二表434可以包含物理地址437。第二表434可以分别包含计数字段438、448、458,其指示与第二表434的特定条目431、444和456分别相关联的对应的TU的逻辑地址的数量。
第一区域(“L2P区域0”)428-0包含八个TU,它们以三个不同的顺序组被写入到阵列。例如,作为一组TU的数据的第一顺序写入包含将索引为与条目433-1相关联的第一TU、索引为与条目433-2相关联的第二TU和索引为与条目433-3相关联的第三TU写入到阵列。第一TU可以在输入到第二表434-0的条目431-1中的物理地址437-1处被写入。当第一TU被写入时,第一表432-0的第一条目433-1被更新,并且指针435-1指向第二表434-0中的条目431-1。另外,条目433-1中的偏移436-1被设置为零(“OS 0”)以指示与对应的TU物理上位于的物理地址437-1没有偏移。此外,条目431-1中的计数字段438-1被设置为1,因为这是与条目431-1相关联的第一TU。
当在写入第一TU之后顺序写入第二TU时,第一表432-0的第二条目433-2被更新,并且指针435-2指向第二表434-0中的条目431-1。另外,条目433-2中的偏移436-2被设置为1(“OS 1”),并且计数字段438-1增加1(等于2)。除非写入了非顺序TU或已使用与所述条目相关联的物理地址范围的总物理空间,否则不会更新第二表434-0中的新条目。当在第二TU之后顺序写入第三TU时,第一表432-0的第三条目433-3被创建,并且指针435-3指向第二表434-0中的条目431-1。另外,条目433-3中的偏移436-3被设置为2(“OS 2”),并且计数字段438-1增加1(等于3)。尽管在本实例中,第一、第二和第三TU被描述为一次被更新一个,但是实例不限于此。例如,第一、第二和第三TU可以被顺序写入,并且对条目433-1到433-3和431-1中的每个的更新可以作为批量更新来执行。
同样,包含第四和第五TU的第二顺序组可以从物理地址437-2开始被写入,并且可以将物理地址437-2存储在条目437-2中。基于第一表432-0的索引,第四条目433-4与写入的第四TU相关联,第五条目433-5与在第四TU之后被写入的第五TU相关联。第二表434-0的条目437-2的字段计数431-2包含计数2(因为存在两个TU)和与条目431-2相关联的第一表432-0中的条目。包含第六TU、第七TU和第八TU的第三顺序组可以从作为物理地址437-3被存储在条目437-3中的阵列的物理地址开始被顺序写入。第二表434-0的条目437-3的字段计数431-3包含计数3(因为存在三个TU)和与条目431-3相关联的第一表432-0中的对应的条目。
尽管本实例的描述描述了在每个TU被写入时每个条目的创建,但是实例不仅限于此。例如,可以写入一串顺序TU,并且在所述串的写入完成时,可以创建并写入条目、指针、偏移和计数字段。如图所示,第二表434-0的第四条目431-4与第一表432-0中的写入的TU和对应的条目不相关联。这是为了示出另外的物理位置可能与所述特定区域相关联,但尚未用数据进行物理写入。如将在下面进一步描述的,另外的插入和删除操作可以使用并用到这种额外的物理空间。
同样,第二区域(“L2P区域1”)428-1包含八个TU,它们以四个不同的顺序组被写入到阵列。例如,一组TU的第一顺序写入包含将与条目439-1相关联的第一TU写入到作为第二区域428-1的第二表434-1中的物理地址437-5被存储的阵列中的物理地址。与条目444-1相关联的计数字段448包含值一。一组TU的第二顺序写入包含将与条目439-2相关联的第二TU写入到作为第二区域428-1的第二表434-1中的物理地址437-6被存储的阵列中的物理地址。与条目444-2相关联的计数字段448包含值一。一组TU的第三顺序写入包含将分别与条目439-3、439-4和439-5相关联的第三、第四和第五TU写入到与条目444-2相关联并从第二区域428-1的第二表434-1中的物理地址437-7开始的阵列中的物理地址范围。与条目444-3相关联的计数字段448包含值三,因为三个TU与条目444-3相关联。一组TU的第四顺序写入包含将分别与条目439-6、439-7和439-8相关联的第六、第七和第八TU写入到与条目444-3相关联并从第二区域428-1的第二表434-1中的物理地址437-8开始的阵列中的物理地址范围。与条目444-4相关联的计数字段448包含值三,因为三个TU与条目444-4相关联。
进一步地,第三区域(“L2P区域N”)428-2包含八个TU,它们以四个不同的顺序组被写入到阵列。例如,一组TU的第一顺序写入包含将与条目450-1相关联的第一TU和与条目450-2相关联的第二TU写入到与条目456-1相关联的物理地址范围。第一TU从存储在条目456-1中的物理地址437-10开始被写入,第二TU在所述物理地址437-9之后被顺序写入。与条目456-1相关联的计数字段458包含值二,因为第一TU和第二TU都与条目456-1相关联。一组TU的第二顺序写入包含将与条目450-3相关联的第三TU和与条目450-4相关联的第四TU写入到第二表434-N中与条目456-2相关联的物理地址范围。第三TU从存储在条目456-2中的物理地址437-10开始被写入,并且第四TU在所述物理地址437-10之后被顺序写入。与条目456-2相关联的计数字段458包含值二,因为第三TU和第四TU都与条目456-2相关联。
一组TU的第三顺序写入包含将与条目450-5相关联的第五TU和与条目450-6相关联的第六TU写入到与条目456-3相关联的物理地址范围。第五TU从存储在条目456-3中的物理地址437-11开始被写入,第六TU在所述物理地址437-11之后被顺序写入。与条目456-3相关联的计数字段458包含值二,因为第五TU和第六TU都与条目456-3相关联。一组TU的第四顺序写入包含将与条目450-7相关联的第七TU和与条目450-8相关联的第八TU写入到第二表434-N中与条目456-4相关联的物理地址范围。第七TU从存储在条目456-4中的物理地址437-12开始被写入,第八TU在所述物理地址437-12之后被顺序写入。与条目456-4相关联的计数字段458包含值二,因为第七TU和第八TU都与条目456-4相关联。
尽管图4所示的本实例在对应的第二表中每个物理地址条目最多显示三个TU,但是实例不限于此。在一些实例中,可以按次序顺序写入16或32个TU,在那些情况下,可以将16或32个TU与单个物理地址条目相关联,其中对应的计数字段为16或32,并且16或32个偏移与被顺序写入的TU中的每个相关联。这种扩展能力减小了其中将存储地址映射表的存储器阵列中的物理空间的量。这样,尽管存储器驱动器的大小越来越大,地址映射表的大小并不一定会太大。
在一些实施例中,可以执行插入操作以将另外的条目插入到地址映射表的区域的第二表中。可以响应于主机将数据写入到之前未写入的TU来执行插入操作。在第二表中插入新条目之后,与新写入的TU相关联的第一表中的更新后的条目指向第二表中新插入的条目。在一些实例中,可以执行插入操作以将新写入的TU插入到已经修剪掉先前写入的TU并且在写入新写入的TU之前没有数据被存储的位置中。插入操作可以包含在第二表(例如,地址表,例如图4所示的第一区域428-0中的表434-0)中创建新条目,所述新条目将表示新数据要被写入的物理地址位置。新条目的创建可以包含确定数据被初始写入的起始物理地址和写入的数据的长度。响应于写入的数据长于第二表中的TU条目的长度,可以创建另外的条目,并且写入的数据可以跨越第二表中第一条目的物理地址范围和第二表中第二条目的物理地址范围的至少一部分。与新写入的TU的索引号相对应的地址映射表的第一表(例如,图4中的表432-0)中的条目可以指向第二表中新创建的条目中的物理地址。可以在条目中的每个中输入对应的偏移号,以指示在与第二表中的新创建的条目相关联的物理地址范围中每个相应TU在何处被写入。
在一些实施例中,可以响应于主机用新数据覆写先前有效的TU来执行替换操作。为了执行替换操作,可以将新条目写入到第二表(例如,图4中的第二表434-0),所述第二表包含物理地址和计数字段以指示与新条目相关联的TU数量。当主机用另外的TU覆写先前有效的TU时,与另外的TU相对应的第一表(例如,图4中的第一表432-0)中的条目可以指向第二表中的新条目。更新第一表(其中每个TU以被索引的格式表示)确保了与特定被索引的TU相关的数据不会陈旧并且当前条目数据保持有效。
另外,可以通过修订与第二表中的条目相关联的计数字段来更新第二表(例如,第二表434-0)。例如,当先前有效的数据被覆写时,先前有效的数据所指向的第二表中的条目变得过时,并且与第二表中的此条目相关联的计数字段应递减一。第二表中的条目的计数字段达到零指示第一表(例如,图4中的第一表432-0)中没有条目指向第二表中的条目并且此条目可以在随后的TU写入期间被重复使用。计数字段在写入操作期间递减,因此,如果与第二表中的条目相关联的计数字段递减到零,则此条目可以用于写入操作,并且可以避免第二表中的空洞。例如,如果条目431-4先前在其对应的计数字段438-4中的值为一,并且先前与条目431-4相关联的第一表(例如,表432-0)中的条目被与不同的物理地址(以及因此第二表434-0中的不同的条目)相关联的数据覆写,那么条目431-4将可用于新写入操作以输入新物理地址并将新写入的TU与之相关联。
但是,即使执行上述方法,第二表中的空洞也可能被创建。例如,如果主机提供了两个单个命令来写入两个相邻TU,但是它们没有被顺序写入并且没有指向第二表中的相同物理地址条目,那么将存在两个物理地址条目。如果主机随后发送一个单个命令来写入两个相邻TU,从而覆写那些相邻TU的先前写入的数据,那么第二表中的一个单个物理地址条目将与所述两个相邻TU相关联。这样可以使第二表中的两个物理地址条目中的一个的计数字段为零,并且此物理地址条目可能位于第二表中其它物理地址条目的中间,从而创建一个空洞。
此外,当从主机发出修剪命令时,可以更新与每个受影响的TU相关联的条目,以指示与受影响的TU相关联的条目不再指向任何有效的物理地址。在一个实例中,第一表(例如,图4中的第一表432-0)中的特定数字可以指示TU没有存储它的物理存储器。在第一次格式化存储器驱动器时,并且在任何用户数据被写入之前,所有L2P区域的第一表都可以加载此特定数字值。例如,当接收到修剪命令时,对于每个受影响的TU,可以更新第一表以插入特定数字,所述特定数字指示没有物理媒体支持此TU。另外,可以递减与受影响的TU相关联的第二表(例如,图4中的第二表434-0)中的条目的计数字段。此方法也可能在第二表中引入空洞,其由计数字段为零的条目指示。可以通过将空洞留在适当位置并修改上述“插入和替换”操作中的顺序以查找第二表中要重复使用的空洞来解决这些空洞。
修改顺序的第一种方法可以通过在需要写入新条目时顺序扫描第二表以查找空洞来执行。可以通过在操作之间存储的地址中存储指向空洞的指针来执行第一种修改方法,以便可以轻松地标识空洞,并且不必在第二表的开头开始扫描条目中的空洞。另外,第二表中计数字段为零的每个条目都可以加入到特定条目列表中,所述特定条目列表指示要用于另外的写入的条目位置。此列表中的头指针可以存储在其自己的唯一位置,而指针链接列表可以存储在第二表的对应的条目中。例如,指针链接列表中的指针可以指向第二表中的第一空闲物理地址条目,然后此条目中的物理地址字段指向下一空闲条目,依此类推。
修改顺序的第二种方法可以是在空洞的数目超过阈值时立即或在稍后的某个时间点执行压缩操作。此压缩操作在硬件上的执行要好于固件,它可以扫描第二表并定位空洞(例如,计数字段为零的条目)。对于定位的每个空洞,可以将第二表的最后一行复制到字段计数为零的条目中。然后,更新指向此行的第一表(例如,图4中的第一表432-0)条目。
图5示出了根据本公开的多个实施例的用于存储器寻址的方法507的框图。方法507涉及查找操作,以在物理存储器中定位存储在转换单元(TU)中的数据。方法507可以包含,在步骤560,确定地址映射表的哪个区域(例如,图4中的区域428-0)包含与TU(例如,图4中第一区域428-0的第一TU)相关联的特定条目(例如,图4中的条目433-1)。确定哪个区域包含TU可以包含对TU值执行移位操作。每个区域可以与特定数目的逻辑地址范围(例如,主机地址)相关联。
方法507可以包含,在步骤562,确定是否将包含所述特定条目的所述区域加载到缓存存储器中。所述确定可以包含确定哪些区域被加载到缓存存储器中以及那些加载的区域是否与包含与位于物理存储器中的TU相关联的条目的区域相同。响应于所述区域没有被加载到缓存存储器中,方法507可以包含,在步骤564,可以将所述区域从存储存储器(例如,DRAM)加载到所述缓存存储器中。
响应于所述区域被加载到缓存存储器中,方法507可以包含,在步骤466,确定区域偏移。区域偏移可以通过从与TU相关联的目标TU地址中减去所述区域中的基TU地址来确定。例如,区域偏移可以指示目标地址位于距基地址多远的位置。方法507可以包含,在步骤468,使用所述区域偏移在所述区域的第一表中定位与所述TU相关联的条目。可以使用确定的区域偏移将TU定位在距基地址特定距离的区域中。
所述方法可以包含,在步骤570,基于第一表中的偏移来确定距特定TU的初始物理地址的距离。第一表中的偏移可以在与第一表中的TU相关联的被定位的条目中。如果所定位的TU是被写入在一起的TU的顺序串中写入的第一TU,则所定位的TU可以是与特定TU相同的TU。但是,如果要定位的TU不是第一个被顺序写入的,则特定TU将是顺序中的第一个,并且要定位的TU将与特定TU偏移特定距离。特定距离可以由偏移字段(例如,图4中的偏移436)指示。
方法507可以包含,在步骤572,通过向所述物理地址加入TU偏移来读取物理存储器中的所述TU。TU的物理地址可以使用来自第一表(例如,表432-0)中的条目的指针来确定,所述指针指向包含物理地址位置的第二表(例如,表434-0)中的条目。第一表中的条目还包含偏移,可以将此偏移加入到物理地址位置,以便在物理存储器中定位TU。
通过使用于存储地址映射表的区域的物理存储器(例如,DRAM)具有可变大小,可以减少用于存储地址映射表的物理存储器占用(例如,在物理DRAM存储器中使用的空间的量)。为此,可以管理物理存储器以将区域存储为可变大小对象池,其在经典C/C++术语中被称为堆。对象缓存分配器(slab allocator)和相似项可以用于避免碎片并优化堆的性能。存储器内表(in-memory table)不仅可以用于跟踪DRAM中加载了哪些区域,还可以跟踪它们在何处,直到所述区域的字级地址。
可以执行管理由于主机写入而导致的区域的增长大小的方法。这些方法可以包含在DRAM中加载的每个区域之间分配备用空间以允许增长。这些方法可以包含当区域n需要另外的空间时,从DRAM中移除下一区域,然后将所述下一区域存储回物理媒体。这些方法可以包含通过DMA位置将存储器中的区域移动到新的更大空间。地址映射表的区域可以存储到NAND,并且在一些示范性缓存方案中,每个区域的大小可以设置为NAND页的大小或其某个二进制倍数。在这些示范性缓存方案中,区域的大小可变,因此这种关系可能不再存在。为了解决这个问题,NAND可以用于存储NAND页内和跨NAND页的区域。但是,单个区域可以存储在NAND页内,另外,页末尾的空间可以保持开放。
在一些存储器应用中,存储器驱动器(例如固态驱动器(SSD))并未完全满载运行。没有用户或归档系统可以使用零空闲空间运行,通常膝上型计算机和个人机器都以很大的空闲空间(例如25%-50%)运行,并且即使在服务器中,它们的存储也难以几乎满载,因为这意味着即将出现存储空间不足的情况。例外情况可能包含固态驱动器(SSD),它们被用作始终100%满载运行的高端系统中的零级(tier zero)缓存装置。在归档系统中,当驱动器未100%满载时,可以将存储的数据分布在媒体的整个LBA范围内,即,数据在驱动器开始时未打包,但在它们之间有空洞分布,这可以最大程度地减少文件碎片。对于部分满载的驱动器,可以预期逻辑到物理(L2P)缓存中的每个区域都表示某个有效TU,其中含有主机数据,并且某些已被修剪。然而,存储器中L2P区域的大小与它代表的有效数据的多少无关,这可能会限制优势。在本文所述的实施例中可以避免这种情况。虽然第一表的大小可以是固定的,但是第二表的大小可以取决于存储的实际用户数据的数量而变化。作为一个实例,对于满载驱动器,每个L2P区域(包含第一表和第二表)的大小可以为12,641字节。对于仅50%满载的驱动器,平均物理地址表的大小可以从6,089字节(在一些先前的方法中,满载时和未满载但无法减小大小时)缩小到3,045字节,或总区域大小缩小到9,597字节,从而节省了固定大小区域表将使用的DRAM空间的40%。
在一些实施例中,可以使用比一些先前的方法更多的DRAM访问(例如,当不使用上述的所描述的地址映射表方案时)。至少,单个TU的每个主机读取都可以使用对第一表然后对物理第二表的读取访问。对于单个TU的写入操作,至少可以执行4次DRAM访问、2次读取和2次写入,如果物理第二表中的条目无法重复使用,则可能执行3次写入。然而,如果主机使用与写入TU时相同的大命令大小和对齐来读取TU,则由于n+1次读取可以提供所有信息以回读n个TU,因此可以减少DRAM访问的次数。进一步地,如果顺序读取小于每个物理条目的长度字段中存储的TU的数目,则只能使用一次DRAM访问。
尽管本文已经示出和描述了特定的实施例,但是本领域的普通技术人员将理解,被计算为实现相同结果的布置可以代替所示的特定实施例。本公开旨在涵盖本公开的多个实施例的改编或变型。应当理解,以上描述是以说明性方式而不是限制性方式进行的。通过阅读以上描述,以上实施例的组合以及本文中未具体描述的其它实施例对于本领域技术人员将是显而易见的。本公开的多个实施例的范围包含使用以上结构和方法的其它应用。因此,本公开的多个实施例的范围应当参考所附权利要求以及这些权利要求所享有的等同物的全部范围来确定。
在前面的具体实施方式中,出于简化本公开的目的,在单个实施例中将一些特征分组在一起。本公开的方法不应被解释为反映以下意图:本公开的公开实施例必须使用比每个权利要求中明确叙述的特征更多的特征。相反,如所附权利要求所反映的,发明主题在于少于单个公开实施例的所有特征。因此,以下权利要求据此合并到具体实施方式中,其中每个权利要求独立地作为单独的实施例。
Claims (24)
1.一种设备,其包括:
存储器单元阵列;和
存储器缓存,其被配置成存储地址映射表的至少一部分,所述地址映射表包括与所述阵列的相应量的逻辑地址空间相对应的多个区域,其中所述地址映射表将转换单元TU映射到所述阵列中的物理位置,并且其中所述多个区域中的每一个包括:
第一表,其包括与所述相应量的逻辑地址空间的相应TU逻辑地址相对应的条目;和
第二表,其包括与所述阵列的相应物理地址范围相对应的条目;
其中所述第一表的所述条目包括:
指向所述第二表中的特定条目的相应指针;和
对应的相应偏移,其指示与所述第二表中的所述特定条目相对应的所述物理地址范围内的位置,与所述相应TU相对应的物理数据被存储在所述位置;
其中所述第二表的所述条目包括:
相应物理地址字段,其指示与所述特定条目相对应的所述物理地址范围的第一物理地址;和
对应的相应计数字段,其指示与与所述特定条目相对应的所述物理地址范围相关联的TU的数量。
2.根据权利要求1所述的设备,其中所述第二表中的所述条目的数量小于所述第一表中的所述条目的数量。
3.根据权利要求2所述的设备,其中所述第二表中的所述条目的所述数量响应于从所述阵列写入和擦除的另外的TU而变化。
4.根据权利要求1所述的设备,其中与所述第二表的第一条目相关联的相应计数字段的值响应于先前与所述第一条目相关联的所述转换单元中的至少一个随后与所述第二表的第二条目相关联而递减。
5.根据权利要求1所述的设备,其中与所述第二表的第一条目相关联的相应计数字段的值响应于先前与所述第一条目相关联的所述转换单元中的至少一个被指示为无效而递减。
6.根据权利要求1所述的设备,其中与所述第二表的第一条目相关联的相应计数字段的值响应于所述转换单元中的至少一个与所述第一条目相关联而增加。
7.根据权利要求1所述的设备,其中所述存储器单元阵列是NAND存储器单元阵列,并且所述存储器缓存是DRAM存储器缓存。
8.一种方法,其包括:
通过以下方式确定存储器单元阵列中转换单元TU的物理位置:
访问地址映射表的第一表中的与所述TU的逻辑地址相对应的条目,其中所述第一表中的所述条目包括:
指向所述地址映射表的第二表中的相应条目的指针;和
偏移,其指示由其中存储了所述TU的所述第二表中所指向的所述相应条目指示的物理地址范围内的位置;
访问所述第二表中的与所述物理地址范围相对应的条目,其中所述第二表中的所述条目包括:
物理地址字段,其指示所述物理地址范围的第一物理地址;和
计数字段,其指示与与所述第二表中的所述条目相对应的所述物理地址范围相关联的TU的数量。
9.根据权利要求8所述的方法,其包括在距所述偏移指示的所述阵列中的所述第一物理地址一定距离处读取所述存储器单元阵列中的所述TU。
10.根据权利要求8所述的方法,其包括确定地址映射表的多个区域中的一个区域,所述区域包含与所述TU相对应的所述第一表和所述第二表中的条目,其中相应区域与所述阵列的一定量的逻辑地址空间相对应。
11.根据权利要求10所述的方法,其包括在访问所述第一表中的所述条目和所述第二表中的所述条目之前,确定所述区域是否被加载到存储器缓存中。
12.根据权利要求11所述的方法,其包括响应于所述区域没有被加载到所述存储器缓存中,将所述区域加载到所述存储器缓存中。
13.根据权利要求8所述的方法,其包括响应于向所述存储器单元阵列写入一定数量的另外的TU:
在所述第一表中写入与写入的另外的TU的数量相等数量的条目;和
在所述第二表中写入另外的条目。
14.根据权利要求13所述的方法,其包括响应于所述另外的TU中的一个变为无效来递减所述另外的条目的计数字段。
15.一种设备,其包括:
存储器单元阵列;
存储器缓存,其被配置成存储地址映射表的至少一部分,所述地址映射表将转换单元TU映射到所述阵列中的物理位置,所述地址映射表包括与所述阵列的逻辑地址空间的部分相对应的多个区域并且所述多个区域各自包括:
第一表,其包括与TU逻辑地址相对应的条目,每个条目包括:
指向第二表中的特定条目的指针;和
偏移,其指示与相应TU相对应的物理数据被存储的位置;和
第二表,其包括与所述阵列的相应物理地址范围相对应的条目,每个条目包括:
物理地址字段,其指示对应的物理地址范围的第一物理地址;和
计数字段,其指示与所述对应的物理地址范围相关联的TU的数量;和
耦合到所述存储器缓存的控制器,其中所述控制器被配置成响应于另外的TU被写入所述阵列而将条目加入到所述第一表和所述第二表中和响应于对应的TU变为无效而从所述第一表和所述第二表中移除条目。
16.根据权利要求15所述的设备,其中所述多个区域包括可变大小区域。
17.根据权利要求16所述的设备,其中所述控制器被配置成使用可变大小对象池来管理所述可变大小区域。
18.根据权利要求15所述的设备,其中所述第二表包括另外的可用条目字段,其指示可用于指向所述第一表中的新加入的条目的物理地址条目。
19.根据权利要求18所述的设备,其中所述控制器经配置以将其相应计数字段包含零的物理地址条目用作所述可用条目字段,其中所述第一表中的所述新加入的条目指向所述物理地址条目。
20.一种方法,其包括:
在地址映射表的第一表中存储与转换单元TU的逻辑地址相对应的条目,其中所述第一表中的所述条目包括:
指向所述地址映射表的第二表中相应条目的指针;和
偏移,其指示由其中存储了所述TU的所述第二表中所指向的所述相应条目指示的存储器单元阵列的物理地址范围内的位置;
在所述第二表中存储与所述物理地址范围相对应的条目,其中所述第二表中的所述条目各自包括:
物理地址字段,其指示所述物理地址范围的第一物理地址;和
计数字段,其指示与与所述第二表中的所述条目相对应的所述物理地址范围相关联的TU的数量;
响应于向所述存储器单元阵列写入另外的TU,在所述第一表和所述第二表中写入条目;和
响应于无效化与所述条目相对应的TU,修改与所述无效化的TU相关联的所述计数字段。
21.根据权利要求20所述的方法,其包括响应于所述计数字段递减到值零,将特定值加入到与特定物理地址位置相关联的所述计数字段,以指示没有LBA与所述特定物理地址位置相关联。
22.根据权利要求20所述的方法,其包括通过执行至少4次存储器访问来执行特定TU的写入操作。
23.根据权利要求22所述的方法,其中执行所述写入操作包括执行两次读取和两次写入。
24.根据权利要求22所述的方法,其中执行所述写入操作包括执行两次读取和三次写入。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/664,252 US10534718B2 (en) | 2017-07-31 | 2017-07-31 | Variable-size table for address translation |
US15/664,252 | 2017-07-31 | ||
PCT/US2018/044000 WO2019027815A1 (en) | 2017-07-31 | 2018-07-27 | ADDRESSING MEMORY |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110998550A CN110998550A (zh) | 2020-04-10 |
CN110998550B true CN110998550B (zh) | 2022-08-02 |
Family
ID=65038629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880049529.9A Active CN110998550B (zh) | 2017-07-31 | 2018-07-27 | 存储器寻址 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10534718B2 (zh) |
EP (1) | EP3662379B1 (zh) |
KR (1) | KR102149817B1 (zh) |
CN (1) | CN110998550B (zh) |
WO (1) | WO2019027815A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200116375A (ko) * | 2019-04-01 | 2020-10-12 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법 |
US11237953B2 (en) | 2019-05-21 | 2022-02-01 | Micron Technology, Inc. | Host device physical address encoding |
US11922012B2 (en) | 2019-09-10 | 2024-03-05 | Micron Technology, Inc. | Memory mapping device and method |
EP3792800A1 (en) * | 2019-09-12 | 2021-03-17 | Nxp B.V. | Managing equally sized virtual memory regions and physical memory regions in an electronic device |
US11144250B2 (en) * | 2020-03-13 | 2021-10-12 | Alibaba Group Holding Limited | Method and system for facilitating a persistent memory-centric system |
CN113961140A (zh) | 2020-07-02 | 2022-01-21 | 慧荣科技股份有限公司 | 数据处理方法及对应的数据储存装置 |
CN113885778B (zh) | 2020-07-02 | 2024-03-08 | 慧荣科技股份有限公司 | 数据处理方法及对应的数据储存装置 |
TWI766526B (zh) * | 2020-07-02 | 2022-06-01 | 慧榮科技股份有限公司 | 資料處理方法及對應之資料儲存裝置 |
CN113885779B (zh) | 2020-07-02 | 2024-03-12 | 慧荣科技股份有限公司 | 数据处理方法及对应的数据储存装置 |
JP2022143762A (ja) * | 2021-03-18 | 2022-10-03 | キオクシア株式会社 | メモリシステム、制御方法およびメモリコントローラ |
KR20230100008A (ko) * | 2021-12-28 | 2023-07-05 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그 동작 방법 |
US11940926B2 (en) * | 2022-05-13 | 2024-03-26 | Micron Technology, Inc. | Creating high density logical to physical mapping |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104641356A (zh) * | 2012-09-14 | 2015-05-20 | 美光科技公司 | 地址映射 |
CN104679446A (zh) * | 2013-08-16 | 2015-06-03 | Lsi公司 | 用于使用经分割快闪转变层的方法及设备 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7251653B2 (en) | 2004-06-30 | 2007-07-31 | Microsoft Corporation | Method and system for mapping between logical data and physical data |
US8543792B1 (en) * | 2006-09-19 | 2013-09-24 | Nvidia Corporation | Memory access techniques including coalesing page table entries |
US20090198952A1 (en) | 2008-02-04 | 2009-08-06 | Apple Inc | Memory Mapping Architecture |
US8332572B2 (en) | 2008-02-05 | 2012-12-11 | Spansion Llc | Wear leveling mechanism using a DRAM buffer |
US8321652B2 (en) | 2008-08-01 | 2012-11-27 | Infineon Technologies Ag | Process and method for logical-to-physical address mapping using a volatile memory device in solid state disks |
US20100274961A1 (en) | 2009-04-22 | 2010-10-28 | Golla Robert T | Physically-indexed logical map table |
US8732431B2 (en) * | 2011-03-06 | 2014-05-20 | Micron Technology, Inc. | Logical address translation |
US8838937B1 (en) * | 2012-05-23 | 2014-09-16 | Densbits Technologies Ltd. | Methods, systems and computer readable medium for writing and reading data |
US9495288B2 (en) | 2013-01-22 | 2016-11-15 | Seagate Technology Llc | Variable-size flash translation layer |
US9213633B2 (en) * | 2013-04-30 | 2015-12-15 | Seagate Technology Llc | Flash translation layer with lower write amplification |
US9400745B2 (en) | 2013-11-06 | 2016-07-26 | International Business Machines Corporation | Physical address management in solid state memory |
US9229876B2 (en) | 2013-12-17 | 2016-01-05 | Sandisk Technologies Inc. | Method and system for dynamic compression of address tables in a memory |
US9507711B1 (en) * | 2015-05-22 | 2016-11-29 | Sandisk Technologies Llc | Hierarchical FTL mapping optimized for workload |
-
2017
- 2017-07-31 US US15/664,252 patent/US10534718B2/en active Active
-
2018
- 2018-07-27 EP EP18840416.4A patent/EP3662379B1/en active Active
- 2018-07-27 WO PCT/US2018/044000 patent/WO2019027815A1/en unknown
- 2018-07-27 KR KR1020207006016A patent/KR102149817B1/ko active IP Right Grant
- 2018-07-27 CN CN201880049529.9A patent/CN110998550B/zh active Active
-
2020
- 2020-01-10 US US16/739,401 patent/US11232041B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104641356A (zh) * | 2012-09-14 | 2015-05-20 | 美光科技公司 | 地址映射 |
CN104679446A (zh) * | 2013-08-16 | 2015-06-03 | Lsi公司 | 用于使用经分割快闪转变层的方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
EP3662379A1 (en) | 2020-06-10 |
US20190034347A1 (en) | 2019-01-31 |
KR102149817B1 (ko) | 2020-09-01 |
KR20200027045A (ko) | 2020-03-11 |
EP3662379B1 (en) | 2022-09-07 |
CN110998550A (zh) | 2020-04-10 |
EP3662379A4 (en) | 2021-06-02 |
US10534718B2 (en) | 2020-01-14 |
US11232041B2 (en) | 2022-01-25 |
US20200151110A1 (en) | 2020-05-14 |
WO2019027815A1 (en) | 2019-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110998550B (zh) | 存储器寻址 | |
US11055230B2 (en) | Logical to physical mapping | |
US10915475B2 (en) | Methods and apparatus for variable size logical page management based on hot and cold data | |
US8751731B2 (en) | Memory super block allocation | |
US7890550B2 (en) | Flash memory system and garbage collection method thereof | |
JP5649742B2 (ja) | トランザクションログの復元 | |
US10496334B2 (en) | Solid state drive using two-level indirection architecture | |
TW201842444A (zh) | 廢棄項目收集 | |
US7529879B2 (en) | Incremental merge methods and memory systems using the same | |
US20130151759A1 (en) | Storage device and operating method eliminating duplicate data storage | |
CN110955384B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
US10606744B2 (en) | Method for accessing flash memory module and associated flash memory controller and electronic device | |
KR20200019421A (ko) | 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치 | |
TWI785876B (zh) | 映射資訊記錄方法、記憶體控制電路單元與記憶體儲存裝置 | |
US8521946B2 (en) | Semiconductor disk devices and related methods of randomly accessing data | |
US11113205B2 (en) | Die addressing using a reduced size translation table entry | |
JP2022551627A (ja) | 自己適応型ウェアレベリングの方法及びアルゴリズム | |
CN114691534A (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 |