CN108984420B - 管理非易失性存储器(nvm)中的多个名称空间 - Google Patents
管理非易失性存储器(nvm)中的多个名称空间 Download PDFInfo
- Publication number
- CN108984420B CN108984420B CN201810547709.1A CN201810547709A CN108984420B CN 108984420 B CN108984420 B CN 108984420B CN 201810547709 A CN201810547709 A CN 201810547709A CN 108984420 B CN108984420 B CN 108984420B
- Authority
- CN
- China
- Prior art keywords
- mua
- namespace
- nvm
- entry
- address
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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
- 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明题为“管理非易失性存储器(NVM)中的多个名称空间”。本发明公开了用于管理非易失性存储器快速(NVMe)控制器环境中的名称空间的装置和方法。非易失性存储器(NVM)被布置成将映射单元(MU)作为可寻址数据块存储在一个或多个名称空间中。前向映射具有一系列映射单元地址(MUA)条目,这些条目将MU中的每一个与NVM中的物理位置相关联。MUA条目被分组成名称空间中的每一个的紧邻的连续范围。基础MUA阵列识别每个名称空间的起始MUA条目在前向映射内的地址。可以通过将新范围的MUA条目紧接在最后一个MUA条目之后附加到前向映射,并且通过向基础MUA阵列添加新条目来识别新名称空间的起始MUA条目在前向映射内的地址,从而可添加新的名称空间。
Description
发明内容
本发明的各种实施方案通常涉及数据存储设备中的数据管理。
在一些实施方案中,非易失性存储器(NVM)被布置成将映射单元(MU)作为可寻址数据块存储在一个或多个名称空间中。前向映射具有序列映射单元地址(MUA)条目,这些条目将MU中的每一个与NVM中的物理位置相关联。MUA条目被分组成名称空间中的每一个的紧邻的连续范围。基础MUA阵列识别每个名称空间的起始MUA条目在前向映射内的地址。可以通过将新范围的MUA条目紧接在最后一个MUA条目之后附加到前向映射,并且通过向基础MUA阵列添加新条目来识别新名称空间的起始MUA条目在前向映射内的地址,从而添加新的名称空间。
根据以下详细论述和附图,可以理解表征本公开的各种实施方案的这些和其他特征和优点。
附图说明
图1提供了根据本公开的各种实施方案的示例性数据存储设备的功能块表示。
图2示出了根据一些实施方案被配置为固态驱动器(SSD)的图1的数据存储设备的各个方面。
图3示出了在一些实施方案中图2的SSD存储数据的示例性方式。
图4示出了在一些实施方案中由SSD使用的多级映射结构的示例性格式。
图5示出了映射结构的第二级映射(SLM)的示例性格式。
图6示出了映射结构的第一级映射(FLM)的示例性格式。
图7示出了在一些实施方案中被配置为管理SSD的名称空间的NVMe控制器和介质管理层(MML)控制器。
图8是被配置为维持名称空间ID和名称空间HBLA数据的HBLA字段的示例性格式。
图9是用于对图8的数据进行编码的转换表的示例性格式。
图10示出了在一些实施方案中作为数据结构用于访问SSD的前向映射的映射单元地址(MUA)阵列。
图11示出了将新名称空间添加到前向映射。
图12示出了从前向映射中删除名称空间。
图13是用于创建新名称空间例程的流程图。
图14是用于删除现有名称空间例程的流程图。
图15是用于说明根据本公开的各种实施方案执行的步骤的数据处理例程的流程图。
具体实施方式
本公开总体涉及数据存储,并且更具体地讲,涉及用于管理数据存储设备中的名称空间的方法和装置。
非易失性存储器快速(NVMe)规范是最近引入的一种接口标准,用于管理利用外围部件互连快速(PCIe)串行总线配置的数据存储系统中的高速访问。通过提供对本地非易失性存储器(NVM)的直接输入/输出(I/O)访问,NVMe特别针对企业和客户端固态驱动器(SSD)环境进行了优化。NVMe通过支持深层命令队列、简化的命令解码和处理以及强健的的错误报告和处理功能,有助于减少读取和写入操作的延迟。
NVMe标准的一个特征是主机将存储区域指定为单独的名称空间的能力。通常,名称空间被定义为NVM中的可寻址域,其具有已被格式化用于块访问的所选择的数量的存储块。名称空间可以构成SSD的一部分、整个SSD、或跨越多个SSD或其他数据存储设备的多设备存储空间。名称空间ID(NSID)是关联的名称空间(NS)的控制器唯一标识符。主机可以通过指定名称空间、控制器ID和一个或多个块(诸如逻辑块地址即LBA)的关联逻辑地址来访问特定NVM。
尽管可操作为增强在数据存储设备(或一组这样的设备)内的并行数据传输路径,但将SSD或其他设备中的可用NVM细分成多个名称空间给控制器处理对用于定位数据的各种映射结构的更新提出了许多挑战。当将新名称空间添加到现有的设备配置,或从现有的设备配置中删除现有名称空间时,情况尤其如此。
因此,本公开的各种实施方案总体涉及用于管理NVMe控制器环境中的映射数据的装置和方法。如下面所解释的,在一些实施方案中,数据以所选择的大小的可寻址块或映射单元(MU)的形式存储在非易失性存储器(NVM)中。将前向映射作为数据结构维持在存储器中提供映射数据以将MU中的每一个与存储MU的NVM中的物理位置相关联。根据NVMe规范将NVM分成至少一个名称空间。
映射单元地址(MUA)阵列被配置为识别NVM中名称空间中的每一个在前向映射内的起始块地址。为每个添加到NVM的新名称空间的MUA阵列提供新条目,每个新名称空间紧接在先前最近添加的名称空间的最后一个条目之后。
通过从MUA阵列中移除条目并根据需要将现有的指针向下移动到前向映射来删除现有名称空间。这样,前向映射保持连续而没有分裂,使得不需要二级查找表并在向系统添加或删除名称空间时减少其他系统延迟。
从提供数据处理系统100的图1的回顾开始,可以理解各种实施方案的这些和其他特征与优点。系统100包括主机设备102和数据存储设备104。数据存储设备104包括控制器106和存储器模块108。控制器提供最高级通信和控制功能用于向和从存储器模块108中的NVM存储的数据传输。可经由一个或多个PCIe端口来提供在主机设备和数据存储设备之间的数据传输。
尽管不是限制性的,但是对于当前示例,可以设想数据存储设备104是具有如图2一般性阐述的控制器配置110的固态驱动器(SSD)。控制器配置包括前端控制器112、核心控制器114和后端控制器116。前端控制器112执行主机I/F功能,后端控制器116引导使用NVM存储器进行数据传输,并且核心控制器114提供对该设备的最高级控制。
每个控制器112、114和116包括在合适的存储器位置中具有相关联的编程(例如,固件,FW)的单独可编程处理器,以及用以执行数据管理和传输功能的各种硬件元件。这仅仅是对一个实施方案的说明;在其他实施方案中,单个可编程处理器(或少于三个可编程处理器)可被配置为使用合适的存储器位置中的相关联的FW来执行前端过程、核心过程和后端处理中的每一者。还可使用纯粹基于硬件的控制器配置。
控制器118表示由控制器110用作本地存储器的各种形式的易失性和非易失性存储器(例如,SRAM、DDR DRAM、闪存等)。各种数据结构和数据集可由存储器存储,该存储器包括一个或多个映射结构120、用于映射数据和其他控制信息的一个或多个高速缓存122、以及用于在数据传输期间用于主机数据的一个或多个数据缓冲124。非基于处理器的硬件辅助电路126可根据需要由一个或多个控制器实现某些存储器管理任务的卸载。
图3提供了在一些实施方案中将主机数据(例如,用户数据)存储到SSD NVM的一般方式的示意性概览。被称为扇区或逻辑块地址(LBA)128的固定大小数据块由主机设备提供以存储到NVM。LBA 128各自具有固定数量的用户数据(扇区大小),诸如512字节(B)、1024B(1KB)、2048B(2KB)等。
应该认识到,术语“LBA”有些模棱两可;在不同情况下,通常使用术语LBA来指整个数据块、块的用户数据部分和/或块的逻辑地址。为了使本讨论更清楚,术语LBA将表示块(内容),并且术语LBA ID、HLBA(主机LBA)或名称空间HLBA将指与关联块相关联的逻辑地址。HBLA值由利用各种访问命令来传输数据的主机提供,通常范围从最小值(例如,HBLA 0)到最大值(HBLA N)。
LBA 128有时也称为可寻址单元(AU),它们被一起分组成被称为映射单元(MU)130的较大数据块,以实现较大总体固定扇区大小诸如4096B(4KB)的用户数据。例如,使用1KB的AU大小将导致四个这样的AU组合形成4KB的MU。在一些实施方案中,可以将两个512B扇区(LBA)组合成1KB的单个AU,然后可以使用四个AU来形成4KB MU。因素包括主机使用的优选的块大小以及由SSD 104维持的各种控制信息的粒度级别。给定MU中的HLBA通常是连续的,尽管这不是必需的。可以在本地数据缓冲存储器126中累积LBA的数据内容,直到可以形成完整的MU。
一旦形成MU,执行传输操作以将MU 130传输到NVM,诸如NAND闪存存储器的擦除块134中的所选择的页面(行)132。MU 130表示写入NVM 104或从NVM 104读取的存储器的最小单元。如果为给定MU130中的部分LBA/AU提供读取请求,MU将被检索并解码,并且SSD将所请求的数据部分转发给主机。
而图3示出了大小为4KB的MU的管理,这仅仅是示例性的而不是限制性的。可使用其他大小。控制数据的附加字节将被写入NVM中的页面132或以其他方式与NVM中的页面132相关联。在一个实施方案中,每个页面具有附加的一组存储器1872B以适应与4KB用户数据相关联的各种类型的控制数据,诸如LDPC(低密度奇偶码)值、逻辑值、名称空间信息等。
图4示出了可用于跟踪NVM中的各种MU 130的位置的多级映射140。映射140示出为具有第一级映射142和第二级映射144的多级映射。这仅仅是为了举例说明的目的且为非限制性的,因为可以容易地使用其他映射结构,包括单级映射或具有多于两级的多级映射。
图5示出了第二级映射(SLM)144的示例性布置。SLM 144由多个第二级映射条目145(SLME或条目)组成,这些条目描述了驻留在NVM中或可写入NVM的用户数据的各个块(例如,MU 130)。即使某些逻辑地址尚未使用或当前未使用,SLM 144也描述了NVM可容纳的块的逻辑地址的全部可能范围。
每个条目145包括多个字段,包括物理块地址字段146、偏移字段148和状态字段150。可使用其他格式。相关联的HBLA值(或从HBLA值导出的值)被用作条目145中的索引。
如上所述,在典型的闪存阵列布置中,MU被布置为在特定擦除块中沿着闪存存储器单元的行写入的页面。PBA可以用阵列、芯片、垃圾收集单元(GCU)、擦除块、页面等表示。偏移值可以是沿着所选择的存储器页面的位偏移。状态值可指示相关联的块的状态(例如,有效、无效、空等)。
条目组145可被布置成较大的数据集,本文称为映射页面152。在每个映射页面中提供了一些所选择的数量的条目(由变量A表示)。在这种情况下,每个映射页面152总共具有100个条目。条目的其他分组可以在每个页面中进行,包括2的幂数。
因此第二级映射(SLM)144构成了系统中所有映射页面152的布置。可以设想,为了描述SSD的总存储容量,将需要一些大总数的映射页面B。每个映射页面具有关联的映射ID值,在本文中也被称为映射单元地址(MUA)。MUA可以从0到B范围内的连续。SLM 144被存储在NAND闪存NVM中,但该SLM将可能在各种芯片的不同组上写入而不是在闪存内的中央位置。
图6示出了来自图4的第一级映射(FLM)142的布置。FLM 142使得SSD能够定位存储在闪存中的各种映射页面152。为此,FLM 142由第一级映射条目165(FLME或条目)组成。每个FLME 165具有PBA字段166、偏移字段168和状态字段170。上面讨论的映射页面ID(MUA)被用作FLM140的索引以定位相关联的条目。
字段166中的PBA描述了相关联的映射页面的位置。偏移值像之前一样作为位偏移沿着特定页面或其他位置操作。状态值可与第二级映射中的相同,或者可根据需要与映射页面本身的状态相关。如上所述,MUA被用作数据结构的索引来定位相关条目。
第一级映射(FLM)142构成了从条目0到条目C的所有条目162的布置。在一些情况下,B将等于C,尽管这些值可能不同。访问FLM 142允许搜索在闪存存储器118内期望的映射页面的位置的MUA。从闪存中检索期望的映射页面将在该映射页面中提供第二级映射条目,然后可基于相关联的第二级条目中的PBA信息来识别并检索各个LBA。因此第一级映射142可以被认为是前向映射,使得能够检索与期望的MU相关联的关联映射页面。
图7示出了根据一些实施方案的SSD 104的另外的方面。NVMe(非易失性存储器快速)控制器202与介质管理层(MML)控制器204通信,以将数据在NVM之间来回传输,NVM在这种情况下被识别为NAND闪存存储器206。可以设想,NVMe控制器204将形成核心控制器114的一部分,并且MML控制器204将形成图2中的后端控制器116的一部分,但也可以使用其他布置。
根据NVMe标准,NAND闪存206的可用于存储数据块(MU 130)的那部分被划分成多个名称空间208。两个这样的示例性名称空间被识别为名称空间(NS)A和NS B。每个名称空间具有相关联的块存储容量总量。经由PCIe接口协议的数据传输包括来自主机的指示HBLA值的值,数据将被存储到其中/从中检索的名称空间,以及与NVMe控制器202相关联的名称空间控制器ID。
为了便于高效管理名称空间208,MML控制器204利用本地存储器中的某些数据结构,包括HBLA-NS转换表210、前向映射212和MUA阵列214。这些中的每一个将依次讨论。
作为该名称空间管理方案的一部分,修改写入到NAND闪存206的每个AU的控制数据部分以存储与该数据相关联的名称空间ID值。为此,将64位HBLA字段220结合到每个AU的1872B数据中,如图8所示。字段220由从0到7编号的八(8)个8位(1B)块222表示。
64位字段的低32位(例如,字节0至3)构成主机提供的HLBA值(名称空间HBLA)。高32位(例如,字节7)的MSB被设置为关联数据的名称空间ID。剩余的3个字节(例如,字节4至6)当前在本实施方案中被保留,但可以根据需要使用,诸如在名称空间、HLBA或其他控制信息需要更多位的系统中。
使用HBLA-NS转换表210,由MML控制器204或在该控制器的指导下将名称空间ID编码到HBLA字段220中。图8示出了一些实施方案中表210的布置。可以根据需要使用其他形式。
将控制器HLBA值解码为名称空间ID和名称空间HLBA仅在MML控制器204内或由该MML控制器执行。后续使用这两个值来计算给定的MUA(例如,到前向映射中的索引),如下所述。此计算在服务于主机读取/写入操作期间以及在上电时的元数据恢复期间以及垃圾收集操作期间执行,以重新定位有效数据并擦除擦除块以重新分配。
图10更详细地示出了根据一些实施方案的来自图7的MUA阵列212和前向映射214。总共可容纳四(4)个名称空间(NS 1到NS 4),而当前仅分配三个(3)名称空间,如NS 1、2和4所示。前向映射214从MUA 0(最低MUA值或底部地址)到MUA N-1(最高MUA值或顶部地址)进行布置。NS 1、2和4的相应名称空间范围分别在224、226和228处识别。框230表示在该映射内未使用的MUA范围。名称空间范围中的每一个在形成该名称空间时都具有不同的总数据块(MU)容量。每个名称空间的HLBA值可以从HBLA 0运行到该名称空间的最大块值。
从图10中可以看出,NAND闪存中的名称空间由前向映射214中的连续(contiguousand consecutive)MUA范围来描述。MML控制器206将MUA阵列212定义为名称空间基础MUA值232阵列,每个值被称为相应名称空间ID范围的基础MUA。每个基础MUA是到阵列212中的索引,并且因此获得特定MUA只需定位相关联名称空间的基础MUA和递增。存储给定MU的MUA是通过将名称空间HLBA添加到基础MUA阵列的与该名称空间ID相对应的元素中的值而获得的。例如,要在NS 4中定位所选择的MUA,可以将其确定为:
所选择的MUA=NS 4第一个MUA地址+HLBA(1)
因为HLBA的位置可能会由于名称空间删除而在前向映射中更改,所以页脚条目不包括绝对MUA值。换句话讲,在HLBA和MUA值之间维持相对而非静态的对应关系。因此,如果使用的话,页脚条目应包括完整的64位HLBA字段220(图8)以确保系统始终可以定位参考相关联MU数据的前向映射MUA。
图11示出了图10的MUA阵列212和前向映射214,其中添加了新名称空间234(NS3)。可以看出,新名称空间234是从下一个可用的MUA开始添加的,在这种情况下,是在第四名称空间228(NS 4)中的最后一个MUA之后的下一个MUA。NS 3的指针现在识别第三名称空间234的第一个MUA地址。
图12示出了删除第一名称空间224(NS 1)之后图12的MUA阵列212和前向映射214。第二名称空间226(NS 2)保持如先前那样,但第四名称空间228(NS 4)和第三名称空间234(NS 3)各自向下移动以维持连续性并防止在映射214内的碎片化。NS 1的状态已被设置为无效。
这样,NS4的起始MUA条目已经向下移动,以对应于先前由(已移除的)NS 1的起始MUA条目占用的中间地址。NS 4的相应基础MUA条目(指针)232现在指向该中间地址(例如,先前由NS 1的第一条目占用的条目)。调整指针以继续指向映射页面的物理存储器中的位置。
为了以这种方式支持多个名称空间,可能需要对NVMe命令集进行许多接口更改,如表I所例示。
表I.
NVMe控制器202将针对不活动或附加的名称空间阻止对MML控制器204的I/O命令。NVMe控制器将立即为这些命令返回错误,并且MML控制器不会看到主机请求。NVMe控制器202还将实现对名称空间附加命令的支持,该命令实现名称空间的附加和分离两者。MML控制器204将不会看到这些命令,因为它们只是启用或禁止从给定端口对该名称空间的访问。
在初始格式化SSD 104时,将只会定义第一名称空间(NS 1),并且该名称空间将扩展到NVM(NAND闪存206)的整个数据容量。基础MUA阵列212将在EB文件内与其他主要MML表格一起生成,并且EB文件保存操作将随着名称空间的任何创建或删除而被触发。应当理解,MML控制器204将要求用于从NVMe控制器202发送的后续名称空间创建和名称空间删除命令的句柄。
图13示出了创建新名称空间例程300的流程图,其大体上说明了为了将新名称空间添加到现有NVM而执行的步骤。可以设想,对新名称空间的请求将始于主机级别,尽管这不是必需的。
在步骤302定义新名称空间的特征,其将包括要包含在该新名称空间内的块的总数(例如,大小)。在步骤304,更新基础MUA阵列212以反映新添加的名称空间,以及指向前向映射214中的下一个可用MUA的指针。在步骤306,将前向映射的完整副本保存到NVM,并且该例程在步骤308结束。
这样,新名称空间创建通常需要以下操作,按以下顺序:更新正在使用前向映射上的下一个可用MUA创建的名称空间的基础MUA阵列212元素,随后触发完整前向映射/EB文件表保存。
图14示出了删除现有名称空间例程320的流程图。如前所述,可以设想,删除现有名称空间的请求将始于主机级别,尽管这不是必需的。
在步骤322,在删除名称空间之前修整或者处理驻留在本地存储器中的所有现有LBA以便将其写入NVM。接下来,步骤324向下移动所删除的名称空间上方的所有前向映射条目,如上面在图12中所讨论的。在步骤326,将不再使用的所有条目的前向映射条目状态设置为未管理状态。
在步骤328,更新基础MUA阵列212以将删除的名称空间显示为无效,并且根据需要更新新的基础值以指向前向映射中的新的开始位置。最后,在步骤330保存映射的完整副本,并且该例程在步骤332结束。
这样,删除现有名称空间通常需要以下操作,按以下次序:修整要删除的名称空间中的所有控制器LBA;使用DMA电路(诸如图2的硬件辅助管理器120)将被删除的名称空间上方的名称空间中的所有前向映射条目向下移动到被删除的名称空间的基础MUA;将由于名称空间删除而不再使用的所有前向映射条目的前向映射条目状态设置为未映射;通过将删除的名称空间的条目设置为无效值以及将所有已移动的名称空间的条目设置到其相应新位置,来更新基础MUA阵列212;并且触发完整前向映射/EB文件表保存。
作用于名称空间HLBA或名称空间HLBA范围的NVMe命令也需要使MML控制器206将HLBA转换为MUA值。这些命令包括格式化、修整、释放、写入零和数据集管理。对于格式化命令的情况,只会释放目标名称空间中的HLBA。如果NVMe控制器202请求格式化所有名称空间,则MML控制器206将通过循环通过所有已定义的名称空间来这样做。
图15是数据处理例程350的流程图,该例程一般表示由SSD 104在NVM 206具有多个名称空间的情况下在该NVM和主机设备102之间执行传输数据的步骤,如上面在图7和图10至12中所讨论的。可使用其他序列。
在步骤352,经由PCIe端口从主机设备102接收主机访问命令,诸如但不限于数据读取命令。在步骤354,在由前端控制器112进行初始处理之后,MVMe控制器202可以操作以针对与命令相关联的数据相关联的一个或多个所选择的映射页面发出查找命令。
在步骤356,该命令被转发到MML控制器206,MML控制器识别名称空间ID和HLBA元素,并且在步骤358,将这些元素与基础MUA阵列212结合使用来在前向映射内定位所选择的MUA。一旦被检索,在步骤360,映射页面就被用于定位在物理存储器(例如,页面132)内的数据,并且诸如通过回读、处理并将所请求的数据返回给主机来服务该命令,在此之后,该例程在步骤362结束。
本文阐述的各种实施方案的优点包括以这样的事实:HBLA-NS名称空间表210允许元数据在NVM中以及在相应控制器进行的处理期间是唯一的。由于前向映射被划分成HLBA连续名称空间,因此前向映射214的维持的连续性移除了考虑在映射内的分段部分而对二次查找操作的需要。另一个优点是在很大程度上避免了快速路径延迟效应。通常只有在名称空间删除操作中才会遇到延迟,其中针对已移除的名称空间将前向映射进行了压缩。在一些情况下,即使在此操作期间,可允许在一些情况下访问未受影响的名称空间,诸如图12中未经历重新计算的第二名称空间(NS 2)。
尽管各种实施方案已经设想了具有闪存存储器的固态驱动器(SSD)的环境,但是可以容易地使用其他配置,包括不同形式的存储器,不同数量的设备等。
应当理解,尽管在前面的描述中已经阐述了本公开的各种实施方案的诸多特征和优点以及本公开的各种实施方案的结构和功能的细节,但是该具体实施方式仅仅是说明性的,并且可以在由所附权利要求所表达的术语的广泛一般含义所指示的全部范围内对细节进行修改,尤其是在本公开的原理内的部件的结构和布置方面的改变。
Claims (20)
1.一种用于管理存储器的装置,包括:
非易失性存储器(NVM),所述非易失性存储器被配置为存储映射单元(MU),所述映射单元包括在NVM中的至少一个名称空间内的具有所选择的大小的用户数据的可寻址块;
非易失性存储器快速(NVMe)控制器电路,所述非易失性存储器快速控制器电路被配置为经由至少一个外围部件互连快速(PCIe)端口与主机设备交互以在所述主机设备与所述NVM之间传输所述MU;
前向映射,所述前向映射作为数据结构存储在本地存储器中,所述前向映射包括将所述MU中的每一个与存储所述MU的所述NVM中的物理位置相关联的映射单元地址(MUA)条目,所述MUA条目从最低地址到最高地址顺序布置在前向表内并且被分组到用于所述NVM中的所述至少一个名称空间中的每一个的紧邻的连续范围中;
基础MUA阵列,所述基础MUA阵列作为数据结构存储在所述本地存储器中,所述基础MUA阵列被配置为在所述前向映射内识别所述NVM中的所述至少一个名称空间中的每一个的起始MUA条目的地址;以及
介质管理层(MML)控制器电路,所述介质管理层控制器电路被配置为通过将新范围的所述MUA条目在所述前向映射内紧接在先前最近添加的名称空间的最后一个MUA条目之后附加到所述前向映射,并且通过向所述基础MUA阵列添加新条目来识别新名称空间的所述起始MUA条目在所述前向映射内的所述地址,从而将所述新名称空间添加到所述NVM。
2.根据权利要求1所述的装置,其中所述NVM中的第一名称空间具有与所述前向映射中的所述最低地址对应的起始MUA条目和在所述前向映射中的第一中间地址处的结束MUA条目,并且所述NVM中的第二名称空间具有在紧邻所述前向映射中的所述第一中间地址的第二中间地址处的起始MUA条目。
3.根据权利要求1所述的装置,其中所述MML控制器电路还被配置为后续从所述NVM中删除所述先前最近添加的名称空间,通过移除所述基础MUA阵列中识别在所述前向映射内所述先前最近添加的名称空间的所述起始MUA条目的第一中间地址的对应条目,通过将所述MUA条目的相关联范围向下移动使得所述新名称空间的所述起始MUA条目对应于在所述前向映射内的所述第一中间地址,以及通过修改所述基础MUA阵列使得与所述新名称空间相关联的所述条目识别所述前向映射中的所述第一中间地址。
4.根据权利要求1所述的装置,其中所述MML控制器电路还被配置为通过识别与从所述NVMe控制器电路接收到的挂起主机命令相关联的所选择的名称空间来服务所述挂起主机命令,访问所述基础MUA阵列以在所述前向映射内定位所选择的名称空间的所述起始MUA条目的所述地址,通过响应于与所述挂起主机命令相关联的逻辑地址从所选择的命名空间的所述起始MUA条目递增多个条目来定位在所述前向映射内与所述挂起主机命令相关联的所述相关联MUA条目,并且使用所述相关联MUA条目来识别向其中写入数据或者从中检索数据的在所述NVM内的物理位置以完成所述挂起主机命令的所述服务。
5.根据权利要求1所述的装置,还包括作为数据结构存储在所述本地存储器中的转换表,其中所述MML控制器电路为将从所述NVMe控制器接收到的MU附加在与所述MU相关联的所述NVM内的所选择的名称空间的名称空间ID值。
6.根据权利要求5所述的装置,其中所述MML控制器电路还将从所述NVMe控制器接收的所述MU附加与所述MU相关联的逻辑地址。
7.根据权利要求6所述的装置,并且其中所述MML控制器电路响应于来自所述转换表的所述名称空间ID访问所述基础MUA阵列并且从与所述名称空间ID相关联的所述基础MUA条目递增对应于来自所述转换表的所述逻辑地址的距离。
8.根据权利要求1所述的装置,其中使用至少一个可编程处理器和存储在处理器存储器中并由所述相关联的至少一个可编程处理器执行的相关联编程来实现所述NVMe控制器电路和所述MML控制器电路。
9.根据权利要求1所述的装置,其中每个MU被配置为存储来自所述主机设备的4096字节(B)的用户数据,并且由来自所述主机设备的多个数据块形成,每个数据块具有被所述MML控制器电路附加到所述MU的单独逻辑地址。
10.根据权利要求1所述的装置,表征为固态驱动器(SSD),其中所述NVM包括NAND闪存存储器。
11.一种用于管理存储器的方法,包括:
将非易失性存储器(NVM)布置到一个或多个名称空间中,每个名称空间被配置为非易失性存储器快速(NVMe)名称空间以存储映射单元(MU),所述映射单元包括来自主机设备的所选择的大小的用户数据的可寻址块;
将前向映射作为数据结构存储在本地存储器中,所述前向映射包括将所述MU中的每一个与存储所述MU的所述NVM中的物理位置相关联的映射单元地址(MUA)条目,所述MUA条目从最低地址到最高地址顺序布置在前向表内并且被分组到用于所述NVM中的所述至少一个名称空间中的每一个的紧邻的连续范围中;
生成在所述本地存储器中的作为数据结构的基础MUA阵列,所述基础MUA阵列在所述前向映射内识别所述NVM中的所述一个或多个名称空间中的每一个的起始MUA条目的所述地址;并且
通过将新范围的所述MUA条目在所述前向映射内紧接在先前最近添加的名称空间的最后一个MUA条目之后附加到所述前向映射,并且通过向所述基础MUA阵列添加新条目来识别新名称空间的所述起始MUA条目在所述前向映射内的所述地址,从而将所述新名称空间添加到所述NVM。
12.根据权利要求11所述的方法,还包括使用所述前向映射和所述基础MUA阵列在所述主机设备和所述新名称空间NVM之间传输所选择的MU的后续步骤。
13.根据权利要求11所述的方法,其中所述添加步骤由介质管理层(MML)控制器电路执行,所述介质管理层控制器电路被配置为响应于从NVMe控制器电路接收的命令而引导与所述NVM的数据传输。
14.根据权利要求13所述的方法,其中使用至少一个可编程处理器和存储在处理器存储器中并由所述相关联的至少一个可编程处理器执行的相关联编程来实现所述NVMe控制器电路和所述MML控制器电路。
15.根据权利要求11所述的方法,其中所述NVM中的第一名称空间具有与所述前向映射中的所述最低地址对应的起始MUA条目和在所述前向映射中的第一中间地址处的结束MUA条目,并且所述NVM中的第二名称空间具有在紧邻所述前向映射中的所述第一中间地址的第二中间地址处的起始MUA条目。
16.根据权利要求11所述的方法,还包括通过以下操作从所述NVM删除所述先前最近添加的名称空间的后续步骤:
移除所述基础MUA阵列中在所述前向映射内识别所述先前最近添加的名称空间的所述起始MUA条目的第一中间地址的对应将所述MUA条目的所述相关联范围向下移动,使得所述新名称空间的所述起始MUA条目对应于在所述前向映射内的所述第一中间地址;并且
修改所述基础MUA阵列,使得与所述新名称空间相关联的所述条目识别所述前向映射中的所述第一中间地址。
17.根据权利要求11所述的方法,还包括通过以下操作来服务从所述主机设备接收的挂起主机命令的后续步骤:
识别与所述挂起主机命令相关联的所选择的名称空间;
访问所述基础MUA阵列以在所述前向映射内定位所选择的名称空间的所述起始MUA条目的所述地址;
通过响应于与所述挂起主机命令相关联的逻辑地址从所选择的名称空间的所述起始MUA条目递增多个条目,在所述前向映射内定位与所述挂起主机命令相关联的所述相关联MUA条目;并且
使用所述相关联MUA条目来识别向其中写入数据或从中检索数据的在所述NVM内的物理位置以完成所述挂起主机命令的所述服务。
18.根据权利要求11所述的方法,还包括使用作为数据结构存储在所述本地存储器中的转换表来将所接收的用于存储的所选择的MU附加到具有与所述MU相关联的在所述NVM内的所选择的名称空间的名称空间ID值的所述NVM。
19.根据权利要求18所述的方法,还包括使用所述转换表来进一步附加具有与所述MU相关联的逻辑地址的所选择的MU。
20.根据权利要求19所述的方法,还包括:
响应于来自所述转换表的所述名称空间ID访问所述基础MUA阵列,以在所述前向映射内定位所选择的名称空间的所述基础MUA条目;并且
从所选择的映射的所述基础MUA条目递增对应于来自所述转换表的所述逻辑地址的多个MUA条目。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/609,758 US10275361B2 (en) | 2017-05-31 | 2017-05-31 | Managing multiple namespaces in a non-volatile memory (NVM) |
US15/609,758 | 2017-05-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108984420A CN108984420A (zh) | 2018-12-11 |
CN108984420B true CN108984420B (zh) | 2023-07-07 |
Family
ID=64458272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810547709.1A Active CN108984420B (zh) | 2017-05-31 | 2018-05-31 | 管理非易失性存储器(nvm)中的多个名称空间 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10275361B2 (zh) |
JP (1) | JP2018206384A (zh) |
KR (1) | KR102042643B1 (zh) |
CN (1) | CN108984420B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10503404B2 (en) * | 2017-10-23 | 2019-12-10 | Micron Technology, Inc. | Namespace management in non-volatile memory devices |
KR102503177B1 (ko) * | 2018-03-05 | 2023-02-24 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US11656992B2 (en) | 2019-05-03 | 2023-05-23 | Western Digital Technologies, Inc. | Distributed cache with in-network prefetch |
CN112114738B (zh) * | 2019-06-20 | 2024-02-20 | 杭州海康威视数字技术股份有限公司 | 一种存储数据的方法及存储设备 |
CN110515561B (zh) * | 2019-08-27 | 2022-09-16 | 江苏华存电子科技有限公司 | 一种适用于NVMe命名空间下双接口位址硬体架构 |
KR20210066559A (ko) | 2019-11-28 | 2021-06-07 | 에스케이하이닉스 주식회사 | 컨트롤러 및 이를 포함하는 메모리 시스템 |
US11087846B1 (en) | 2020-02-12 | 2021-08-10 | SK Hynix Inc. | Memory system with single decoder, multiple memory sets and method for decoding multiple codewords from memory sets using the single decoder |
US11941458B2 (en) | 2020-03-10 | 2024-03-26 | Sk Hynix Nand Product Solutions Corp. | Maintaining storage namespace identifiers for live virtualized execution environment migration |
US11765250B2 (en) | 2020-06-26 | 2023-09-19 | Western Digital Technologies, Inc. | Devices and methods for managing network traffic for a distributed cache |
US11675706B2 (en) | 2020-06-30 | 2023-06-13 | Western Digital Technologies, Inc. | Devices and methods for failure detection and recovery for a distributed cache |
US11736417B2 (en) | 2020-08-17 | 2023-08-22 | Western Digital Technologies, Inc. | Devices and methods for network message sequencing |
US11455124B2 (en) * | 2020-10-09 | 2022-09-27 | Western Digital Technologies, Inc. | Command prioritization to reduce latencies of zone commands |
US12088470B2 (en) * | 2020-12-18 | 2024-09-10 | Western Digital Technologies, Inc. | Management of non-volatile memory express nodes |
US11586372B2 (en) | 2021-07-01 | 2023-02-21 | Samsung Electronics Co., Ltd. | Use of copy location to selectively set or selectively clear bits of metadata during live migration |
CN114265554B (zh) * | 2021-12-22 | 2023-08-15 | 苏州浪潮智能科技有限公司 | Nvme限定名映射方法、计算机设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102598019A (zh) * | 2009-09-09 | 2012-07-18 | 弗森-艾奥公司 | 用于分配存储的设备、系统和方法 |
CN102855193A (zh) * | 2011-06-03 | 2013-01-02 | 苹果公司 | 非易失性存储系统中未使用的逻辑地址的挂载时去映射 |
CN103765371A (zh) * | 2011-08-26 | 2014-04-30 | 威睿公司 | 导出作为存储对象的逻辑卷的数据存储系统 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9690694B2 (en) * | 2011-09-27 | 2017-06-27 | Sandisk Technologies, Llc | Apparatus, system, and method for an address translation layer |
US9454474B2 (en) * | 2013-03-05 | 2016-09-27 | Western Digital Technologies, Inc. | Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive |
US9003071B2 (en) | 2013-03-13 | 2015-04-07 | Futurewei Technologies, Inc. | Namespace access control in NVM express PCIe NVM with SR-IOV |
US9430412B2 (en) * | 2013-06-26 | 2016-08-30 | Cnex Labs, Inc. | NVM express controller for remote access of memory and I/O over Ethernet-type networks |
US9292379B2 (en) * | 2013-09-28 | 2016-03-22 | Intel Corporation | Apparatus and method to manage high capacity storage devices |
US9501245B2 (en) | 2014-05-02 | 2016-11-22 | Cavium, Inc. | Systems and methods for NVMe controller virtualization to support multiple virtual machines running on a host |
US9430268B2 (en) * | 2014-05-02 | 2016-08-30 | Cavium, Inc. | Systems and methods for supporting migration of virtual machines accessing remote storage devices over network via NVMe controllers |
US9294567B2 (en) | 2014-05-02 | 2016-03-22 | Cavium, Inc. | Systems and methods for enabling access to extensible storage devices over a network as local storage via NVME controller |
US20170228173A9 (en) * | 2014-05-02 | 2017-08-10 | Cavium, Inc. | Systems and methods for enabling local caching for remote storage devices over a network via nvme controller |
US9384093B1 (en) | 2014-05-28 | 2016-07-05 | Microsemi Storage Solutions (U.S.), Inc. | Raid enabled NVME device |
US20160342463A1 (en) | 2015-05-20 | 2016-11-24 | Kabushiki Kaisha Toshiba | Data protection in a namespace |
JP6441171B2 (ja) * | 2015-06-12 | 2018-12-19 | 東芝メモリ株式会社 | メモリシステム |
-
2017
- 2017-05-31 US US15/609,758 patent/US10275361B2/en active Active
-
2018
- 2018-05-30 JP JP2018103504A patent/JP2018206384A/ja active Pending
- 2018-05-30 KR KR1020180062017A patent/KR102042643B1/ko active IP Right Grant
- 2018-05-31 CN CN201810547709.1A patent/CN108984420B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102598019A (zh) * | 2009-09-09 | 2012-07-18 | 弗森-艾奥公司 | 用于分配存储的设备、系统和方法 |
CN102855193A (zh) * | 2011-06-03 | 2013-01-02 | 苹果公司 | 非易失性存储系统中未使用的逻辑地址的挂载时去映射 |
CN103765371A (zh) * | 2011-08-26 | 2014-04-30 | 威睿公司 | 导出作为存储对象的逻辑卷的数据存储系统 |
Also Published As
Publication number | Publication date |
---|---|
KR20180131475A (ko) | 2018-12-10 |
US20180349285A1 (en) | 2018-12-06 |
KR102042643B1 (ko) | 2019-12-02 |
CN108984420A (zh) | 2018-12-11 |
US10275361B2 (en) | 2019-04-30 |
JP2018206384A (ja) | 2018-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108984420B (zh) | 管理非易失性存储器(nvm)中的多个名称空间 | |
KR102603070B1 (ko) | 메모리 시스템, 메모리 시스템에 데이터를 기록하는 방법 및 메모리 시스템으로부터 데이터를 판독하는 방법 | |
US10445246B2 (en) | Memory system and method for controlling nonvolatile memory | |
US11232041B2 (en) | Memory addressing | |
US11782632B2 (en) | Selective erasure of data in a SSD | |
US20130250686A1 (en) | Semiconductor memory device, information processing system and control method | |
US10956071B2 (en) | Container key value store for data storage devices | |
US20150186259A1 (en) | Method and apparatus for storing data in non-volatile memory | |
US11200159B2 (en) | System and method for facilitating efficient utilization of NAND flash memory | |
US9152350B2 (en) | Semiconductor memory device controlling write or read process | |
US9164704B2 (en) | Semiconductor storage device for handling write to nonvolatile memories with data smaller than a threshold | |
US20190391756A1 (en) | Data storage device and cache-diversion method thereof | |
CN108027764B (zh) | 可转换的叶的存储器映射 | |
CN108614668B (zh) | 基于kv模型的数据访问方法与固态存储设备 | |
CN112463647A (zh) | 使用散列来减小前向映射表的大小 | |
US11449270B2 (en) | Address translation method and system for KV storage device | |
CN108628762B (zh) | 一种固态存储设备及其处理io命令的方法 | |
CN108614671B (zh) | 基于命名空间的键-数据访问方法与固态存储设备 | |
CN110968527A (zh) | Ftl提供的缓存 | |
CN110968520B (zh) | 基于统一缓存架构的多流存储设备 | |
CN108614669B (zh) | 解决哈希冲突的键-数据访问方法与固态存储设备 | |
TW201624491A (zh) | 資訊處理裝置及非暫態電腦可讀取記錄媒體 | |
US11934264B2 (en) | ECC parity biasing for Key-Value data storage devices | |
KR20230096359A (ko) | LSM-tree 및 근사 인덱싱에 기반한 FTL을 이용하는 SSD 장치 및 그 동작 방법 | |
CN117891392A (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 |