CN111344683B - 非易失性存储器装置中的命名空间分配 - Google Patents
非易失性存储器装置中的命名空间分配 Download PDFInfo
- Publication number
- CN111344683B CN111344683B CN201880073117.9A CN201880073117A CN111344683B CN 111344683 B CN111344683 B CN 111344683B CN 201880073117 A CN201880073117 A CN 201880073117A CN 111344683 B CN111344683 B CN 111344683B
- Authority
- CN
- China
- Prior art keywords
- namespace
- block
- blocks
- free
- partial
- 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
- 238000003860 storage Methods 0.000 claims abstract description 164
- 230000015654 memory Effects 0.000 claims abstract description 81
- 230000004044 response Effects 0.000 claims abstract description 23
- 238000000034 method Methods 0.000 claims description 64
- 239000007787 solid Substances 0.000 claims description 8
- 238000013507 mapping Methods 0.000 description 33
- 238000007726 management method Methods 0.000 description 20
- 238000004891 communication Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 11
- 238000013519 translation Methods 0.000 description 9
- 230000014616 translation Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 4
- 238000013467 fragmentation Methods 0.000 description 4
- 238000006062 fragmentation reaction Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 239000000696 magnetic material Substances 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000010223 real-time analysis Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1056—Simplification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种计算机存储装置,其具有主机接口、控制器、非易失性存储媒体及固件。所述固件指示所述控制器:经由所述主机接口接收来自主机的用于分配一定量的非易失性存储器的命名空间的请求;响应于所述请求而产生命名空间映射,所述命名空间映射识别:地址的多个块,其具有相同预定块大小;以及地址的部分块,其大小小于预定块大小;以及使用所述命名空间映射,将从所述主机传送的命名空间中的逻辑地址转换为所述一定量的非易失性存储器的物理地址。例如,用于分配命名空间的请求可以根据NVMe协议。
Description
相关申请案
本申请案主张2017年10月23日申请且标题为“非易失性存储器装置中的命名空间分配(Namespaces Allocation in Non-Volatile Memory Devices)”的第15/790,882号非临时美国专利申请案的申请日期的权益,所述申请案的全部公开内容特此以引用的方式并入本文中。
技术领域
本发明公开的至少一些实施例大体上涉及计算机存储装置,并且更具体地但不限于非易失性存储装置中的命名空间分配(namespace allocation)。
背景技术
典型的计算机存储装置例如硬盘驱动器(HDD)、固态硬盘(SSD)及混合式磁盘机具有从主计算机(host computer)接收数据存取请求并执行程序化的运算任务以便以如下方式实施所述请求的控制器:可以特定于存储装置中配置的媒体及结构,例如在硬盘驱动器中涂覆有磁性材料的刚性旋转盘、具有固态硬盘中的存储器单元的集成电路以及混合式磁盘机中的两者。
标准化逻辑装置接口协议允许主计算机以独立于存储装置的特定媒体实施的方式寻址计算机存储装置。
例如,非易失性存储器主机控制器接口规范(NVMHCI)、也被称为NVM Express(NVMe),指定用于经由外围组件互连高速(PCI Express或PCIe)总线存取非易失性存储装置的逻辑装置接口协议。
附图说明
实施例通过实例展示,而不局限于附图的视图中,其中相同的附图标记指示类似的元件。
图1展示其中可以实施本文公开的发明的实施例的计算机系统。
图2展示根据所请求的命名空间的大小直接分配多个命名空间的实例。
图3展示经由映射逻辑地址的块来分配命名空间的实例。
图4展示用于命名空间映射的数据结构的实例。
图5展示用于转译非易失性存储器装置中的地址以支持命名空间管理的系统。
图6展示基于逻辑地址的块来管理命名空间的方法。
图7展示命名空间未与块边界对准并且可以使用图8到10的技术来实施的实例图。
图8展示用于实施未与块边界对准的命名空间的命名空间映射的实例性框图。
图9展示可用于实施图8的命名空间映射的实例性部分块识别符。
图10展示使用图8的技术来管理可用于命名空间分配的空闲块池的实例数据结构。
图11展示使用部分块来分配命名空间的实例。
图12展示根据一个实施例的在存储装置上分配命名空间的方法。
具体实施方式
本文公开的至少一些实施例提供在存储装置中实施逻辑存储分配及管理的有效且灵活的方式。
存储装置的物理存储器元件可以被布置为经由逻辑块寻址(LBA)而寻址的逻辑存储器块。逻辑存储器块是最小的LBA可寻址存储器单元;并且每个LBA地址识别单个逻辑存储器块,所述逻辑存储器块可以映射到存储装置中的存储器单元的特定物理地址。
存储装置的命名空间的概念类似于用于创建逻辑存储的硬盘驱动器中的分区的概念。存储装置的不同部分可以被分配给不同的命名空间,并且因此可以具有在它们相应的命名空间内彼此独立配置的LBA地址。每个命名空间识别经由LBA可寻址的存储装置的一定量的存储器。可以在不同的命名空间中使用相同的LBA地址来识别存储装置的不同部分中的不同存储器单元。例如,在具有n个存储器单元的存储装置的第一部分上分配的第一命名空间可以具有范围从0到n-1的LBA地址;并且在具有m个存储器单元的存储装置的第二部分上分配的第二命名空间可以具有范围从0到m-1的LBA地址。
存储装置的主计算机可以向存储装置发送用于创建、删除或保留命名空间的请求。在将存储装置的一部分存储容量分配给命名空间之后,相应命名空间中的LBA地址逻辑上表示存储媒体中的特定存储器单元,尽管由命名空间中的LBA地址逻辑地表示的特定存储器单元可以在不同的时间实例下物理地对应于不同的存储器单元(例如,如在SSD中)。
在有效地实施将在多个命名空间中定义的LBA地址映射到存储装置中的物理存储器元件中以及有效地使用存储装置的存储容量方面存在挑战,特别是当期望在存储装置上动态地分配、删除及进一步分配具有不同、变化的大小的多个命名空间时。例如,分配给已删除命名空间的存储容量的部分可能不足以容纳大小上大于已删除命名空间的后续命名空间的分配;并且分配及删除的重复循环可能导致存储容量的碎片化(fragmentation),这可能导致LBA地址到物理地址的低效映射及/或存储装置的成碎片的存储容量的低效使用。
本文公开的本发明的至少一些实施例通过从分配的命名空间中定义的LBA地址到在存储装置的整个存储容量上定义的LBA地址的逐块映射来解决挑战。在将分配的命名空间中定义的LBA地址映射到在存储装置的整个存储容量上定义的LBA地址之后,可以以独立于装置上的命名空间的分配的方式将在存储装置的整个存储容量上定义的对应LBA地址进一步映射到物理存储元件。当LBA地址的逐块映射基于预定大小的块大小时,可以使用有效的数据结构而从分配的命名空间中定义的LBA地址有效地运算在存储装置的整个存储容量上定义的LBA地址。
例如,为了命名空间管理的灵活性及效率,可以根据预定块大小将存储装置的整个存储容量划分为LBA地址的块。块大小表示块中的LBA地址的数量。预定块大小的块在下文中可称为L块、完整L块、完整LBA块、LBA块、或有时简称为完整块或块。从分配的命名空间中定义的LBA地址到在存储装置的整个存储容量上定义的LBA地址的逐块命名空间映射允许将在整个存储上定义的非连续LBA地址分配给命名空间,这可以减少由命名空间分配及删除的循环引起的存储容量的碎片,并且提高存储容量的使用效率。
优选地,L块的块大小是预定并且是二(2)的幂,以简化L块的地址映射中涉及的运算。在其它情况下,可以使用人工智能技术,通过从存储装置及/或其它类似使用的存储装置中的命名空间使用历程中的机器学习来预测或计算优化后的块大小。
为了提高L块的使用效率,这里公开的一个实施例包含用于识别作为完整块的一部分的部分块的数据结构,使得可以以一或多个完整块及一个部分块的形式分配具有不是块大小的倍数的大小的命名空间,以平衡LBA地址映射计算的效率及存储使用效率。
图1展示可以实施本文公开的发明的实施例的计算机系统。
在图1中,主机(101)经由具有预定协议通信通道与存储装置(103)通信。主机(101)可以是具有一或多个中央处理单元(CPU)的计算机,计算机外围装置(例如存储装置(103))可以经由例如计算机总线的互连(例如,外围组件互连(PCI)、PCI扩展(PCI-X)、PCIExpress(PCIe))、通信部分及/或计算机网络而附接到所述主机(101)。
计算机存储装置(103)可用于存储主机(101)的数据。计算机存储装置的实例通常包含硬盘驱动器(HDD)、固态硬盘(SSD)、快闪存储器、动态随机存取存储器、磁带、网络附加存储装置等。存储装置(103)具有主机接口(105),其使用通信通道实施与主机(101)的通信。例如,在一个实施例中,主机(101)及存储装置(103)之间的通信通道是PCIe总线;并且主机(101)及存储装置(103)使用NVMe协议相互通信。
在一些实施方案中,主机(101)与存储装置(103)之间的通信通道包含计算机网络,例如局域网、无线局域网、无线个域网、蜂窝式通信网络、宽频高速始终连接的无线通信连接(例如,当前或下一代行动网络链路);并且主机(101)及存储装置(103)可以被配置为使用类似于NVMe协议中的那些的数据存储管理及使用命令而相互通信。
存储装置(103)具有控制器(107),其运行固件(104)以响应于来自主机(101)的通信执行操作。固件通常是一种计算机程序,其提供对工程运算装置的控制、监视及数据操纵。在图1中,固件(104)在操作存储装置(103)时控制控制器(107)的操作,例如用于存储及存取存储装置(103)中的数据的命名空间的分配,如下面进一步论述的。
存储装置(103)具有非易失性存储媒体(109),例如涂覆在刚性盘上的磁性材料,以及集成电路中的存储器单元。存储媒体(109)是非易失性的,这是因为不需要电力来维持存储在非易失性存储媒体(109)中的数据/信息,在非易失性存储媒体(109)断电并且接着再次通电之后可以检索所述数据/信息。存储器单元可以使用各种存储器/存储技术来实施,例如基于NAND门的快闪存储器、相变存储器(PCM)、磁存储器(MRAM)、电阻式椭机存取存储器及3D XPoint,使得存储媒体(109)是非易失性的并且可以保持存储在其中的数据长达数天、数月及/或数年而无需电力。
存储装置(103)包含易失性动态随机存取存储器(DRAM)(106),用于存储运行时数据(run-time data)及由控制器(107)使用的指令,以改善控制器(107)的运算性能及/或为在主机(101)及非易失性存储媒体(109)之间发射的数据提供缓冲区。DRAM(106)是易失性的,这是因为它需要电力来维持存储在其中的数据/信息,当电力中断时,这些数据/信息立即或快速地丢失。
易失性DRAM(106)通常具有比非易失性存储媒体(109)更少的延迟,但是在移除电力时快速丢失其数据。因此,有利的是使用易失性DRAM(106)将用于控制器(107)的指令及数据临时存储在其当前运算任务中以提高性能。在某些情况下,使用易失性静态随机存取存储器(SRAM)来代替易失性DRAM(106),所述SRAM在一些应用中使用比存储器更少的电力。当非易失性存储媒体(109)具有堪比易失性DRAM(106)的数据存取性能(例如,等待时间、读/写速度)时,可以排除易失性DRAM(106);并且控制器(107)可以通过在非易失性存储媒体(109)上操作指令及数据而不是在易失性DRAM(106)上操作指令及数据来执行运算。
例如,交叉点存储及存储器装置(例如,3D XPoint存储器)具有堪比易失性DRAM(106)的数据存取性能。交叉点存储器装置使用无晶体管存储器元件,每个无晶体管存储器元件具有在一起堆叠为列的存储器单元及选择器。存储器元件列经由两个垂直的导线层连接,其中一个层位于存储器元件列上方,而另一个层位于存储器元件列下方。每个存储器元件可以在两个层中的每一层上的一条导线的交叉点处独立地选择。交叉点存储器装置是快速且非易失性的,并且可以用作用于处理及存储的统一存储器池。
在一些情况下,控制器(107)具有处理器内高速缓冲存储器,其具有比易失性DRAM(106)及/或非易失性存储媒体(109)更好的数据存取性能。因此,优选地在控制器(107)的运算操作期间将当前运算任务中使用的指令及数据的部分快取在控制器(107)的处理器内高速缓冲存储器中。在某些情况下,控制器(107)具有多个处理器,每个处理器具有其自己的处理器内高速缓冲存储器。
任选地,控制器(107)使用在存储装置(103)中组织的数据及/或指令来执行数据密集的存储器内处理。例如,响应于来自主机(101)的请求,控制器(107)对存储在存储装置(103)中的数据的集合执行实时分析,并将减少的数据集作为响应传送给主机(101)。例如,在一些应用中,存储装置(103)连接到实时传感器以存储传感器输入;并且控制器(107)的处理器被配置为基于传感器输入执行机器学习及/或模式识别,以支持至少部分地经由存储装置(103)及/或主机(101)实施的人工智能(AI)系统。
在一些实施方案中,控制器(107)的处理器与计算机芯片制造中的存储器(例如,106或109)积体以使能在存储器中的处理,并且因此克服由于以下原因而限制运算性能的冯诺依曼瓶颈:根据冯诺依曼架构单独配置的处理器及存储器之间的数据移动的延迟引起的吞吐量限制。处理及存储器的积体提高处理速度及存储器发射速率,并减少延迟及电力使用。
存储装置(103)可以用在各种运算系统中,例如云端运算系统、边缘运算系统、雾运算系统及/或独立计算机。在云端运算系统中,远程计算机服务器连接在网络中以存储、管理及处理数据。边缘运算系统通过在靠近数据源的计算机网络的边缘处执行数据处理来优化云端运算,并且因此减少与集中服务器及/或数据存储的数据通信。雾运算系统使用一或多个终端用户装置或近用户边缘装置来存储数据,并且因此减少或消除将数据存储在集中式数据仓库中的需要。
可以使用由控制器(107)执行的计算机指令来实施本文公开的本发明的至少一些实施例,例如固件(104)。在某些情况下,硬件电路可用于实施固件(104)的至少一些功能。固件(104)可以最初存储在非易失性存储媒体(109)或另一个非易失性装置中,并载入到易失性DRAM(106)及/或处理器内高速缓冲存储器中以由控制器(107)执行。
例如,固件(104)可以被配置为使用下面论述的技术来管理命名空间。然而,下面论述的技术不限于用在图1的计算机系统及/或上面论述的实例中。
图2展示根据所请求的命名空间的大小直接分配多个命名空间的实例。
例如,图2的方法可以在图1中展示的存储装置(103)中实施。存储装置(103)的非易失性存储媒体(109)具有可以由LBA地址的范围(222、224、...)识别的存储器单元,其中所述范围对应于非易失性存储媒体(109)的存储器容量(220)。
在图2中,命名空间(221、223)直接从容量(220)的连续可用区域分配。当删除先前分配的命名空间(221、223)之一时,可空闲地分配给另一个命名空间的剩余容量(220)可能变得碎片化,这限制用于选择后续新命名空间的大小的选项。
例如,当删除图2中展示的命名空间(221)并且命名空间(223)仍然在如图2中展示的区域中被分配时,使容量(220)的空闲部分成碎片,将后续新命名空间的大小的选择限制为与命名空间(221)的大小相同或小于命名空间(221)的大小。
为了提高动态命名空间管理的灵活性并支持创建及删除不同大小的命名空间的迭代,可以使用逻辑地址的逐块(block-wise)映射/分配,如下面进一步论述的。
图3展示经由映射逻辑地址的块来分配命名空间的实例。
在图3中,存储装置(103)的容量(220)被划分成L块或在存储装置(103)的整个容量上定义的LBA地址的L块(231、233、...、237、239)。为了提高地址映射的效率,L块(231、233、...、237、239)被设计成具有相同的块大小(133)。优选地,块大小(133)是二(2)的幂,使得涉及块大小(133)的除法、模及乘法的操作可以经由移位操作有效地执行。
在将容量(220)划分为图3中展示的L块(231、233、...、237、239)之后,命名空间(例如,221或223)的分配不必来自容量(220)的连续区域。可以从命名空间(例如,221或223)分配来自容量(220)的非连续区域的L块(231、233、...、237、239)的集合。因此,消除或减少碎片对创建新命名空间中的大小可用性的影响,所述影响可能由于删除所选的先前创建的命名空间而产生。
例如,容量(220)中的非连续L块(233及237)可以通过逐块映射分配给命名空间(221)的连续区域(241及243);并且容量(220)中的非连续L块(231及239)可以经由逐块映射分配给命名空间(223)的连续区域(245及247)。
当块大小(133)减小时,系统在动态命名空间管理中的灵活性增加。然而,减小的块大小(133)还增加要映射的块的数量,这降低地址映射中的运算效率。最佳块大小(133)平衡灵活性及效率之间的权衡;并且可以为特定运算环境中的给定存储装置(103)的特定用途而选择特定块大小(133)。
图4展示用于命名空间映射的数据结构的实例。
例如,图4的命名空间映射的数据结构可用于实施图3中展示的逐块地址映射。图4的数据结构在存储器占用方面是精益的并且运算效率最佳。
在图4中,命名空间映射(273)存储L块(例如,231、233、...、237、239)的识别的阵列,这些块已被分配给命名空间信息(271)中识别的命名空间(例如,221、223)的集合。
在命名空间映射(273)的阵列中,为每个命名空间(281、283、285或287)分配的L块(301、…、302;303、…、304;305、…308;或309、…、310)的识别存储在阵列的连续区域中。因此,除了阵列中的块识别的起始地址(291、293、295及297)的识别之外,可以告知为不同命名空间(281、283、285及287)分配的L块(301、…、302;303、…、304;305、…308;及309、…、310)的识别的部分。
任选地,针对命名空间(281、283、285或287)中的每一者,命名空间信息(271)识别为相应命名空间(281、283、285或287)分配的L块(301、…、302;303、…、304;305、…308;或309、…、310)在容量(220)中的逻辑地址上是否是连续的。
例如,当容量(220)被划分为80个块时,L块可以被识别为L块0到79。由于连续块0到19(301及302)被分配给命名空间(281),因此命名空间(281)的连续指示符(292)具有以下值,所述值指展示:经由从命名空间映射(273)的阵列中的起始地址(291)开始的块识别符所识别的L块的序列占用逻辑地址空间/容量(220)中的连续区域。
类似地,为命名空间(283)分配的L块41到53(303及304)是连续的;并且因此,命名空间(283)的连续指示符(294)具有以下值,所述值指展示:经由从命名空间映射(273)的阵列中的起始地址(293)开始的块识别符所识别的L块的列表处于逻辑地址空间/容量(220)中的连续区域中。
类似地,为命名空间(287)分配的L块54到69(309及310)是连续的;并且因此,命名空间(287)的连续指示符(298)具有以下值,所述值指展示:经由从命名空间映射(273)的阵列中的起始地址(297)开始的块识别符所识别的块的列表占用逻辑地址容量(220)中的连续区域。优选的,但不是必需的,为命名空间分配的L块处于映射的逻辑地址空间/容量(220)中的连续区域中。
图4展示为命名空间(285)分配的块22、25、30及31(305、306、307及308)是非连续的;并且命名空间(285)的连续指示符(296)具有以下值,所述值指展示:经由从命名空间映射(273)的阵列中的起始地址(295)开始的块识别符所识别的块的列表是从映射的逻辑地址空间/容量(220)中的非连续区域分配。
在一些情况下,存储装置(103)可以分配至多预定数量的命名空间。空地址可以用作尚未分配的命名空间的起始地址。因此,命名空间信息(271)具有预定数据大小,其是允许在存储装置(103)上分配的预定数量的命名空间的函数。
任选地,数据结构包含空闲列表(275),其具有存储尚未分配给命名空间信息(271)中识别的任何分配的命名空间(281、283、285、287)的L块(321-325、...、326-327、...、328-329、...、330)的识别符的阵列。
在一些情况下,空闲列表(275)中的L块(321-330)的识别符的列表被附加到当前分配给命名空间信息(271)中识别的命名空间(281、283、285、287)的L块(301-310)的识别符的列表的末尾。可以将空闲块起始地址字段添加到命名空间信息(271)以识别位于空闲列表(275)中的L块(321-330)的识别符的列表的开始。因此,命名空间映射(273)具有与容量(220)上的L块的总数相对应的预定大小的阵列。
图5展示用于转译非易失性存储器装置中的地址以支持命名空间管理的系统。例如,图5的系统可以使用图1中展示的存储装置(103)、图3中展示的逻辑地址映射技术以及类似于图4中展示的数据结构来实施。
在图5中,管理管理器(225)、数据管理器(227)(或称为I/O管理器)及本地管理器(229)被实施为存储装置(例如,图1中展示的103)的固件(例如,104)的部分。
管理管理器(225)从主机(例如,图1中的101)接收用于创建(261)、删除(263)或改变(265)命名空间(例如,221或223)的命令(例如,261、263、265)。作为响应,管理管理器(225)产生/更新命名空间映射(255)例如命名空间映射(273)以实施图2或9中展示的映射。可以改变命名空间(例如,221或223)以扩展或缩小其大小(例如,通过为命名空间分配更多块,或将其块中的一些返回到空闲块池)。
数据管理器(227)接收数据存取命令。来自主机(例如,图1中的101)的数据存取请求(例如,读取、写入)识别命名空间ID(251)及命名空间ID(251)中的LBA地址(253)以读取、写入或擦除来自由空闲命名空间ID(251)及LBA地址(253)识别的存储器单元的数据。使用命名空间映射(255),数据管理器(227)将命名空间ID(251)及LBA地址(253)的组合转换为对应的L块(例如,231、233、...、237、239)中的映射的逻辑地址(257)。
本地管理器(229)将映射的逻辑地址(257)转译为物理地址(259)。L块(例如,231、233、...、237、239)中的逻辑地址可以映射到存储媒体(例如,图1中的109)中的物理地址(259),就如同映射的逻辑地址(257)被虚拟地分配给覆盖整个非易失性存储媒体(109)的虚拟命名空间。
因此,可以看到命名空间映射(255)用作在存储装置(103)上创建/分配的命名空间(221、223)的当前集合中定义的逻辑地址到虚拟命名空间上定义的映射的逻辑地址(257)的逐块映射。由于虚拟命名空间在当前分配的命名空间(221、223)的当前集合改变时不改变,因此当前命名空间(221、223)的细节在将映射的逻辑地址(例如,257)转译成物理地址(例如,259)时完全摆脱本地管理器(229)。
优选地,命名空间映射(255)的实施在存储器占用方面是精益的并且运算效率最佳(例如,使用类似图4中展示的数据结构)。
在某些情况下,存储装置(103)可能不具有为期望的块大小(133)的倍数的存储容量(220)。此外,所请求的命名空间大小可能不是期望的块大小(133)的倍数。管理管理器(225)可能检测期望的块大小(133)与存储容量(220)的未对准及/或所请求的命名空间大小与期望的块大小(133)的未对准,从而导致用户调整期望的块大小(133)及/或所请求的命名空间大小。替代地或组合地,管理管理器(225)可以将完整块分配给未对准的命名空间的部分及/或不使用所分配的完整块的剩余部分。
图6展示基于逻辑地址的块的管理命名空间的方法。例如,图6的方法可以使用上面结合图3到6论述的L块技术在图1中展示的存储装置(103)中实施。
在图6中,所述方法包含:根据预定块大小(133)将非易失性存储媒体(例如,109)的连续逻辑地址容量(220)划分为L块(例如,231、233、...、237、239)(341),并维持具有识别空闲块(例如,312-330)及分配给使用中的命名空间(281-285)的块(例如,301-310)的内容的数据结构(例如,图4中展示的)(343)。
响应于接收被确定为创建新命名空间(347)的请求(345),所述方法进一步包含将多个空闲块分配给命名空间(349)。
响应于接收被确定为删除现有命名空间(347)的请求(345),所述方法进一步包含将先前分配给命名空间的块作为空闲块返回到空闲块列表(275)(351)。
响应于创建或删除命名空间的请求,所述方法进一步包含更新数据结构的内容(353)以识别当前可用的空闲块(例如,312-330)及分配给当前存在的命名空间(281-285)的块(例如,301-310)。
响应于接收存取特定命名空间中的逻辑地址的请求(355),所述方法进一步包含使用数据结构的内容将逻辑地址转译成物理地址(357)。
例如,图1中展示的存储装置(103)具有:主机接口(105);控制器(107);非易失性存储媒体(109);含有指令的固件(104),所述指令在由控制器(107)执行时指示控制器(107)至少:存储逻辑地址的块大小(133);根据块大小(133)将非易失性存储媒体(109)的逻辑地址容量(220)划分为L块(例如,231、233、...、237、239);并维持数据结构以识别:可用于分配给新命名空间的L块的空闲子集(例如,L块312-330);以及已分配给现有命名空间的L块(例如,L块301-310)的分配的子集。优选地,块大小(133)是二的幂。
例如,计算机存储装置(103)可以是固态硬盘,其根据用于命名空间管理及/或存取的非易失性存储器主机控制器接口规范(Non-Volatile Memory Host ControllerInterface Specification,NVMHCI)与主机(101)通信。
在主机接口(105)接收到来自主机(101)的用于分配一定量的非易失性存储器的特定命名空间(221)的请求之后,执行固件(104)的控制器(107)分配从空闲子集到特定命名空间(221)的块(233及237)的集合并更新数据结构的内容。分配给特定命名空间(221)的块(233及237)的集合不必在逻辑地址容量(220)中是连续的,这提高动态命名空间管理的灵活性。
使用数据结构的内容,执行固件(104)的控制器(107)将在第一命名空间中定义的逻辑地址转译成映射的逻辑地址(257),并且接着转换为用于非易失性存储媒体(109)的物理地址(259)。
在主机接口(105)从主机(101)接收到删除(263)特定命名空间(221)的请求之后,执行固件(104)的控制器(107)更新数据结构的内容以将分配给特定命名空间(221)的块(233及237)的集合从数据结构中的分配的子集(例如,273)返回到数据结构中的空闲子集(例如,275)。
优选地,数据结构包含分配的子集中的块(301-310)的识别的阵列及指向所述阵列的块的识别的相应集合(301-302、303-304、305-308、309-310)的指针,所述阵列含有被分配给现有命名空间(281、283、285、287)中的相应一者的块(301-310)的所识别对应集合。
任选地,数据结构进一步包含用于现有命名空间(281、283、285、287)中的相应一者的指示符(292、294、296、298)的集合,其中指示符(292、294、296、298)中的每一者指示分配给现有命名空间(281、283、285、287)中的对应一个的块的识别的相应集合(301-302、303-304、305-308、209-310)在逻辑地址容量(220)或空间中是否是连续的。
任选地,数据结构包含空闲子集中的空闲L块(321-330)的识别的阵列。
逻辑地址容量(220)不必是块大小(133)的倍数。当逻辑地址容量(220)不是块大小(133)的倍数时,可以不使用不足以成为全尺寸(full-size)的块的L块(例如,239)。
为命名空间(例如,221)的创建(261)请求的非易失性存储器的量不必是块大小(133)的倍数。当所述量不是块大小(133)的倍数时,可能无法充分利用分配给命名空间的完整块之一。
图7展示命名空间未与块边界对准并且可以使用图8到11的技术来实施的实例图。
当主机(例如,图1中的101)请求创建或保留具有所请求的命名空间大小(131)的命名空间(111)时,控制器(例如,图1中的107)分配其非易失性存储媒体(例如,图1中的109)的部分以经由命名空间(111)下的LBA地址被寻址。
在图7中展示的场景中,所请求的命名空间大小(131)不是块大小(133)的倍数。结果,如果表示位于命名空间(111)中的存储器单元的命名空间(111)中的第一LBA地址与L块(例如,A)的第一LBA地址对准(例如,映射到所述L块的第一LBA地址),则命名空间(111)中的最后一个LBA地址不能与L块(例如,B)的最后一个LBA地址对准(例如,不能映射到所述L块的最后一个LBA地址),如图7中展示的。因此,命名空间(111)不与L块的边界对准以为了分配。由于所请求的命名空间大小(131)不是块大小(133)的倍数,因此所请求的命名空间大小(131)最好由多个L块(A、...、B)及L块(X)的部分满足。所述部分也称为部分块(X')。在图7中,为命名空间(111)分配L块(X)的部分(或部分块(X'));并且没有为命名空间(111)分配L块(X)的剩余部分(或部分块(X”))。剩余部分或其一部分可以随后分配给另一个也需要部分块的命名空间。不同的命名空间可以使用L块(X)的不同部分块(例如,X'、X”)。
图8展示用于实施未与块边界对准的命名空间的命名空间映射的实例框图。
在图8中,命名空间映射(135)连结到命名空间(111)以识别为命名空间(111)分配的LBA地址的块。用于识别两个项的关联性的任何技术可用于将命名空间映射(135)连结到命名空间(111)。例如,命名空间映射(135)的识别符可以与命名空间(111)的识别符相关联地存储,以连结命名空间映射(135)及命名空间(111)。例如,与已分配命名空间的列表对应的指针的列表可用于识别命名空间映射的数据结构的起始存储器位置,以将命名空间映射与其命名空间连结。L块(例如,(A、...、B))中的地址可以通过固件(104)的单独层(例如,用于固态硬盘(SSD)的快闪转译层(FTL))而进一步转译成物理存储位置的对应地址。
命名空间映射(135)包含为命名空间(111)分配的L块(A、...、B)的识别符(141、...、143)及为命名空间(111)分配的部分块(X')的识别符(147)。
由于L块(A、...、B)具有相同的预定块大小(133),因此可以使用L块(A、...、B)的起始单元(或结束单元)的识别符的阵列或列表来识别完整块识别符(141、...、143)的列表。这种布置简化命名空间映射(135)并使能有效的地址转译。然而,部分块(X')不能以这种方式表示。
图9展示可用于实施图8的命名空间映射的实例性部分块识别符。
在图9中,部分块识别符(151)包含起始单元识别符(153)及组块(chunk)大小(155)。起始单元识别符(153)是由部分块识别符(151)表示的部分块(例如,X'或X”)中的第一逻辑存储器单元的识别符。当在存储器单元的组块上分配部分块(X')时,组块大小(155)表示分配给部分块(X')的存储器单元的量。因此,可以将组块大小(155)添加到起始单元识别符(153)以运算结束单元识别符,所述结束单元识别符是由部分块识别符(151)表示的部分块(例如,X'或X”)中的最后一个单元。组合地,部分块识别符(151)识别L块(例如,X)的唯一部分块(例如,X'或X”)。当组块大小(155)等于块大小(133)时,部分块识别符(151)实际上表示完整块。因此,可以使用部分块识别符(151)来表示完整块(其可以随后被划分为多个部分块(例如,X'或X”);并且可以将多个连续的部分块(例如,X'或X”)组合成L块(例如,X)。
例如,具有指定部分块(X')的组块大小(155)及起始单元识别符(153)的对应数据的部分块识别符(151)可以用作图8的命名空间映射(135)中的部分块识别符(147)以表示为命名空间(111)分配的图7中的部分块(X')。
例如,具有指定部分块(X”)的组块大小(155)及起始单元识别符(153)的对应数据的部分块识别符(151)可用于表示空闲的并且可用于分配给另一个命名空间的图7中的未分配的部分块(X”)。未分配的部分块(例如,X”)的连结表可用于跟踪空闲部分块的池。
替代地,可以用对应的部分块的结束单元识别符替换部分块识别符(151)中的组块大小(155)。部分块识别符(151)也可以由组块大小(155)及结束单元识别符的组合等效地表示。
由固件(104)编程的控制器(107)存储数据(例如,在易失性DRAM(106)及/或非易失性存储媒体(109)中)以使用如图10中展示的部分块的连结表来跟踪空闲块池。
优选地,每个命名空间映射(135)使用不多于一个的部分块(X')来进行有效的地址转译。然而,在一些实例中,当没有单个部分块(例如,X')来满足请求时,命名空间映射(例如,135)可以包含多个部分块(例如,X')。
图10展示使用图8的技术来管理可用于命名空间分配的空闲块池的实例数据结构。
空闲块池(160)的数据结构包含空闲块(161、163、...、165)的识别符。
在一个实施方案中,空闲块池(160)用于跟踪可以分配给新命名空间的可用空闲部分块(例如,X”)。可以使用图9中展示及/或结合图9论述的部分块识别符(151)来识别空闲块(161、163、...、165)中的每一者。
在一些实施方案中,空闲块池(160)进一步任选地跟踪可用的空闲块(161、163、...、165),其中使用图9中展示的部分块识别符(151)的数据结构方便地表示每个完整块,其中组块大小(155)等于块大小(133)。
在其它实施方案中,空闲块池(160)以类似于在命名空间映射(135)中使用的完整块识别符的列表的方式使用完整块识别符的列表来跟踪可用的空闲块(161、163、...、165),其中考虑到完整块的已知的、统一的块大小(133),每个完整块识别符由代表性单元识别符(例如,起始单元或结束单元)表示。
管理管理器(225)可以使用上面结合图7到10论述的部分块识别技术来有效地处理所请求的命名空间大小(131)及/或容量(220)与块大小(133)的不匹配,其具有增加的灵活性及对地址转译性能的最小影响,如图11中展示的。
图11展示使用部分块来分配命名空间的实例。
例如,图11的技术可以用于使用图8到10的部分块识别技术来促进图1中展示的存储装置(103)上的动态命名空间管理。
在图11中,非易失性存储媒体(109)的存储容量(220)被划分为相同块大小的LBA地址的块(L块)(231、233、...、237)(例如,图7中展示的133),除了最后一个L块(239)的大小小于预定块大小(133)之外。在图11中,管理管理器(225)可以虚拟地扩展最后一个L块(239)以包含虚拟容量(249),使得最后一个L块(239)也可以被视为具有相同的块大小(133)。然而,由于虚拟容量(249)不可用于分配给任何命名空间,因此管理管理器(225)将最后一个L块(239)的空闲部分放在空闲块池(160)中作为可用的部分块(例如,由图9的部分块识别符(151)表示,就如同虚拟容量(249)的部分已经被分配给现有命名空间)。
优选地,块大小(133)是二的幂,这有利于优化涉及块大小(133)的运算。例如,当块大小(133)是二的幂时,可以经由移位操作简化涉及块大小(133)的除法、模及/或乘法的操作。
L块(231、233、...、237、239)中的逻辑地址可以被转译成非易失性存储媒体(109)的物理地址,而与命名空间(例如,221、223)的分配无关(例如,通过被配置为固态硬盘(SSD)的存储装置(103)的固件(104)的快闪转译层)。
利用可能的部分块将存储容量(220)划分为(L块)(231、233、...、237)允许在块级别处的命名空间的动态管理。在命名空间(例如,221、223)中定义的逻辑地址被映射到在容量(220)上定义的L块(231、233、237、239),使得命名空间实施细节摆脱从L块(231、233、237、239)中的映射的逻辑地址(257)到非易失性存储媒体(109)的物理地址(259)的转译。
例如,命名空间(221)中的逻辑地址的连续区域(241)被线性地映射到一个L块(233)中的映射的逻辑地址(257)。类似地,命名空间(221)中的逻辑地址的连续区域(245)被线性地映射到另一个L块(231)中的映射的逻辑地址(257)。逻辑地址的逐块映射提高地址转译的效率。
当命名空间(221、223)的大小不是块大小(133)的倍数时,命名空间(221、223)的连续区域(243、247)可以如图7到11中展示的方式被映射到一或多个完整块(例如,237)的部分块。可以修改图4的数据结构以包含分配给命名空间(221)的部分块(X')的部分块识别符(147),所述命名空间(221)具有小于预定块大小(133)的最后连续区域(例如,243),并包含空闲部分块的列表。
通过维持命名空间映射(例如,图8中展示的135、图4中展示的273,其可被进一步修改以包含部分块识别符)及空闲块池(例如,图10中展示的160、图4中展示的275,其可以被进一步修改以包含部分块识别符),存储装置(103)的控制器(107)允许命名空间的动态管理,其中命名空间可以在需要时被创建/分配、在不再使用时被删除及/或被调整大小,其中减少或消除碎片影响。从命名空间(例如,221、223)中的逻辑地址到用于转译成物理地址的逻辑地址的映射可以响应于来自主机(101)的命令来动态调整以创建/分配命名空间、删除命名空间及/或调整命名空间大小(例如,缩小或扩大)。
任选地,当主机(101)请求具有未与块边界对准的大小的命名空间(例如,111、221或223)时,可以提示主机(101)修改命名空间(例如,111、221或223)的大小以用于与块边界对准。
图12展示根据一个实施例的在存储装置上分配命名空间的方法。
例如,可以经由通过存储装置(103)的控制器(107)执行固件(104)来实施图12的方法。
所述方法包含接收为具有所请求的命名空间大小(131)的命名空间(111)分配存储装置(103)的非易失性存储媒体(109)的部分的请求(201),所述所请求的命名空间大小(131)可以是或者可以不是存储装置(103)上的完整L块的块大小(133)的倍数。
响应于所述请求,所述方法进一步包含将一或多个空闲L块(A、...、及/或B)分配给命名空间(111),直到所请求的命名空间大小(131)与分配的一或多个空闲L块(A、...、及/或B)之间的差值小于L块(例如,A、......、B或X)的块大小(133)为止(203)。
当差值小于块大小(133)时,所述方法进一步包含搜索空闲块池(160)以寻找具有等于或大于差值(113)的总可用大小的一或多个空闲部分块(205)。优选地,针对差值使用不超过一个部分块。
如果找到具有等于或大于差值(113)的可用存储容量的总大小的一或多个空闲部分块(207),则所述方法进一步包含分配来自一或多个空闲部分块的差值(113)(209)。如果可用存储容量大于差值(113),则剩余的未分配的一或多个部分块是空闲的并保留在池(160)中。如果可用存储容量等于差值,则一或多个空闲部分块的全部被分配给命名空间(111),并且因此从空闲块池(160)中移除。
如果未找到具有等于或大于差值的可用存储容量的总大小的一或多个空闲部分块(207),则所述方法进一步包含:识别空闲L块(例如,X)(211);从识别的空闲L块(例如,X)分配差值(113)(213);将识别的空闲L块的剩余部分块(X”)添加到池(160)(215)。
在一些实施方案中,当没有可用的完整空闲块来成功执行识别针对差值的完整空闲块(211)的操作时,所述方法可以报告错误或警告,及/或尝试使用多于一个的空闲部分块来满足差值。
当删除命名空间(111)时,为命名空间(111)分配的部分块(X')被释放并被添加到空闲块池(160);并且为命名空间(111)分配的L块(A、...、B)也被释放,并变得可用于分配给其它命名空间。固件(104)的例程检测并组合连续的空闲部分块(例如,X'及X”)以减少池(160)中的空闲部分块的数量。当池(160)中的空闲部分块(例如,X'及X”)被组合成完整空闲块(X)时,空闲部分块(例如,X'及X”)被转换为空闲块表示(例如,由代表性单元例如起始或结束单元的识别表示)。
例如,一个实施例的计算机存储装置(103)包含:主机接口(105);控制器(107);以及非易失性存储媒体(109)。计算机存储装置(103)具有含有指令的固件(104),所述指令在由控制器(107)执行时指示控制器(107)至少:经由主机接口(105)从主机(101)接收用于分配非易失性存储器的所请求的命名空间大小(131)的命名空间(111)的请求;响应于所述请求,产生识别多个L块(A、...、B)的命名空间映射(135),每个L块具有相同的预定块大小(133),并且部分块(X')的大小小于预定块大小(133);并且,使用命名空间映射(135)将从主机(101)传送的命名空间(111)中的逻辑地址转换为针对一定量的非易失性存储器的物理地址(259)。
例如,可以使用符合非易失性存储器主机控制器接口规范(NVMHCI)或NVMe的协议来进行用于分配命名空间(111)的请求。
例如,计算机存储装置(103)可以是固态硬盘(SSD)。
例如,在计算机存储装置(103)中实施的方法包含:在与非易失性存储媒体(例如,109)耦合的控制器(107)中接收来自主机(101)的请求以从计算机存储装置(103)的非易失性存储媒体(例如,109)创建或者保留非易失性存储器的所请求的命名空间大小(131)的命名空间(111)(例如,根据NVMe)。响应于所述请求,所述方法进一步包含由控制器(107)产生命名空间映射(135),其识别:具有相同预定块大小(133)的多个L块(A、...、B),以及具有小于预定块大小(133)的大小的部分块(X')。L块(A、...、B)和部分块(X”)被进一步转译成非易失性存储媒体(例如,109)的特定部分(例如,经由转译层)。在为命名空间(111)产生命名空间映射(135)之后,所述方法进一步包含由控制器(107)使用命名空间映射(135)将从主机(101)传送的命名空间(111)中的逻辑地址转换为针对一定量的非易失性存储器的物理地址。
优选地,鉴于L块(A、...、B、X)的已知的、统一的块大小(133),使用包含不多于代表性单元(例如,起始单元或结束单元)的识别的完整块识别符(例如,141、...、或143)在命名空间映射(135)中表示多个L块(A、...、B)中的每一者。任选地,完整块识别符(例如,141、...、或143)可以包含块大小(133)的指示(例如,通过包含起始单元的识别及结束单元的识别两者)。
优选地,使用为命名空间(111)分配的起始单元的识别符(153)及组块大小(155)在命名空间映射(135)中表示部分块(X')。起始单元不一定是从其分配部分块(X')的L块(X)中的第一单元。例如,当后续命名空间需要大小小于或等于剩余部分块(X”)的部分块时,为后续命名空间分配的部分块可以具有跟随L块(X)中的部分块(X')的结束单元的起始单元。
替代地,可以通过为命名空间(111)(或另一代表性单元)分配的结束单元的识别及组块大小(155)在命名空间映射(135)中表示部分块(X')。
任选地,所述方法进一步包含在计算机存储装置(103)中维持空闲块池(160),其识别可用于分配给另一个命名空间的任何一或多个部分L块(例如,X)。
优选地,计算机存储装置(103)将命名空间映射(135)及空闲块池(160)的拷贝存储在存储装置(103)的非易失性存储媒体(例如,109)中以用于持久存储,并使用易失性DRAM(106)中的命名空间映射(135)及空闲块池(160)的拷贝进行运算。
作为实例,产生命名空间映射(135)可以经由以下来执行:为命名空间(111)分配多个L块(A、...、B),使得命名空间(111)的所请求的命名空间大小(131)与多个L块(A、...、B)之间的大小差值小于块大小(133)。在确定为命名空间(111)请求的非易失性存储器的量与多个L块(A、...、B)的总大小之间的差值之后,所述方法进一步包含在空闲块池(160)中搜索等于或大于所述差值的部分L块。
如果在空闲块池(160)中找到具有大小大于差值的第一部分L块,则所述方法进一步包含:为命名空间(111)分配第一部分L块的部分(例如,通过为命名空间映射(135)创建部分块识别符(147));并且更新空闲块池(160)中的第一部分L块以表示未分配给命名空间(111)的第一部分L块的剩余部分并且可以空闲地分配给另一个命名空间。
如果在空闲块池(160)中找到具有等于差值的大小的第一部分L块,则所述方法进一步包含:从空闲块池(160)移除第一部分L块;并为命名空间(111)分配第一部分L块。
如果在空闲块池(160)中没有找到具有等于或大于差值的大小的部分L块,则可以为池(160)分配L块(例如,X),并且其暂时被视为部分空闲块。例如,所述方法进一步包含:将具有相同预定块大小(133)的第一L块(例如X)添加到空闲块池(160)(例如,作为空闲块(161));为命名空间(111)分配第一L块的部分;并且更新空闲块池(160)中的第一空闲块(161)以表示第一L块(例如,X)的剩余部分块(X”),其没有为命名空间(111)分配并且可以空闲地分配给另一个命名空间。
任选地,所述方法进一步包含在控制器(107)中接收来自主机接口(105)的删除命名空间(111)的请求,以及响应于所述请求,由控制器(107)向空闲块池(160)添加由命名空间(111)的命名空间映射(135)中的部分块识别符(147)识别的部分块(X')。
当空闲块池(160)具有多于一个的空闲部分块(例如,X'及X”)时,所述方法任选地进一步包含:在空闲块池(160)中识别连续的部分块(例如,X'及X”);并且在空闲块池(160)中将连续的部分块(例如,X'及X”)组合成单个部分块。
任选地,所述方法进一步包含:在空闲块池(160)中组合空闲部分块(例如X'及X”)之后,确定组合的空闲部分块(例如X)是否是具有预定块大小(133)的完整空闲块;并且响应于确定出组合的空闲部分块(例如,X)具有预定块大小(133),从空闲块池(160)中移除组合的空闲部分块(例如,X),使得空闲块池(160)仅含有部分空闲块的识别;并且可以由完整块识别符的列表更有效地表示空闲完整块,其中空闲块池(160)中的每一块由具有块中的单元的识别及组块大小的部分块识别符来表示。
非暂时性计算机存储媒体可用于存储固件(104)的指令。当所述指令由计算机存储装置(103)的控制器(107)执行时,所述指令致使控制器(107)执行上面论述的方法。
在本说明书中,各种功能及操作可以被描述为由计算机指令执行或由计算机指令引起以简化描述。然而,所属领域的技术人员将认识到这些表达的含义是这些功能是由一或多个控制器或处理器(例如微处理器)执行计算机指令产生的。替代地或组合地,可以使用有或没有软件指令的专用电路来实施功能及操作,例如使用专用集成电路(ASIC)或场可编程门阵列(FPGA)。可以使用没有软件指令的硬连线电路或者与软件指令组合来实施实施例。因此,这些技术既不限于硬件电路及软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定源。
虽然一些实施例可以在功能完备的计算机及计算机系统中实施,但是各种实施例能够以各种形式被分发为运算产品,并且能够被应用而不管用于实际实施分发的特定类型的机器或计算机可读媒体。
所公开的至少一些方面可以至少部分地以软件实施。也就是说,可以在计算机系统或其它数据处理系统中执行这些技术,以响应其处理器、例如微处理器或微控制器,执行存储器中所含有的指令序列,所述存储器例如ROM、易失性RAM、非易失性存储器、快取或远程存储装置。
执行以实施实施例的例程可以被实施为操作系统的一部分或被称为“计算机程序”的特定应用程序、组件、程序、对象、模块或指令序列。计算机程序通常包括在计算机中的各种存储器及存储装置中的不同时间处的一或多个指令集,并且当由计算机中的一或多个处理器读取及执行时,致使计算机实施执行涉及各个方面的元件所必需的操作。
有形的非暂时性计算机存储媒体可用于存储软件及数据,所述软件及数据在由数据处理系统执行时致使系统执行各种方法。可执行软件及数据可以存储在各种位置,包含例如ROM、易失性RAM、非易失性存储器及/或高速快取。所述软件及/或数据的部分可以存储在这些存储装置中的任何一个中。此外,数据及指令可以从集中式服务器或对等网络获得。可以在不同时间及不同通信工作阶段中或在相同通信工作阶段中从不同的集中式服务器及/或对等网络获得数据及指令的不同部分。在执行应用程序之前,可以完整地获得数据及指令。替代地,当需要执行时,可以及时地动态地获得数据及指令的部分。因此,不要求数据及指令在特定时刻全部位于机器可读媒体上。
计算机可读存储媒体的实例包含但不限于可记录及不可记录类型的媒体,例如易失性及非易失性存储器装置、只读存储器(ROM)、随机存取存储器(RAM)、快闪存储器装置、软盘及其它可移动磁盘、磁盘存储媒体及光存储媒体(例如,光盘只读存储器(CD ROM)、数字通用盘(DVD)等)及其它。指令可以体现在暂时性媒体中,例如电、光、声或其它形式的传播信号,例如载波、红外信号、数字信号等。暂时性媒体通常用于发送指令,但不被视为能够存储指令。
在各种实施例中,硬连线电路可以与软件指令组合使用以实施这些技术。因此,这些技术既不限于硬件电路及软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定源。
尽管一些附图展示以特定顺序的多个操作,但是可以重新排序不依赖于顺序的操作,并且可以组合或分解其它操作。虽然具体提到一些重新排序或其它分组,但是其它对所属领域的技术人员来说是显而易见的,并且因此不提出备选方案的详尽列表。此外,应所述认识到,这些阶段可以用硬件、固件、软件或其任何组合来实施。
以上描述及附图是说明性的而不应解释为限制性的。描述许多具体细节以提供透彻理解。然而,在某些情况下,不描述众所周知的或常规的细节以避免模糊描述。对本发明中的一个或一实施例的参考不一定是对同一实施例的参考;并且,这样的引用意味着至少一个。
在前述说明书中,已经参考本发明的特定示范性实施例描述本发明。显而易见的是,在不脱离权利要求书中阐述的更广泛的精神及范围的情况下,可以对其进行各种修改。因此,说明书及附图应被视为说明性意义而非限制性意义。
Claims (20)
1.一种计算机存储装置,其包括:
主机接口;
控制器;
非易失性存储媒体;以及
固件,其含有指令,所述指令在由所述控制器执行时指示所述控制器来至少:
经由所述主机接口接收来自主机的用于分配一定量的非易失性存储器的命名空间的请求;
响应于所述请求而产生命名空间映射,所述命名空间映射识别:
地址的多个块,其具有相同预定块大小;以及
地址的部分块,其大小小于所述预定块大小;以及
使用所述命名空间映射,将从所述主机传送的命名空间中的逻辑地址转换为所述一定量的非易失性存储器的物理地址。
2.根据权利要求1所述的计算机存储装置,其中用于分配所述命名空间的请求是根据非易失性存储器主机控制器接口规范NVMHCI。
3.根据权利要求1所述的计算机存储装置,其中所述计算机存储装置是固态硬盘。
4.一种在计算机存储装置中实施的方法,所述方法包括:
在与非易失性存储器耦合的控制器中接收来自主机的用于创建或保留一定量的非易失性存储器的命名空间的请求;
响应于所述请求,所述控制器产生命名空间映射,所述命名空间映射识别:
地址的多个块,其具有相同预定块大小;以及
地址的部分块,其大小小于所述预定块大小;以及
所述控制器使用所述命名空间映射将从所述主机传送的命名空间中的逻辑地址转换为所述一定量的非易失性存储器的物理地址。
5.根据权利要求4所述的方法,其中所述请求是根据非易失性存储器主机控制器接口规范NVMHCI。
6.根据权利要求4所述的方法,其中通过起始单元的识别而在所述命名空间映射中表示所述多个块中的每一块。
7.根据权利要求6所述的方法,其中通过为所述命名空间分配的单元的识别及组块大小而在命名空间映射中表示所述部分块。
8.根据权利要求7所述的方法,其进一步包括:
在所述计算机存储装置中维持识别地址的至少一个部分块的空闲块池。
9.根据权利要求8所述的方法,其中产生所述命名空间映射包括:
为所述命名空间分配所述多个块;
确定为所述命名空间请求的非易失性存储器的量与所述多个块的总大小之间的差值;以及
在所述空闲块池中搜索等于或大于所述差值的地址的部分块。
10.根据权利要求9所述的方法,其中产生所述命名空间映射进一步包括:响应于确定出所述空闲块池具有大小大于所述差值的地址的第一部分块,来:
为所述命名空间分配所述第一部分块的一部分;以及
更新所述空闲块池中的第一部分块,以表示并未为所述命名空间分配的第一部分块的剩余部分。
11.根据权利要求9所述的方法,其中产生所述命名空间映射进一步包括:响应于确定出所述空闲块池具有大小等于所述差值的地址的第一部分块,来:
从所述空闲块池中移除所述第一部分块;以及
为所述命名空间分配所述第一部分块。
12.根据权利要求9所述的方法,其中产生所述命名空间映射进一步包括:响应于确定出所述空闲块池没有大小等于或大于所述差值的地址的部分块,来:
将具有相同预定块大小的地址的第一块添加到所述空闲块池;
为所述命名空间分配所述第一块的一部分;以及
更新所述空闲块池中的第一块,以表示并未为所述命名空间分配的第一块的剩余部分。
13.根据权利要求8所述的方法,其进一步包括:
在所述控制器中接收来自所述主机的用于删除所述命名空间的请求;以及
所述控制器将在所述命名空间中识别的部分块添加到所述空闲块池。
14.根据权利要求13所述的方法,其进一步包括:
在所述空闲块池中识别连续的空闲部分块;以及
在所述空闲块池中将所述连续的空闲部分块组合成单个空闲部分块。
15.根据权利要求14所述的方法,其进一步包括:
确定所述单个空闲部分块是否具有预定块大小;以及
响应于确定出所述单个空闲部分块具有所述预定块大小,从所述空闲块池中移除所述单个空闲部分块。
16.根据权利要求15所述的方法,其中所述空闲块池中的每一块由起始单元的识别及组块大小表示。
17.一种存储指令的非暂时性计算机存储媒体,所述指令在由计算机存储装置的控制器执行时致使所述控制器执行方法,所述方法包括:
在与非易失性存储器耦合的控制器中接收来自主机的用于创建或保留一定量的非易失性存储器的命名空间的请求;
响应于所述请求,所述控制器产生命名空间映射,其识别:
地址的多个块,其具有相同预定块大小;以及
地址的部分块,其大小小于所述预定块大小;以及
所述控制器使用所述命名空间映射将从所述主机传送的命名空间中的逻辑地址转换为所述一定量的非易失性存储器的物理地址。
18.根据权利要求17所述的非暂时性计算机存储媒体,其中通过起始单元的识别而在所述命名空间映射中表示所述多个块中的每一者;以及通过起始单元的识别及组块大小而在所述命名空间映射中表示所述部分块。
19.根据权利要求18所述的非暂时性计算机存储媒体,其进一步包括:
在所述计算机存储装置中维持识别地址的至少一个部分块的空闲块池,其中产生所述命名空间映射包括:
分配所述多个块;
确定为所述命名空间请求的非易失性存储器的量与所述多个块的总大小之间的差值;以及
在所述空闲块池中搜索等于或大于所述差值的地址的部分块。
20.根据权利要求19所述的非暂时性计算机存储媒体,其进一步包括:
在所述控制器中接收来自所述主机的用于删除所述命名空间的请求;
所述控制器将所述命名空间中识别的部分块添加到所述空闲块池;
在所述空闲块池中识别连续的空闲部分块;以及
在所述空闲块池中将所述连续的空闲部分块组合成单个空闲的部分块。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/790,882 US10437476B2 (en) | 2017-10-23 | 2017-10-23 | Namespaces allocation in non-volatile memory devices |
US15/790,882 | 2017-10-23 | ||
PCT/US2018/056076 WO2019083775A1 (en) | 2017-10-23 | 2018-10-16 | ALLOCATION OF NAME SPACES IN NON-VOLATILE MEMORY DEVICES |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111344683A CN111344683A (zh) | 2020-06-26 |
CN111344683B true CN111344683B (zh) | 2023-12-22 |
Family
ID=66169302
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880073117.9A Active CN111344683B (zh) | 2017-10-23 | 2018-10-16 | 非易失性存储器装置中的命名空间分配 |
Country Status (4)
Country | Link |
---|---|
US (5) | US10437476B2 (zh) |
CN (1) | CN111344683B (zh) |
TW (1) | TWI791647B (zh) |
WO (1) | WO2019083775A1 (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656833B (zh) * | 2017-10-12 | 2022-11-11 | 慧荣科技股份有限公司 | 数据储存装置 |
US10642488B2 (en) | 2017-10-23 | 2020-05-05 | Micron Technology, Inc. | Namespace size adjustment in non-volatile memory devices |
US10437476B2 (en) | 2017-10-23 | 2019-10-08 | Micron Technology, Inc. | Namespaces allocation in non-volatile memory devices |
US10503404B2 (en) | 2017-10-23 | 2019-12-10 | Micron Technology, Inc. | Namespace management in non-volatile memory devices |
US11240306B2 (en) * | 2017-11-06 | 2022-02-01 | Vast Data Ltd. | Scalable storage system |
US10915440B2 (en) | 2017-11-16 | 2021-02-09 | Micron Technology, Inc. | Namespace mapping optimization in non-volatile memory devices |
US10223254B1 (en) | 2017-11-16 | 2019-03-05 | Micron Technology, Inc. | Namespace change propagation in non-volatile memory devices |
US11580034B2 (en) | 2017-11-16 | 2023-02-14 | Micron Technology, Inc. | Namespace encryption in non-volatile memory devices |
US10678703B2 (en) | 2017-11-16 | 2020-06-09 | Micron Technology, Inc. | Namespace mapping structual adjustment in non-volatile memory devices |
KR20200106739A (ko) * | 2019-03-05 | 2020-09-15 | 에스케이하이닉스 주식회사 | 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
US11055249B2 (en) | 2019-06-25 | 2021-07-06 | Micron Technology, Inc. | Access optimization in aggregated and virtualized solid state drives |
US10942881B2 (en) | 2019-06-25 | 2021-03-09 | Micron Technology, Inc. | Parallel operations in aggregated and virtualized solid state drives |
US10942846B2 (en) | 2019-06-25 | 2021-03-09 | Micron Technology, Inc. | Aggregated and virtualized solid state drives accessed via multiple logical address spaces |
US11768613B2 (en) | 2019-06-25 | 2023-09-26 | Micron Technology, Inc. | Aggregation and virtualization of solid state drives |
US11762798B2 (en) | 2019-06-25 | 2023-09-19 | Micron Technology, Inc. | Aggregated and virtualized solid state drives with multiple host interfaces |
US11513923B2 (en) | 2019-06-25 | 2022-11-29 | Micron Technology, Inc. | Dynamic fail-safe redundancy in aggregated and virtualized solid state drives |
US11256621B2 (en) * | 2019-06-25 | 2022-02-22 | Seagate Technology Llc | Dual controller cache optimization in a deterministic data storage system |
US11573708B2 (en) | 2019-06-25 | 2023-02-07 | Micron Technology, Inc. | Fail-safe redundancy in aggregated and virtualized solid state drives |
US10963396B1 (en) * | 2019-09-17 | 2021-03-30 | Micron Technology, Inc. | Memory system for binding data to a memory namespace |
US11262923B2 (en) | 2020-07-08 | 2022-03-01 | Samsung Electronics Co., Ltd. | Method for managing namespaces in a storage device using an over-provisioning pool and storage device employing the same |
US11836077B2 (en) | 2020-09-01 | 2023-12-05 | Micron Technology, Inc. | Dynamically tuning host performance booster thresholds |
US11314428B1 (en) * | 2020-10-09 | 2022-04-26 | Western Digital Technologies, Inc. | Storage system and method for detecting and utilizing wasted space using a file system |
CN112799592A (zh) * | 2021-01-29 | 2021-05-14 | 苏州浪潮智能科技有限公司 | 一种多命名空间的分配方法、装置、设备及可读介质 |
US20220391091A1 (en) * | 2021-06-04 | 2022-12-08 | Micron Technology, Inc. | Management of Namespace Block Boundary Alignment in Non-Volatile Memory Devices |
US20230042551A1 (en) * | 2021-08-03 | 2023-02-09 | Samsung Electronics Co., Ltd. | Systems, methods, and apparatus for the management of device local memory |
US11656778B2 (en) | 2021-08-17 | 2023-05-23 | Micron Technology, Inc. | Selection of block size for namespace management in non-volatile memory devices |
CN113675952A (zh) * | 2021-09-08 | 2021-11-19 | 江苏林洋能源股份有限公司 | 一种多元储能融合控制终端及其控制系统 |
CN114238195A (zh) * | 2021-10-28 | 2022-03-25 | 合肥科大智能机器人技术有限公司 | 一种边缘计算终端 |
US20240086071A1 (en) * | 2022-09-12 | 2024-03-14 | Western Digital Technologies, Inc. | Ssd use of host memory buffer for improved performance |
US11947816B1 (en) * | 2022-09-19 | 2024-04-02 | Kioxia Corporation | Solid state drives with improved format handling |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102855193A (zh) * | 2011-06-03 | 2013-01-02 | 苹果公司 | 非易失性存储系统中未使用的逻辑地址的挂载时去映射 |
Family Cites Families (77)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05165715A (ja) * | 1991-12-12 | 1993-07-02 | Nec Corp | 情報処理装置 |
US6529921B1 (en) | 1999-06-29 | 2003-03-04 | Microsoft Corporation | Dynamic synchronization of tables |
TWI240861B (en) | 2002-01-11 | 2005-10-01 | Integrated Circuit Solution In | Data access method and architecture of flash memory |
PL351779A1 (en) | 2002-01-18 | 2003-07-28 | Advanced Digital Broadcast Ltd | Apparatus for storing data and method of subdividing te data storage area |
US7181588B2 (en) | 2003-05-22 | 2007-02-20 | International Business Machines Corporation | Computer apparatus and method for autonomic adjustment of block transfer size |
US7509473B2 (en) | 2003-08-27 | 2009-03-24 | Adaptec, Inc. | Segmented storage system mapping |
US8607016B2 (en) | 2004-07-21 | 2013-12-10 | Sandisk Technologies Inc. | FAT analysis for optimized sequential cluster management |
US7769709B2 (en) | 2004-09-09 | 2010-08-03 | Microsoft Corporation | Method, system, and apparatus for creating an archive routine for protecting data in a data protection system |
US20080010449A1 (en) | 2006-07-07 | 2008-01-10 | Michael Holtzman | Content Control System Using Certificate Chains |
US8190919B2 (en) | 2006-11-07 | 2012-05-29 | Spansion Llc | Multiple stakeholder secure memory partitioning and access control |
US8935302B2 (en) | 2006-12-06 | 2015-01-13 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume |
US8489817B2 (en) | 2007-12-06 | 2013-07-16 | Fusion-Io, Inc. | Apparatus, system, and method for caching data |
JP2010524410A (ja) | 2007-04-12 | 2010-07-15 | エヌサイファー・コーポレーション・リミテッド | 暗号鍵を識別および管理するための方法およびシステム |
US8862590B2 (en) | 2007-06-29 | 2014-10-14 | Microsoft Corporation | Flexible namespace prioritization |
US8498417B1 (en) | 2007-12-27 | 2013-07-30 | Emc Corporation | Automation of coordination of encryption keys in a SAN based environment where an encryption engine, device management, and key management are not co-located |
US20100318760A1 (en) | 2008-01-30 | 2010-12-16 | Hirokazu So | Memory controller, nonvolatile storage device, and nonvolatile storage system |
WO2009097586A1 (en) | 2008-01-31 | 2009-08-06 | Bea Systems, Inc. | System and method for transactional cache |
US8392361B2 (en) | 2008-08-11 | 2013-03-05 | Vmware, Inc. | Centralized management of virtual machines |
US8650355B2 (en) | 2008-10-15 | 2014-02-11 | Seagate Technology Llc | Non-volatile resistive sense memory on-chip cache |
US8738621B2 (en) | 2009-01-27 | 2014-05-27 | EchoStar Technologies, L.L.C. | Systems and methods for managing files on a storage device |
KR20100115583A (ko) | 2009-04-20 | 2010-10-28 | 삼성전자주식회사 | 데이터 저장 시스템 |
US8478799B2 (en) | 2009-06-26 | 2013-07-02 | Simplivity Corporation | Namespace file system accessing an object store |
WO2011031903A2 (en) | 2009-09-09 | 2011-03-17 | Fusion-Io, Inc. | Apparatus, system, and method for allocating storage |
WO2011044154A1 (en) | 2009-10-05 | 2011-04-14 | Marvell Semiconductor, Inc. | Data caching in non-volatile memory |
US8533161B2 (en) | 2009-10-30 | 2013-09-10 | Hitachi Data Systems Corporation | Fixed content storage within a partitioned content platform, with disposition service |
US20120079229A1 (en) | 2010-09-28 | 2012-03-29 | Craig Jensen | Data storage optimization for a virtual platform |
US8996842B2 (en) * | 2010-12-09 | 2015-03-31 | Seagate Technology Llc | Memory stacks management |
US9355031B2 (en) | 2011-04-21 | 2016-05-31 | International Business Machines Corporation | Techniques for mapping device addresses to physical memory addresses |
US9501392B1 (en) | 2011-05-12 | 2016-11-22 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Management of a non-volatile memory module |
US20130019057A1 (en) | 2011-07-15 | 2013-01-17 | Violin Memory, Inc. | Flash disk array and controller |
US9690694B2 (en) | 2011-09-27 | 2017-06-27 | Sandisk Technologies, Llc | Apparatus, system, and method for an address translation layer |
KR102015053B1 (ko) | 2013-02-20 | 2019-08-27 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 데이터 처리 방법 |
US9003071B2 (en) | 2013-03-13 | 2015-04-07 | Futurewei Technologies, Inc. | Namespace access control in NVM express PCIe NVM with SR-IOV |
US9804960B2 (en) * | 2013-03-14 | 2017-10-31 | Western Digital Technologies, Inc. | Overprovision capacity in a data storage device |
US9116904B2 (en) | 2013-03-14 | 2015-08-25 | Microsoft Technology Licensing, Llc | File system operation on multi-tiered volume |
US10102144B2 (en) | 2013-04-16 | 2018-10-16 | Sandisk Technologies Llc | Systems, methods and interfaces for data virtualization |
US9245140B2 (en) | 2013-11-15 | 2016-01-26 | Kabushiki Kaisha Toshiba | Secure data encryption in shared storage using namespaces |
US9430480B1 (en) | 2013-12-31 | 2016-08-30 | Emc Corporation | Active-active metro-cluster scale-out for unified data path architecture |
KR20150081635A (ko) | 2014-01-06 | 2015-07-15 | 삼성전자주식회사 | 불휘발성 반도체 메모리를 포함하는 저장 장치 및 그것의 관리 방법 |
US9875180B2 (en) | 2014-02-24 | 2018-01-23 | Sandisk Technologies Llc | Systems and methods for managing storage compression operations |
US9495478B2 (en) | 2014-03-31 | 2016-11-15 | Amazon Technologies, Inc. | Namespace management in distributed storage systems |
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 |
KR20160027805A (ko) | 2014-09-02 | 2016-03-10 | 삼성전자주식회사 | 비휘발성 메모리 장치를 위한 가비지 컬렉션 방법 |
US10102118B2 (en) | 2014-10-30 | 2018-10-16 | Toshiba Memory Corporation | Memory system and non-transitory computer readable recording medium |
US20160210241A1 (en) * | 2015-01-21 | 2016-07-21 | HGST Netherlands B.V. | Reducing a size of a logical to physical data address translation table |
US10268355B2 (en) * | 2015-01-30 | 2019-04-23 | Target Brands Inc. | User interface design system |
US20160283124A1 (en) | 2015-03-25 | 2016-09-29 | Kabushiki Kaisha Toshiba | Multi-streamed solid state drive |
US20160342463A1 (en) | 2015-05-20 | 2016-11-24 | Kabushiki Kaisha Toshiba | Data protection in a namespace |
JP6403162B2 (ja) | 2015-07-23 | 2018-10-10 | 東芝メモリ株式会社 | メモリシステム |
US9990304B2 (en) * | 2015-11-13 | 2018-06-05 | Samsung Electronics Co., Ltd | Multimode storage management system |
US10291739B2 (en) | 2015-11-19 | 2019-05-14 | Dell Products L.P. | Systems and methods for tracking of cache sector status |
US20170153843A1 (en) | 2015-11-27 | 2017-06-01 | Western Digital Technologies, Inc. | Monitoring and managing elastic data storage devices |
US9916110B2 (en) | 2016-02-23 | 2018-03-13 | Red Hat, Inc. | Size adjustable volumes for containers |
JP6448571B2 (ja) | 2016-03-08 | 2019-01-09 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
JP6523193B2 (ja) | 2016-03-08 | 2019-05-29 | 東芝メモリ株式会社 | ストレージシステム、情報処理システムおよび制御方法 |
US20170344430A1 (en) | 2016-05-24 | 2017-11-30 | Intel Corporation | Method and apparatus for data checkpointing and restoration in a storage device |
US10402092B2 (en) | 2016-06-01 | 2019-09-03 | Western Digital Technologies, Inc. | Resizing namespaces for storage devices |
KR102523377B1 (ko) | 2016-07-15 | 2023-04-20 | 삼성디스플레이 주식회사 | 유기 발광 표시 장치 및 이를 포함하는 두부 장착 표시 시스템 |
US9921956B2 (en) | 2016-07-20 | 2018-03-20 | Sandisk Technologies Llc | System and method for tracking block level mapping overhead in a non-volatile memory |
JP6524039B2 (ja) | 2016-09-23 | 2019-06-05 | 東芝メモリ株式会社 | メモリシステム及び制御方法 |
JP6553566B2 (ja) | 2016-09-23 | 2019-07-31 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
US10176116B2 (en) | 2016-09-28 | 2019-01-08 | Intel Corporation | Computer product, method, and system to provide discovery services to discover target storage resources and register a configuration of virtual target storage resources mapping to the target storage resources and an access control list of host nodes allowed to access the virtual target storage resources |
KR20180047402A (ko) | 2016-10-31 | 2018-05-10 | 삼성전자주식회사 | 멀티 네임스페이스를 관리하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
US20180239697A1 (en) | 2017-02-22 | 2018-08-23 | CNEXLABS, Inc. a Delaware Corporation | Method and apparatus for providing multi-namespace using mapping memory |
US10866732B2 (en) | 2017-03-10 | 2020-12-15 | Toshiba Memory Corporation | Namespace re-sizing |
US20180260319A1 (en) | 2017-03-10 | 2018-09-13 | Toshiba Memory Corporation | Writing ssd system data |
US10296454B2 (en) * | 2017-03-14 | 2019-05-21 | Vmware, Inc. | Granular unmapping with variable addressing in a data store |
US20180275871A1 (en) | 2017-03-22 | 2018-09-27 | Intel Corporation | Simulation of a plurality of storage devices from a single storage device coupled to a computational device |
US10459636B2 (en) | 2017-03-24 | 2019-10-29 | Sandisk Technologies Llc | System and method for managing data in non-volatile memory systems having multiple mapping layers |
US10437476B2 (en) | 2017-10-23 | 2019-10-08 | Micron Technology, Inc. | Namespaces allocation in non-volatile memory devices |
US10503404B2 (en) | 2017-10-23 | 2019-12-10 | Micron Technology, Inc. | Namespace management in non-volatile memory devices |
US10642488B2 (en) | 2017-10-23 | 2020-05-05 | Micron Technology, Inc. | Namespace size adjustment in non-volatile memory devices |
KR102411290B1 (ko) | 2017-10-24 | 2022-06-22 | 삼성전자주식회사 | 선택적으로 퍼지 동작을 수행하도록 구성되는 호스트 장치 및 스토리지 장치를 포함하는 스토리지 시스템 |
US11580034B2 (en) | 2017-11-16 | 2023-02-14 | Micron Technology, Inc. | Namespace encryption in non-volatile memory devices |
US10223254B1 (en) | 2017-11-16 | 2019-03-05 | Micron Technology, Inc. | Namespace change propagation in non-volatile memory devices |
US10678703B2 (en) | 2017-11-16 | 2020-06-09 | Micron Technology, Inc. | Namespace mapping structual adjustment in non-volatile memory devices |
US10915440B2 (en) | 2017-11-16 | 2021-02-09 | Micron Technology, Inc. | Namespace mapping optimization in non-volatile memory devices |
-
2017
- 2017-10-23 US US15/790,882 patent/US10437476B2/en active Active
-
2018
- 2018-10-16 WO PCT/US2018/056076 patent/WO2019083775A1/en active Application Filing
- 2018-10-16 CN CN201880073117.9A patent/CN111344683B/zh active Active
- 2018-10-22 TW TW107137155A patent/TWI791647B/zh active
-
2019
- 2019-07-23 US US16/520,204 patent/US10969963B2/en active Active
-
2021
- 2021-02-24 US US17/184,487 patent/US11520484B2/en active Active
-
2022
- 2022-11-11 US US18/054,666 patent/US11714553B2/en active Active
-
2023
- 2023-06-08 US US18/331,842 patent/US20230315290A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102855193A (zh) * | 2011-06-03 | 2013-01-02 | 苹果公司 | 非易失性存储系统中未使用的逻辑地址的挂载时去映射 |
Also Published As
Publication number | Publication date |
---|---|
TWI791647B (zh) | 2023-02-11 |
US20190347010A1 (en) | 2019-11-14 |
US20190121547A1 (en) | 2019-04-25 |
US20230315290A1 (en) | 2023-10-05 |
US20210181950A1 (en) | 2021-06-17 |
US11520484B2 (en) | 2022-12-06 |
WO2019083775A1 (en) | 2019-05-02 |
CN111344683A (zh) | 2020-06-26 |
US20230071161A1 (en) | 2023-03-09 |
TW201923587A (zh) | 2019-06-16 |
US10437476B2 (en) | 2019-10-08 |
US11714553B2 (en) | 2023-08-01 |
US10969963B2 (en) | 2021-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111344683B (zh) | 非易失性存储器装置中的命名空间分配 | |
US11928332B2 (en) | Namespace size adjustment in non-volatile memory devices | |
US11983119B2 (en) | Namespace mapping structural adjustment in non-volatile memory devices | |
US10915440B2 (en) | Namespace mapping optimization in non-volatile memory devices | |
US11640242B2 (en) | Namespace management in non-volatile memory devices | |
US20230409473A1 (en) | Namespace change propagation in non-volatile memory devices | |
JP2019020788A (ja) | メモリシステムおよび制御方法 | |
CN115705168A (zh) | 非易失性存储器装置中的名称空间管理的块大小的选择 | |
US11994984B2 (en) | Namespace mapping optimization in non-volatile memory devices | |
US20220391091A1 (en) | Management of Namespace Block Boundary Alignment in Non-Volatile Memory Devices |
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 |