CN115458013A - 存储装置及其操作方法 - Google Patents
存储装置及其操作方法 Download PDFInfo
- Publication number
- CN115458013A CN115458013A CN202210149903.0A CN202210149903A CN115458013A CN 115458013 A CN115458013 A CN 115458013A CN 202210149903 A CN202210149903 A CN 202210149903A CN 115458013 A CN115458013 A CN 115458013A
- Authority
- CN
- China
- Prior art keywords
- namespace
- data
- host
- input
- criticality
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000013507 mapping Methods 0.000 claims abstract description 49
- 230000004044 response Effects 0.000 claims abstract description 47
- 230000000977 initiatory effect Effects 0.000 claims abstract 2
- 230000015654 memory Effects 0.000 claims description 144
- 230000006870 function Effects 0.000 claims description 38
- 230000008569 process Effects 0.000 claims description 9
- 238000012545 processing Methods 0.000 claims description 7
- 238000004891 communication Methods 0.000 claims description 5
- 238000007726 management method Methods 0.000 description 26
- 239000010410 layer Substances 0.000 description 21
- 238000010586 diagram Methods 0.000 description 13
- 101000711846 Homo sapiens Transcription factor SOX-9 Proteins 0.000 description 10
- 102100034204 Transcription factor SOX-9 Human genes 0.000 description 10
- 238000012937 correction Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 101100232371 Hordeum vulgare IAT3 gene Proteins 0.000 description 3
- 238000011017 operating method Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 241001522296 Erithacus rubecula Species 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000036039 immunity Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- 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/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/24—Bit-line control circuits
-
- 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/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile 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
-
- 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)
- Microelectronics & Electronic Packaging (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
公开了存储装置及其操作方法。所述方法包括:通知主机指定功能是可行的,所述指定功能用于将数据关键度和优先级指定给非易失性存储器装置的命名空间;响应于接收到的对所述指定功能的批准而启动所述指定功能;从主机接收用于指定命名空间中的第一命名空间的数据关键度和优先级的第一请求;以及响应于第一请求生成命名空间映射表。
Description
本申请要求于2021年6月8日在韩国知识产权局提交的第10-2021-0074039号韩国专利申请的优先权,所述韩国专利申请的公开通过引用全部包含于此。
技术领域
本公开的实施例涉及一种存储装置及其操作方法,更具体地,涉及一种包括命名空间的存储装置及其操作方法。
背景技术
易失性存储器装置是在电力从其被移除时丢失存储在其中的数据的存储器装置。易失性存储器装置包括静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM)。非易失性半导体存储器即使在电源供应中断时也保留存储在其中的数据,并且包括诸如闪存装置的装置。
最近,基于闪存的固态驱动器(SSD)已经越来越多地用作大容量存储介质。使用SSD的主机(诸如,服务器或个人计算机)可生成各种类型的数据。例如,数据可表示不同类型的信息(诸如,图像信息、声音信息和/或字母数字信息)。SSD可提供命名空间功能,以在一个物理装置上配置多个逻辑装置。
发明内容
本公开的实施例提供一种为每个命名空间指定数据关键度和优先级并且基于指定的数据关键度和优先级来内部地管理数据和数据的访问的存储装置以及上述存储装置的操作方法。
根据实施例,一种操作包括非易失性存储器装置的存储装置的方法包括:通知主机指定功能可用,所述指定功能用于将数据关键度和优先级指定给非易失性存储器装置的命名空间;响应于接收到对所述指定功能的批准而启用所述指定功能;从主机接收用于指定命名空间中的第一命名空间的数据关键度和优先级的第一请求;以及响应于第一请求生成命名空间映射表。
根据实施例,一种存储装置包括一个或多个存储控制器、非易失性存储器装置和管理控制器。管理控制器被配置为:通知主机指定功能可用,所述指定功能用于将数据关键度和优先级指定给非易失性存储器装置的命名空间;在接收到使用所述指定功能的批准时启用所述指定功能;从主机接收用于指定命名空间中的第一命名空间的数据关键度和优先级的第一请求;并响应于第一请求生成命名空间映射表。
根据实施例,一种存储装置包括一个或多个存储控制器、包括被划分为一个或多个域的多个存储器块的非易失性存储器装置、以及管理控制器。管理控制器被配置为:通知主机指定功能是可行的,所述指定功能用于将数据关键度和优先级指定给非易失性存储器装置的命名空间;响应于接收到对所述指定功能的批准而启用所述指定功能;从主机接收用于指定命名空间中的第一命名空间的数据关键度和优先级的第一请求;并且生成命名空间映射表,其中,响应于第一请求,命名空间映射表将第一命名空间与所述一个或多个存储控制器中的第一存储控制器、第一数据关键度和第一优先级相关联,其中,所述一个或多个域中的第一域被指定到第一数据关键度。
根据实施例,一种存储装置的操作方法,其中,所述存储装置包括非易失性存储器装置,非易失性存储器装置包括被划分为一个或多个域的多个存储器块。所述操作方法包含:通知主机指定功能是可行的,所述指定功能用于将数据关键度和优先级指定给非易失性存储器装置的命名空间;响应于主机的启用请求而启用所述指定功能;从主机接收对与第一命名空间相关联的第一数据的写入命令,其中,第一命名空间具有第一数据关键度和第一优先级;以及响应于对第一数据的写入命令,将第一数据写入到一个或多个存储器块中的一个存储器块,所述一个或多个存储器块被包括在所述一个或多个域之中的被指定到第一数据关键度的第一域中。
根据实施例,一种存储装置包括一个或多个存储控制器、管理控制器和非易失性存储器装置,非易失性存储器装置包括被划分为一个或多个域的多个存储器块。所述存储装置被配置为:通知主机指定功能可用,所述指定功能用于将数据关键度和优先级指定到非易失性存储器装置的命名空间;响应于主机的启用请求而启用所述指定功能;从主机接收对与命名空间中的具有第一数据关键度和第一优先级的第一命名空间相关联的第一数据的写入命令;以及响应于对第一数据的写入命令,将第一数据写入到一个或多个存储器块中的一个存储器块,所述一个或多个存储器块被包括在所述一个或多个域中的被指定到第一数据关键度的第一域中。
附图说明
通过参照附图详细描述本公开的实施例,本公开的以上和其他目的和特征将变得清楚。
图1示出根据本公开的一些实施例的存储***的框图。
图2示出根据本公开的一些实施例的图1的存储控制器的框图。
图3示出根据本公开的一些实施例的图1的非易失性存储器装置的框图。
图4示出根据本公开的一些实施例的存储***的软件层。
图5示出根据本公开的一些实施例的存储***的框图。
图6示出根据本公开的一些实施例的存储***的框图。
图7示出根据本公开的一些实施例的命名空间映射表。
图8示出根据本公开的一些实施例的非易失性存储器装置的存储器块。
图9示出根据本公开的一些实施例的可用于与主机通信的输入/输出队列。
图10示出根据本公开的一些实施例的可用于与非易失性存储器装置通信的输入/输出队列。
图11示出根据本公开的一些实施例的图6的存储装置的操作方法的流程图。
图12示出根据本公开的一些实施例的通过图6的存储装置执行从图6的主机接收的请求的方法的流程图。
具体实施方式
在一些***中(诸如,连接到存储装置的主机计算装置),可通过使用命名空间将数据划分为不同的类型。然后,可为不同类型的数据分配不同的优先级。例如,在时间在应用中至关重要的***(例如,自动驾驶汽车、医疗***等)中,可能期望为一些类型的数据分配比其他类型更高的优先级。例如,可能期望能够通过备份相机镜头数据来访问和操纵来自雷达***的传感器数据。为了优先访问特定数据,主机可将关于数据的信息连同数据本身一起提供给存储装置。关于数据的信息可被称为元数据。
在下文中,将参照附图详细描述实施例。附图中相同的参照标号可表示相同的元件,并且在一定程度上已省略对元件的描述,可被理解为该元件至少类似于在说明书中其他地方描述的相应元件。
图1示出根据本公开的一些实施例的存储***1000的框图。参照图1,存储***1000可包括主机1100和存储装置1200。在一些实施例中,存储***1000可以是被配置为处理各种信息并存储已处理的信息的信息处理装置(诸如,个人计算机(PC)、膝上型计算机、服务器、工作站、智能电话、平板PC、数字相机和黑盒)。
主机1100可控制存储***1000的操作。例如,主机1100可向存储装置1200发送用于将数据存储在存储装置1200中或用于读取存储在存储装置1200中的数据的请求。在一些实施例中,主机1100可包括处理器核(诸如,中央处理器(CPU)或应用处理器(AP)),处理器核被配置为控制存储***1000。在一个实施例中,主机可使用通过网络连接的计算节点被实现。
主机1100可包括主机处理器1110、主机存储器1120和接口电路1130。主机处理器1110可管理来自在主机1100上驱动的各种应用、软件或虚拟机的命令。主机处理器1110可控制主机1100的操作。例如,主机处理器1110可控制用于将主机存储器1120的缓冲区域的数据(例如,写入数据)存储在存储装置1200中的操作或用于将存储装置1200的数据(例如,读取数据)存储在主机存储器1120的缓冲区域中的操作。
主机存储器1120可用作缓冲存储器,缓冲存储器用于临时存储将要发送到存储装置1200的数据或用于存储从存储装置1200接收的数据。例如,主机存储器1120可包括管理队列、提交队列和完成队列。
管理队列可用于管理主机处理器1110对存储装置1200进行控制所需的信息或(一个或多个)命令。提交队列可用于管理将要发送到存储装置1200的命令或输入/输出(I/O)。完成队列可用于管理关于由存储装置1200完成的操作的信息。在一些实施例中,管理队列、提交队列和完成队列可由主机处理器1110或存储控制器1210管理。在一些实施例中,提交队列和完成队列可以是可被称为“输入/输出队列”的一对队列。
接口电路1130可在主机处理器1110的控制下与存储装置1200通信。例如,基于给定协议,接口电路1130可向存储装置1200发送将要写入存储装置1200中的数据。接口电路1130可从存储装置1200接收存储在存储装置1200中的数据。在一些实施例中,接口电路1130可基于诸如PCIe(***组件互连快速)等的标准与存储装置1200通信。
在一些实施例中,主机处理器1110和主机存储器1120可使用单独的半导体芯片被实现。可选择地,在一些实施例中,主机处理器1110和主机存储器1120可在同一半导体芯片中被实现。例如,主机处理器1110可以是包括在应用处理器中的多个模块中的一个;在这种情况下,应用处理器可被实现为片上***(SoC)。在一个实施例中,主机存储器1120可以是包括在应用处理器中的嵌入式存储器,或者可以是设置在应用处理器外部的非易失性存储器或存储器模块。
存储装置1200可包括存储控制器1210和非易失性存储器装置1220。存储控制器1210可控制存储装置1200的操作。例如,响应于从主机1100接收的请求,存储控制器1210可将数据写入非易失性存储器装置(NVM)1220或者可读取存储在非易失性存储器装置1220中的数据。存储控制器1210可执行用于管理或控制非易失性存储器装置1220的各种操作。稍后将详细描述存储控制器1210的操作。
存储装置1200可包括用于存储数据的存储介质(例如,非易失性存储器装置1220),其中,存储操作基于来自主机1100的请求。例如,存储装置1200可包括固态驱动器(SSD)、嵌入式存储器和可移动外部存储器中的一者或多者。在存储装置1200是SSD的情况下,存储装置1200可符合NVMe(非易失性存储器快速)标准。在存储装置1200是嵌入式存储器或外部存储器的情况下,存储装置1200可符合UFS(通用闪存)或eMMC(嵌入式多媒体卡)标准。主机1100和存储装置1200中的每个可生成符合应用于它们的标准协议的数据,并且可发送生成的数据。
当存储装置1200的非易失性存储器装置1220包括闪存时,闪存可包括二维(2D)NAND闪存阵列或三维(3D)(或垂直)NAND(VNAND)存储器阵列。又例如,存储装置1200可使用各种不同的非易失性存储器来实现。例如,存储装置1200可包括磁性RAM(MRAM)、自旋转移力矩MRAM(STT-MRAM)、导电桥接RAM(CBRAM)、铁电RAM(FeRAM)、相变RAM(PRAM)、电阻式RAM(RRAM)或各种不同的存储器装置中的一者或者多者。
在一些实施例中,存储装置1200可支持命名空间功能。命名空间可被定义为一个逻辑块或两个或更多个逻辑块的集合。对应于存储装置1200的逻辑空间可被划分为多个命名空间。唯一的逻辑块地址(LBA)可被分配给每个命名空间。
在一些实施例中,响应于从主机1100接收的请求,存储装置1200可针对多个命名空间中的每个命名空间指定数据关键度(data criticality)和优先级。主机1100可针对至存储装置1200的每个数据源指定关键度和优先级。例如,主机1100可向与自主车辆或医疗装置相关联的数据源指定高关键度和高优先级。另外,存储装置1200可基于主机1100的请求,为将被存储(或正被存储)在特定命名空间中的数据指定关键度和优先级。例如,被发送到存储装置1200的数据流可使用关键度和优先级进行标记,并且以这种方式,(一个或多个)数据流可对于多个命名空间中的一个命名空间来说是唯一的。例如,标记有特定关键度和优先级的数据流可存储在多个命名空间中的一个命名空间中。
在一些实施例中,存储装置1200可基于数据关键度和优先级来区分存储在非易失性存储器装置1220中的数据之间的服务质量(QoS)。例如,基于每个数据流的标签信息,存储装置1200可使用不同的优先级来处理数据流。
在一些实施例中,存储装置1200可基于特定命名空间的数据关键度和优先级来处理与特定命名空间相关联的输入/输出请求。例如,存储装置1200可更快地(或以更低的时延)处理与关键并具有高优先级的命名空间相关联的输入/输出请求。存储装置1200可内部地管理命名空间的数据和对命名空间(或数据)的访问,使得关键和高优先级命名空间的数据可以以低时延被访问或写入。
在一些实施例中,非易失性存储器装置1220可包括多个存储器块,并且存储装置1200可将多个存储器块划分为多个域。存储装置1200可将与关键并具有高优先级的命名空间相关联的数据存储在具有高可靠性的单独的域中。因此,存储装置1200可立即向主机1100提供关键并具有高优先级的数据,而不考虑未决的低优先级的对数据的输入/输出请求。
图2示出根据本公开的一些实施例的图1的存储控制器1210的框图。参照图1和图2,存储控制器1210可包括CPU 1211、闪存转换层(FTL)1212、纠错码(ECC)引擎1213、主机接口1214、缓冲存储器1215和NVM接口1216。
CPU 1211可驱动操作***、固件、软件或程序代码,以驱动存储控制器1210。CPU1211可将用于控制非易失性存储器装置1220的元数据加载到缓冲存储器1215上,并且可参考加载的数据。缓冲存储器1215可包括随机存取存储器(RAM)。例如,缓冲存储器1215可包括静态RAM(SRAM)或动态RAM(DRAM)。
为了控制非易失性存储器装置1220,CPU 1211可基于从主机1100接收的请求生成各种命令和地址,并可生成与非易失性存储器装置1220相关联的映射表。CPU 1211可将生成的命令和地址发送到NVM接口1216。在CPU1211的控制下,存储在缓冲存储器1215中的数据(或存储在存储装置1200的外部缓冲器中的数据)可通过NVM接口1216存储在非易失性存储器装置1220中。
FTL 1212可执行各种功能(诸如,地址映射、损耗均衡(wear-leveling)、垃圾收集及命名空间映射)。例如,地址映射操作是指将从主机1100接收的逻辑地址转换为用于将数据实际存储在非易失性存储器装置1220中的物理地址的操作。损耗均衡可通过“允许非易失性存储器装置1220中的块被均匀地使用使得特定块的过度劣化被避免”的技术来实现。例如,损耗均衡可包括用于平衡物理块的擦除计数的固件技术。垃圾收集是指用于通过提供在将现有块的有效数据复制到新块之后擦除现有块的方式来确保非易失性存储器装置1220的可用容量的技术。垃圾收集可例如防止存储器泄漏。稍后将详细描述命名空间映射。
在一些实施例中,FTL 1212可被实现为硬件或软件。在FTL 1212被实现为软件的情况下,与FTL 1212相关联的程序代码或信息可被存储到缓冲存储器1215中(或被加载到缓冲存储器1215上),并可由CPU 1211执行。当FTL 1212被实现为硬件时,存储控制器1210还可包括硬件加速器,该硬件加速器被配置为与CPU 1211分开地执行FTL 1212的操作。
ECC引擎1213可对从非易失性存储器装置1220读取的数据执行错误检测和纠正功能。更详细地,ECC引擎1213可针对将要写入非易失性存储器装置1220的数据生成纠错码(或奇偶校验位)。生成的纠错码可与将要写入非易失性存储器装置1220的数据一起存储在非易失性存储器装置1220中。在存储在非易失性存储器装置1220中的数据从非易失性存储器装置1220读取的情况下,ECC引擎1213可基于读取数据和与其对应的纠错码来检测读取数据的错误,可纠正检测到的错误,并可输出已纠错的读取数据。
主机接口1214可遵从给定的接口协议的与主机1100通信。在一个实施例中,给定接口协议可包括用于各种接口(诸如,ATA(高级技术附件)接口、SATA(串行ATA)接口、e-SATA(外部SATA)接口、SCSI(小型计算机小型接口)接口、SAS(串行连接SCSI)接口、PCI(***组件互连)接口、PCIe(PCI快速)接口、NVMe(NVM快速)接口、IEEE 1394接口、USB(通用串行总线)接口、SD(安全数字)卡接口、MMC(多媒体卡)接口、eMMC(嵌入式多媒体卡)接口、UFS(通用闪存)接口、eUFS(嵌入式通用闪存)接口、CF(紧凑型闪存)卡接口或网络接口)的协议。主机接口1214可基于给定的接口协议从主机1100接收信号,并且可基于所接收的信号进行操作。可选择地,主机接口1214可基于给定的接口协议向主机1100发送信号。
缓冲存储器1215可以是被配置为临时存储输入到存储控制器1210的数据的写入缓冲器或读取缓冲器。可选择地,缓冲存储器1215可被配置为存储存储控制器1210操作所需的各种信息。例如,缓冲存储器1215可存储由FTL1212管理的映射表(例如,图7的命名空间映射表NSMT)。可选择地,缓冲存储器1215可存储与FTL 1212相关联的软件、固件或信息。
NVM接口1216可被配置为遵从给定的通信协议与非易失性存储器装置1220通信。在一些实施例中,给定接口协议可包括用于各种接口(诸如,触发接口(toggle interface)和开放式NAND闪存接口(ONFI))的协议。在一些实施例中,NVM接口1216可基于触发接口与非易失性存储器装置1220通信。在这种情况下,NVM接口1216可通过多个通道与非易失性存储器装置1220通信。在一些实施例中,多个通道中的每个可包括被配置为传送各种控制信号、数据信号和数据选通信号的多条信号线。
图3示出根据本公开的一些实施例的图1的非易失性存储器装置1220的框图。参照图1和图3,非易失性存储器装置1220可包括存储器单元阵列1221、行解码器电路1222、页缓冲器电路1223、数据输入/输出电路1224和控制逻辑电路1225。
存储器单元阵列1221可包括多个存储器块(例如,图8的存储器块BLK0至BLKc)。多个存储器块中的每个可包括多个存储器单元。每个存储器块可通过至少一条地选择线(或多条地选择线)GSL、字线WL和至少一条串选择线(或多条串选择线)SSL与行解码器电路1222连接。每个存储器块可通过多条位线BL与页缓冲器电路1223连接。多个存储器块可共同与多条位线BL连接。
行解码器电路1222可通过串选择线SSL、字线WL和地选择线GSL连接到存储器单元阵列1221。行解码器电路1222可由控制逻辑电路1225控制。
在一个示例操作中,行解码器电路1222可从存储控制器1210接收行地址RA并且可对接收的行地址RA进行解码。行解码器电路1222可响应于解码的行地址而选择与存储器单元阵列1221连接的字线WL中的一条。在控制逻辑电路1225的控制下,行解码器电路1222可基于解码的行地址来调节将要施加到串选择线SSL、字线WL和地选择线GSL的电压。
页缓冲器电路1223可通过多条位线BL与存储器单元阵列1221连接。页缓冲器电路1223可通过多条数据线DL与数据输入/输出电路1224连接。
页缓冲器电路1223可由控制逻辑电路1225控制。
在写入操作中,页缓冲器电路1223可存储将写入到存储器单元阵列1221的数据。页缓冲器电路1223可基于存储的数据向位线BL施加电压。在与写入操作或擦除操作相关联的验证读取操作中或读取操作中,页缓冲器电路1223可感测位线BL的电压并且可存储感测结果。
数据输入/输出电路1224可通过多条数据线DL连接到页缓冲器电路1223。数据输入/输出电路1224可由控制逻辑电路1225控制。在一个示例操作中,数据输入/输出电路1224可从存储控制器1210接收列地址CA。数据输入/输出电路1224可输出由页缓冲器电路1223读取的数据之中的与列地址CA对应的数据。数据输入/输出电路1224可基于列地址CA,通过数据线DL将从存储控制器1210接收的数据“DATA”传输到页缓冲器电路1223。
控制逻辑电路1225可从存储控制器1210接收命令CMD。控制逻辑电路1225可与存储控制器1210交换控制信号CTRL。控制逻辑电路1225可对接收的命令CMD进行解码。控制逻辑电路1225可基于解码的命令来控制行解码器电路1222、页缓冲器电路1223和数据输入/输出电路1224。
图4示出根据本公开的一些实施例的存储***2000的软件层。参照图1、图2和图4,存储***1000的软件层可包括应用层2110、文件***层2120、装置驱动器层2130和FTL2210。在一个实施例中,应用层2110、文件***层2120和装置驱动器层2130可被包括在主机2100中,并且FTL 2210和非易失性存储器装置2220可被包括在存储装置2200中。
应用层2110可包括在主机2100中或由主机2100驱动的各种应用程序(或虚拟机)。文件***层2120可被配置为组织在应用层2110处使用的文件或数据。例如,文件***层2120可将存储装置2200的存储空间管理为逻辑块地址。文件***层2120可将逻辑块地址分配给将被存储在存储装置2200中的数据,并且可管理逻辑块地址。
在一些实施例中,在应用层2110中驱动的应用程序均可在被执行时生成唯一的命名空间。通过每个应用程序写入或读取的数据可以是与其唯一命名空间相关联的输入/输出。例如,一个或多个应用程序可被实现为共享一个命名空间。
在一些实施例中,文件***层2120的格式可基于主机2100的操作***而改变。例如,文件***层2120可包括各种文件***(诸如,FAT(文件分配表)、FAT32、NTFS(NT文件***)、HFS(分层文件***)、JSF2(日志文件***2)、XFS、ODS-5(磁盘上结构-5)、UDF、ZFS、UFS(Unix文件***)、ext2、ext3、ext4、ReiserFS、Reiser4、ISO 9660、Gnome VFS、BFS和WinFS)中的一个或多个。
装置驱动器层2130可将来自文件***层2120或应用层2110的信息转换成可由存储装置2200识别的信息。在一些实施例中,应用层2110、文件***层2120和装置驱动器层2130可以以软件的形式实现,并且可在主机2100上驱动。
FTL 2210可执行主机2100与非易失性存储器装置2220之间的各种维护操作。例如,FTL 2210可被配置为将从主机2100接收的请求的逻辑块地址转换为非易失性存储器装置2220中的可用存储器的物理块地址(或物理地址)。
图5示出根据本公开的一些实施例的存储***3000的框图。参照图5,存储***3000可包括第一主机3110、第二主机3120和存储装置3200。
可在第一主机3110上驱动多个虚拟机。例如,第一主机3110可支持第一虚拟机VM1和第二虚拟机VM2。第一虚拟机VM1和第二虚拟机VM2可各自执行独立的操作***。第一主机3110上的管理程序(hypervisor)3111可允许在第一主机3110上驱动的多个虚拟机VM1和VM2访问存储***3000的资源。例如,第一虚拟机VM1和第二虚拟机VM2可通过管理程序3111访问存储装置3200。响应于第一虚拟机VM1或第二虚拟机VM2的请求,管理程序3111可向存储装置3200发送用于将数据写入存储装置3200的请求或用于读取存储在存储装置3200中的数据的请求。在一些实施例中,管理程序3111可被称为“主节点”或“协调器”。
可在第二主机3120上驱动单个虚拟机。例如,第二主机3120可支持第三虚拟机VM3。第三虚拟机VM3可通过第二主机3120上的管理程序3121访问存储***3000的资源。例如,第三虚拟机VM3可通过管理程序3121访问存储装置3200。响应于第三虚拟机VM3的请求,管理程序3121可向存储装置3200发送用于将数据写入存储装置3200的请求或用于读取存储在存储装置3200中的数据的请求。
图6示出根据本公开的一些实施例的存储***4000的框图。参照图6,存储***4000可包括主机4100和存储装置4200。
主机4100可支持多个虚拟机。例如,可在主机4100上驱动虚拟机VM1、VM2、……、VMn(其中,n是正整数)。可在一个虚拟机上驱动至少一个应用。虚拟机VM1、VM2、……、VMn可通过管理程序4110访问存储装置4200。响应于虚拟机VM1、VM2、……、VMn的请求,管理程序4110可向存储装置4200发送用于将数据写入存储装置4200的请求或用于读取存储在存储装置4200中的数据的请求。
存储装置4200可包括管理控制器(administration controller)(在下文中被称为“管理控制器”(admin controller))4210、存储控制器4211至421m(其中,m是自然数)和非易失性存储器装置4220。存储装置4200可支持物理功能(PF)装置PF0。可通过PF装置PF0将用于访问存储装置4200的请求从主机4100提供到管理控制器4210或存储控制器4211至421m。在主机4100上驱动的虚拟机VM1至VMn可通过PF装置PF0共享可以是单个存储装置的存储装置4200。
管理控制器4210可从主机4100接收用于管理非易失性存储器装置4220的命名空间4221的请求(或命令)。例如,主机4100的管理程序4110可向管理控制器4210发送用于指定命名空间4221中的一个或多个的优先级或将要存储到命名空间4221中的每个的数据的关键度的请求。在一些实施例中,管理程序4110可通过NVMe接口等向管理控制器4210发送请求。响应于从管理程序4110接收的请求,管理控制器4210可生成并管理命名空间映射表(例如,图7的命名空间映射表NSMT)。稍后将详细描述管理控制器4210的操作。
存储控制器4211至421m可与虚拟机VM1至VMn的一个进行通信。例如,存储控制器4211可响应于从虚拟机VM1接收的请求而访问非易失性存储器装置4220。存储控制器4212可响应于从虚拟机VM2接收的请求而访问非易失性存储器装置4220,并且存储控制器421m可响应于从虚拟机VMn接收的请求而访问非易失性存储器装置4220。在一些实施例中,与图6中所示的实施例不同,两个虚拟机可共享一个存储控制器。
非易失性存储器装置4220可被划分为“k”个命名空间NS1至NSk(即,4221)。命名空间4221可具有不同的特性或要求。例如,命名空间NS1的可靠性和/或优先级可与命名空间NS2的可靠性和/或优先级不同。
“n”个虚拟机VM1至VMn可共享具有“k”个命名空间4221的单个非易失性存储器装置4220。例如,虚拟机VM1至VMn的子集(或至少一部分)可将数据存储在命名空间4221的子集(或至少一部分)中。
在一些实施例中,将要通过一个虚拟机写入存储装置4200的数据的关键度或优先级可与将要通过另一个虚拟机写入存储装置4200的数据的关键度或优先级不同。例如,当在虚拟机VM1上驱动具有相对低的关键度或低的优先级的应用(例如,数据流应用或数据显示应用)时,可在虚拟机VM2上驱动具有相对高的关键度或高的优先级的应用(例如,自动驾驶应用或救生应用)。在以上实施例中,将要通过虚拟机VM1写入存储装置4200的数据的关键度或优先级可低于将要通过虚拟机VM2写入存储装置4200的数据的关键度或优先级。
在以上实施例中,响应于主机4100的请求,管理控制器4210可针对命名空间4221中一个或多个指定优先级和数据关键度。基于为每个命名空间4221指定的优先级和数据关键度,存储装置4200可管理非易失性存储器装置4220和从虚拟机VM1至VMn接收的输入/输出请求(例如,写入请求或读取请求)。
图7示出根据本公开的一些实施例的命名空间映射表NSMT。参照图6和图7,响应于从主机4100接收的请求,管理控制器4210可生成命名空间映射表NSMT并可更新命名空间映射表NSMT。主机4100可确定命名空间4221中的每个(或命名空间4221中的一个或多个)的数据关键度和优先级。例如,主机4100可管理数据,使得必须以较低时延读取的数据被存储在更重要的命名空间中。主机4100可确定具有相同数据关键度的命名空间的优先级。对具有相同数据关键度的命名空间中的具有高优先级的命名空间的输入/输出请求可被更快处理。
存储装置4200可通过从主机4100接收特定命名空间的关键度和优先级并基于接收的信息生成的命名空间映射表NSMT来使用数据关键度和优先级标记命名空间4221。存储装置4200可基于命名空间映射表NSMT来访问和管理将要存储到非易失性存储器装置4220的数据。存储装置4200可基于命名空间映射表NSMT来确定用于处理对非易失性存储器装置4220的输入/输出请求的顺序。例如,存储装置4200可针对重要的并且具有高优先级的数据生成特定的端到端输入/输出路径。不重要的数据或具有低优先级的数据可共享输入/输出队列,并且可被指定为不紧急的。
命名空间映射表NSMT可包括与任意命名空间的命名空间标识NSID、指定给任意命名空间的存储控制器以及将要写入任意命名空间(或从任意命名空间读取)的数据的关键度和优先级有关的信息。命名空间4221的数据关键度可以被分类为“任务关键”、“重要”或“不关键”,但是本公开不一定限于此。命名空间4221的数据优先级可被分类为“极端”、“高”、“低”或“非常低”,但是本公开不一定限于此。
在一些实施例中,命名空间4221的数据关键度可被分类为数据目的、数据类型或数据相关应用(诸如,“流传输数据”、“显示数据”、“商业智能数据”),或者使用数据目的、数据类型或数据相关应用来标记。存储装置4200可基于从主机4100提供的以上标签来确定是否压缩特定类型的数据。例如,存储装置4200可压缩视频数据或图像数据,并且可将压缩的数据存储在非易失性存储器装置4220中。
在一些实施例中,可针对每个输入/输出请求(或针对从主机4100接收的每个命令)区分命名空间4221的数据关键度。例如,任意命名空间的数据关键度可被指定以仅对于读取命令是“任务关键”的或者仅对于写入命令是重要的。例如,在一种配置中,对仅对于读取命令是“任务关键”的命名空间的写入命令可比对该命名空间的读取请求相对缓慢地处理。
“任务关键”的命名空间可被定义以具有关于在主机4100上驱动的应用的非常重要的数据,并且访问非常重要的数据所需的时延可被设置为存储装置4200能够提供的范围内的最小值。存储装置4200可内部地(或自动地)管理“任务关键”的命名空间的数据,使得对损坏(corruption)具有最高免疫力或使得数据的保留率高。例如,存储装置4200可将以上数据存储在具有高可靠性的存储器单元(或存储器块)中,可频繁地对以上数据执行读刷新操作,可保留以上数据的多个副本,或者可对以上数据设置RAID。例如,与“任务关键”数据相关联的命名空间可被存储在非易失性存储器装置4220中的存储器单元之中的具有最高可靠性的存储器单元(例如,单层单元(SLC)或应用故障安全奇偶校验RAID(fail-safetyparity RAID)的存储器单元)中。
存储装置4200可管理“任务关键”的命名空间的数据,使得该数据具有最低时延。例如,存储装置4200可将以上数据存储在对数据输入/输出的故障是安全的(例如,缺陷预防)和单独的存储器块中。例如,以上存储器块可以是其中能够阻碍读取时延的操作(诸如,读取重试操作)的频率由于读取错误等被避免而减少的存储器块。因此,当在主机4100上驱动的应用读取以上数据时,“任务关键”的命名空间的数据可具有最低时延。
例如,在一个实施例中,在图7中示出这样的示例:命名空间NS1未被指定给特定存储控制器(“x”),将要写入命名空间NS1的数据(或已写入NS1的数据)可被指定为“任务关键”,并且将要写入命名空间NS1的数据(或已写入NS1的数据)的优先级可以是“极端”。因此,将要写入命名空间NS1的数据(或已写入NS1的数据)可被存储在非易失性存储器装置4220的存储器单元之中的具有最高可靠性的存储器单元(例如,单层单元(SLC)或应用了故障安全奇偶校验RAID的存储器单元)中,并且与任何其他输入/输出请求相比,用于访问命名空间NS1的输入/输出请求可被更快地处理。
在图7中示出这样的示例:命名空间NS2被指定给存储控制器4212(“控制器2”),将要写入命名空间NS2的数据(或已写入NS2的数据)可被设置为不重要(“不关键”),并且将要写入命名空间NS2的数据(或已写入NS2的数据)的优先级可以是“非常低”。因此,命名空间NS2可仅被存储控制器4212访问,将要写入命名空间NS2的数据(或已写入NS2的数据)可被存储在非易失性存储器装置4220的存储器单元之中的具有相对低可靠性的存储器单元(例如,多层单元(MLC)或未应用故障安全奇偶校验RAID的存储器单元)中,并且与任何其他输入/输出请求相比,用于访问命名空间NS2的输入/输出请求可被更慢地处理。
图7还示出了这样的示例:命名空间NSk未被指定给特定存储控制器(“x”),将要写入命名空间NSk的数据(或已写入NSk的数据)可以是“重要的”,并且将要写入命名空间NSk的数据(或已写入NSk的数据)的优先级可以是“高”。因此,将要写入命名空间NSk的数据(或已写入NSk的数据)可被存储在非易失性存储器装置4220的存储器单元之中的具有相对高可靠性的存储器单元中,并且与任何其他输入/输出请求相比,用于访问命名空间NSk的输入/输出请求可被相对快速地处理。
图8示出根据本公开的一些实施例的非易失性存储器装置4220的存储器块BLK1至BLKc。参照图6、图7和图8,非易失性存储器装置4220可包括存储器块BLK0至BLKc。
存储器块BLK0至BLKc可被划分为多个域。可针对任务关键数据指定多个域之中的特定域的ID。例如,存储器块BLK0至BLKa可被指定为存储任务关键数据。在这个示例中,通过存储装置4200(例如,由存储装置4200驱动的FTL),与任务关键命名空间(例如,命名空间NS1)对应的逻辑块地址可被映射到与域对应的物理块地址(例如,包括存储器块BLK0至BLKa的物理块地址)上。因此,任务关键数据可被存储在与非任务关键数据分离的物理空间中。结果,可防止重要数据和不重要数据之间的干扰。例如,不重要数据可对重要数据的时延或完整性没有影响。此外,可防止由于数据拥塞而导致的不必要的垃圾收集。
在一些实施例中,为了支持对为任务关键数据指定的域的超量供应(overprovisioning),非易失性存储器装置4220还可包括空闲存储器块。例如,响应于当从主机4100接收到与任务关键命名空间对应的写入数据和逻辑块地址时,存储装置4200可将接收的逻辑块地址映射到空闲存储器块的物理块地址(PBA)上,而不是映射到存储器块BLK0至BLKa。在另一示例中,为了执行读取刷新操作或垃圾收集操作,存储装置4200可将存储在存储器块BLK0至BLKa中的数据的至少一部分迁移到空闲存储器块,并且可再次将与迁移的数据对应的逻辑块地址映射到空闲存储器块的物理块地址上。
在一些实施例中,任务关键命名空间可始终通过FTL(例如,通过由对应的存储控制器驱动的FTL)被高速缓存在内部缓冲器或外部缓冲存储器中。例如,图7的命名空间映射表NSMT可始终被高速缓存在存储装置4200的内部存储器装置或外部存储器装置中。
在一些实施例中,存储装置4200可将积极的数据保护策略应用于任务关键域(例如,存储器块BLK0至BLKa)。例如,存储装置4200可将各种数据保护策略应用于任务关键域,各种数据保护策略提供针对快速读取时延和块损坏的保护。
多个域之中的一些域可被指定为存储重要数据或存储不重要数据。例如,重要数据和不重要数据可具有比任务关键数据更低的优先级。例如,存储器块BLKa+1至BLKb可被指定为存储重要数据。剩余的存储器块(例如,存储器块BLKb+1至BLKc)可被指定为存储不重要的数据。
在一些实施例中,存储装置4200可动态地改变存储器块BLK0至BLKc的域。存储装置4200可基于任务关键域中包括的空闲存储器块的数量来动态地改变任务关键域的大小。例如,存储装置4200可(例如,周期性地)监视用于存储任务关键数据的空闲物理空间。例如,存储装置4200可监视任务关键域中包括的空闲存储器块的数量。响应于当任务关键域中包括的空闲存储器块的数量是阈值(例如,“0”)或更小时,存储装置4200可确定用于存储任务关键数据的空闲物理空间是不足的。
基于确定用于存储任务关键数据的空闲物理空间不足,存储装置4200可从不属于任务关键域的存储器块(例如,存储器块BLKa+1至BLKc中的空闲块)中重新组织(或再次指定)不包含数据的存储器块作为(或用于)任务关键域。又例如,基于确定非易失性存储器装置4220的容量已满,存储装置4200可对不属于任务关键域的存储器块(例如,存储器块BLKa+1至BLKc)之中的至少一些存储器块执行擦除操作,并且可将擦除的存储器块重新组织到任务关键域中。
图9示出根据本公开的一些实施例的可用于与主机4100通信的主机输入/输出队列510。参照图6至图9,主机4100的虚拟机VM1、VM2和VMn可通过主机输入/输出队列510之中的相应的(一个或多个)输入/输出队列来访问存储装置4200。主机输入/输出队列510可由存储控制器4211至421m之中的相应的存储控制器管理。主机输入/输出队列510可存储从主机4100接收的命令和/或可包括与从主机4100接收的命令对应的完成条目。
存储控制器4211至421m中的每个存储控制器的主机输入/输出队列的优先级可基于命名空间映射表NSMT被确定。例如,与任务关键命名空间相关联(或连接(attached to)到任务关键命名空间)的存储控制器的主机输入/输出队列的优先级可被确定为“关键”(例如,关键主机输入/输出队列511和514)。与关键命名空间相关联的存储控制器的主机输入/输出队列的优先级可被确定为“重要”(例如,重要主机输入/输出队列515)。与不关键或不重要的命名空间相关联的存储控制器的主机输入/输出队列的优先级可被确定为“普通”(例如,普通主机输入/输出队列512和513)。
可基于主机输入/输出队列510中的每个队列的优先级来确定处理存储在主机输入/输出队列510中的命令的顺序。例如,存储装置4200可选择输入/输出队列仲裁(优先级)策略,使得存储在关键主机输入/输出队列(例如,主机输入/输出队列511和514)中的命令和完成条目在任何其他命令和完成条目之前被处理。因此,存储在关键主机输入/输出队列中的命令可比任何其他命令更快地被相应的存储控制器提取,并且存储在关键主机输入/输出队列中的完成条目可比任何其他条目更快地发布到主机4100。
在一些实施例中,用于特定命名空间的命令可存储在对应的存储控制器的主机输入/输出队列中。例如,基于图7的命名空间映射表NSMT,用于命名空间NS2的命令可被添加(或入队)到存储控制器4212的主机输入/输出队列。
在一些实施例中,一些命名空间可能不被指定给特定的存储控制器。例如,在图7中所示的实施例中,命名空间NS1可能不被指定给特定的存储控制器。在这样的情况下,用于访问命名空间NS1的请求可基于命名空间NS1的数据关键度被添加到主机输入/输出队列510中的一个。例如,基于命名空间NS1是“任务关键”的,用于访问命名空间NS1的命令可被添加(或入队)到关键主机输入/输出队列511和514中的一个。
在一些实施例中,特定虚拟机可指定优先级,使得其输入/输出请求具有高优先级。例如,虚拟机VM1可向存储装置4200请求它自身的输入/输出请求始终具有最高优先级,或可以以它自身的输入/输出请求始终具有最高优先级的这样的方式对存储装置4200进行设置。不管以上请求(或配置)如何,存储装置4200可使用基于命名空间映射表NSMT的优先级覆写以上请求(或配置)。例如,不管虚拟机VM1的请求(或配置)如何,存储装置4200可基于与相应的存储控制器相关联的命名空间的数据关键度来确定主机输入/输出队列510中的每个的优先级。
图10示出根据本公开的一些实施例的可用于与非易失性存储器装置4220通信的NVM输入/输出队列520。参照图6至图10,存储在主机输入/输出队列510中的命令可被发送到NVM输入/输出队列520中的一个。
当相应的存储控制器从主机输入/输出队列510中的一个获取命令时,存储控制器可根据命名空间映射表NSMT检查与该命令对应的命名空间。基于对应的命名空间的优先级,存储控制器可将与该命令对应的对非易失性存储器装置4220的输入/输出请求添加(或入队)到NVM输入/输出队列520中的一个。
例如,与关键主机输入/输出队列511的命令CMD1对应的命名空间可以是“任务关键”。包括关键主机输入/输出队列511的存储控制器可检查命名空间映射表NSMT。响应于确定与命令CMD1对应的命名空间是“任务关键”,存储控制器可将与命令CMD1对应的输入/输出请求添加(或入队)到NVM输入/输出队列520中的关键NVM输入/输出队列521的提交队列。
存储装置4200可基于NVM输入/输出队列520中的每个的优先级来处理NVM输入/输出队列520的输入/输出请求。例如,在存储装置4200上驱动的FTL可选择用于NVM输入/输出队列520的仲裁(或优先级排序)策略,使得关键NVM输入/输出队列521的提交队列的请求被首先处理。在一些实施例中,NVM输入/输出队列520可基于加权轮询算法被仲裁;在这样的情况下,加权轮询算法的权重可基于NVM输入/输出队列520中的每个的优先级被确定。在存储装置4200上驱动的FTL可响应于NVM输入/输出队列520的输入/输出请求而访问非易失性存储器装置4220。
可在普通NVM输入/输出队列522和低优先级NVM输入/输出队列523的输入/输出队列之前处理与关键NVM输入/输出队列521的提交队列中的命令CMD1对应的输入/输出请求。响应于与命令CMD1对应的输入/输出请求,FTL可从任务关键域的存储器块(例如,从存储器块BLK0至BLKa)读取数据,或者可向任务关键域的存储器块写入数据。然后,FTL可将与命令CMD1对应的完成条目添加到关键NVM输入/输出队列521的完成队列。关键NVM输入/输出队列521的完成队列的完成条目可以以高于普通NVM输入/输出队列522或低优先级NVM输入/输出队列523的输入/输出请求的优先级的优先级(例如,在普通NVM输入/输出队列522或低优先级NVM输入/输出队列523的输入/输出请求之前)提供给主机4100。
在以上方案中,存储装置4200可针对具有高优先级并且是“任务关键”的数据的提供特定的输入/输出路径。例如,当请求与具有高优先级并且是“任务关键”的数据相关联时,存储装置4200可使用包括关键主机输入/输出队列511和关键NVM输入/输出队列521的输入/输出路径来提供主机4100的输入/输出请求。
在另一示例中,与普通主机输入/输出队列512的命令CMD2对应的命名空间和与普通主机输入/输出队列513的命令CMD3对应的命名空间可以被设置为重要或不重要。包括普通主机输入/输出队列512的存储控制器和包括普通主机输入/输出队列513的存储控制器可检查命名空间映射表NSMT;响应于确定与命令CMD2对应的命名空间和与命令CMD3对应的命名空间不是“任务关键”,存储控制器可将与命令CMD2对应的输入/输出请求和与命令CMD3对应的输入/输出请求添加(或入队)到NVM输入/输出队列520之中的普通NVM输入/输出队列522或低优先级NVM输入/输出队列523。
在一些实施例中,一些命名空间可具有相同的数据关键度。在这样的情况下,存储装置4200可基于以上命名空间中的每个的相应优先级来处理对以上命名空间的输入/输出请求。例如,在第一命名空间具有任务关键数据关键度和高优先级并且第二命名空间具有任务关键数据关键度和低优先级的情况下,存储装置4200可在处理与第二命名空间相关联的输入/输出请求之前处理与第一命名空间相关联的输入/输出请求。
在一些实施例中,一些命名空间可仅针对特定输入/输出命令被指定为“任务关键”。例如,命名空间可仅针对读取命令、写入命令或针对任何其他输入/输出命令(例如,比较命令和数据存储管理(DSM)命令)的一部分被指定为“任务关键”。因此,用于以上命名空间的所有命令可能不会被添加到关键NVM输入/输出队列(例如,521)。例如,命令CMD1可以是写入命令,并且与命令CMD1对应的命名空间可仅相对于读取命令是“任务关键”。在这样的情况下,与图10中示出的示例不同,与命令CMD1对应的写入请求可被添加(或入队)到普通NVM输入/输出队列522的提交队列,或者被添加到低优先级NVM输入/输出队列523的提交队列,而不是关键NVM输入/输出队列521。此外,与命令CMD1对应的完成条目可被添加(或入队)到普通NVM输入/输出队列522的完成队列,或者被添加到低优先级NVM输入/输出队列523的完成队列。
图11示出根据本公开的一些实施例的图6的存储装置4200的操作方法的流程图。参照图6至图11,存储装置4200可执行操作S110至操作S160。
在操作S110中,存储装置4200可通知主机4100可执行用于针对每个命名空间指定数据关键度和优先级的功能。例如,存储装置4200的管理控制器4210可向主机4100提供指示可为每个命名空间指定数据关键度和优先级的信息。
在操作S120中,存储装置4200可确定以上功能是否被主机4100批准。例如,响应于在操作S110中从存储装置4200提供的信息,主机4100可批准指定功能。存储装置4200可响应于接收到由主机4100对功能的批准而执行操作S130。如果未批准(例如,当确定以上功能未被主机批准时),存储装置4200可执行操作S160。在操作S130中,存储装置4200可从主机4100的管理员接收用于指定命名空间4221的数据关键度和优先级的请求。例如,存储装置4200的管理控制器4210可启用以上功能。存储装置4200的管理控制器4210可从主机4100的管理程序4110接收用于指定多个命名空间4221中的至少一个命名空间的数据关键度和优先级的请求。
在操作S140中,存储装置4200可响应于在操作S110中接收的请求而生成命名空间映射表NSMT。例如,存储装置4200的管理控制器4210可基于在操作S110中接收的请求来生成或更新命名空间映射表NSMT。
在操作S150中,存储装置4200可基于命名空间的数据关键度将非易失性存储器装置4220的存储器块划分为多个域。例如,存储装置4200可至少部分地基于命名空间映射表NSMT来划分存储器块。例如,存储装置4200可将存储器块BLK0至BLKc划分成多个域,并且可将多个域中的至少一个域指定为用于存储任务关键数据的域。
在当主机4100不批准指定功能时发生的操作S160中,存储装置4200可在没有数据关键度和优先级的情况下管理命名空间。例如,存储装置4200可禁用以上功能。
图12示出根据本公开的一些实施例的通过图6的存储装置4200执行从图6的主机4100接收的请求的方法的流程图。参照图6至图12,存储装置4200可执行操作S210至操作S230。
在操作S210中,存储装置4200可从主机4100接收命令和地址。例如,命令可以是读取命令、写入命令、比较命令、数据存储管理命令等。
在操作S220中,存储装置4200可响应于在操作S210中接收的命令和地址来检查命名空间映射表NSMT。
在操作S230中,存储装置4200可基于命名空间映射表NSMT,使用合适的主机输入/输出队列和NVM输入/输出队列来处理与接收的命令对应的请求。例如,如在以上参照图9和图10描述的方案中一样,存储装置4200可执行操作S230。
在一些实施例中,可在主机4100与存储装置4200之间提供能够通过管理控制器4210的管理队列指定命名空间4221中的每个命名空间的数据关键度和优先级的主机-存储接口。非易失性存储器装置4220的输入/输出队列(例如,NVM输入/输出队列520)之间的仲裁策略可至少部分地基于连接到存储装置4200中的存储控制器4211至421m中的每个的命名空间的关键度和优先级。存储装置4200可基于命名空间的关键度和优先级来调整输入/输出请求的顺序,从而确保在所有条件下对任务关键数据的访问。此外,可改进存储在存储装置4200中的任务关键数据的读取响应时间(例如,可减少存储在存储装置4200中的任务关键数据的读取响应时间)。
在一些实施例中,存储装置4200可基于关键度和优先级来管理非易失性存储器装置4220的输入/输出队列。例如,非易失性存储器装置4220的一些输入/输出队列(例如,关键NVM输入/输出队列521)可被映射到(或指定到)一些输入/输出队列(例如,关键主机输入/输出队列511和514)以用于主机4100与存储装置4200之间的通信。因此,用于管理和访问重要数据的端到端路径可被提供给主机4100。
根据本公开的一些实施例的存储装置可响应于来自主机的请求而为每个命名空间指定数据关键度和优先级。存储装置可基于每个命名空间的数据关键度和优先级内部地调度从主机接收的输入/输出请求。此外,存储装置可将具有不同数据关键水平的数据存储在不同的存储器块中。因此,可对于重要(例如,被指定为“任务关键”的数据)并具有高优先级的数据确保低延时和高可靠性。作为示例,“任务关键”数据可包括对自主车辆和医疗***的***来说必需的数据,而“重要”和“不重要”数据可以是诸如备份视频日志的数据或非时间敏感数据。
虽然已经参照本公开的实施例描述了本公开,但是对于本领域普通技术人员来说将清楚的是,在不脱离如所附权利要求中阐述的本公开的精神和范围的情况下,可对其进行各种改变和修改。
Claims (20)
1.一种操作存储装置的方法,所述存储装置包括非易失性存储器装置,所述方法包括:
通知主机指定功能可用,所述指定功能用于将数据关键度和优先级指定给非易失性存储器装置的命名空间;
响应于接收到对所述指定功能的批准,启动所述指定功能;
从主机接收用于指定命名空间中的第一命名空间的数据关键度和优先级的第一请求;以及
响应于第一请求生成命名空间映射表。
2.根据权利要求1所述的方法,其中,生成命名空间映射表的步骤包括:
将第一数据关键度映射到第一命名空间;以及
将第一优先级映射到第一命名空间。
3.根据权利要求2所述的方法,其中,生成命名空间映射表的步骤还包括:
将包括在所述存储装置中的一个或多个存储控制器中的一个存储控制器映射到第一命名空间。
4.根据权利要求1所述的方法,还包括:
从主机接收对所述指定功能的不批准;以及
响应于所述不批准而禁用所述指定功能。
5.根据权利要求1所述的方法,还包括:
从主机接收对第二命名空间的读取命令;
执行命名空间映射表的查找;以及
基于命名空间映射表,使用第一主机输入/输出队列和第一非易失性存储器输入/输出队列处理所述读取命令。
6.根据权利要求5所述的方法,其中,执行命名空间映射表的查找的步骤包括:
根据命名空间映射表,确定被指定给第二命名空间的存储控制器,确定第二命名空间的数据关键度,并确定第二命名空间的优先级。
7.根据权利要求5所述的方法,其中,第一主机输入/输出队列被提供用于所述存储装置与主机之间的通信,其中,第一非易失性存储器输入/输出队列被提供用于主机与所述存储装置的非易失性存储器装置之间的通信,
其中,基于命名空间映射表使用第一主机输入/输出队列和第一非易失性存储器输入/输出队列处理所述读取命令的步骤包括:
响应于被指定给第二命名空间的存储控制器是包括在所述存储装置中的一个或多个存储控制器之中的第一控制器,将所述读取命令添加到包括在第一控制器中的第一主机输入/输出队列;以及
响应于第二命名空间的数据关键度被指定为第一关键度,将与所述读取命令对应的输入/输出请求添加到第一非易失性存储器输入/输出队列。
8.根据权利要求7所述的方法,其中,基于第一关键度来确定处理第一主机输入/输出队列中的读取命令的顺序。
9.根据权利要求7所述的方法,其中,基于第一关键度来确定处理与所述读取命令对应的被添加到第一非易失性存储器输入/输出队列中的输入/输出请求的顺序。
10.根据权利要求1至权利要求9中的任意一项所述的方法,还包括:
将非易失性存储器装置的多个存储器块划分成一个或多个域;
将所述一个或多个域中的第一域指定为第一数据关键度;以及
管理包括在第一域中的存储器块。
11.根据权利要求10所述的方法,其中,当第一数据关键度被指定为“任务关键”时,第一域被配置为包括所述多个存储器块之中的具有最高可靠性的存储器块。
12.一种存储装置,包括:
一个或多个存储控制器;
非易失性存储器装置;以及
管理控制器,管理控制器被配置为:
通知主机指定功能可用,所述指定功能用于将数据关键度和优先级指定给非易失性存储器装置的命名空间;
在接收到使用所述指定功能的批准时启用所述指定功能;
从主机接收用于指定命名空间中的第一命名空间的数据关键度和优先级的第一请求;以及
响应于第一请求生成命名空间映射表。
13.根据权利要求12所述的存储装置,其中,管理控制器响应于第一请求而将第一数据关键度和第一优先级映射到第一命名空间。
14.根据权利要求13所述的存储装置,其中,管理控制器还响应于第一请求而将所述一个或多个存储控制器中的第一控制器映射到第一命名空间。
15.根据权利要求12或权利要求13所述的存储装置,其中,所述存储装置被配置为:
基于命名空间映射表来确定所述一个或多个存储控制器中的每个的主机输入/输出队列的优先级,
从主机接收对第二命名空间的读取命令;
根据命名空间映射表确定被指定给第二命名空间的第一存储控制器;
响应于所述确定,将所述读取命令添加到第一存储控制器的主机输入/输出队列;以及
当第二命名空间的数据关键度是第一关键度时,将与所述读取命令对应的输入/输出请求添加到第一非易失性存储器输入/输出队列,其中,第一非易失性存储器输入/输出队列被配置用于主机与所述存储装置的非易失性存储器装置之间的通信。
16.根据权利要求15所述的存储装置,其中,基于第一关键度来确定处理第一存储控制器的主机输入/输出队列的读取命令的顺序,
其中,基于第一关键度来确定处理与所述读取命令对应的被添加到第一非易失性存储器输入/输出队列的输入/输出请求的顺序。
17.一种存储装置,包括:
一个或多个存储控制器;
管理控制器;以及
非易失性存储器装置,非易失性存储器装置包括被划分为一个或多个域的多个存储器块,
其中,所述存储装置被配置为:
通知主机指定功能可用,所述指定功能用于将数据关键度和优先级指定给非易失性存储器装置的命名空间;
响应于主机的启用请求而启用所述指定功能;
从主机接收对与命名空间之中的第一命名空间相关联的第一数据的写入命令,第一命名空间具有第一数据关键度和第一优先级;以及
响应于对第一数据的写入命令,将第一数据写入到所述一个或多个存储器块中的一个存储器块,所述一个或多个存储器块被包括在所述一个或多个域中的被指定为第一数据关键度的第一域中。
18.根据权利要求17所述的存储装置,其中,所述存储装置根据命名空间映射表,执行第一命名空间的数据关键度和优先级以及与第一命名空间相关联的存储控制器的查找,
其中,命名空间映射表将第一命名空间与所述一个或多个存储控制器、第一数据关键度以及第一优先级相关联。
19.根据权利要求17或权利要求18所述的存储装置,其中,所述存储装置从主机接收对与具有第二数据关键度及第二优先级的第二命名空间相关联的第二数据的写入命令,并响应于对第二数据的写入命令而将第二数据写入到包括在被指定到第二数据关键度的第二域中的一个或多个存储器块中的一个存储器块,
其中,第二数据关键度和第一数据关键度彼此不同,
其中,第一域和第二域彼此不同。
20.根据权利要求19所述的存储装置,其中,所述存储装置从主机接收对与命名空间之中的具有第一数据关键度和第二优先级的第三命名空间相关联的第三数据的写入命令,并且响应于对第三数据的写入命令,将第三数据写入到包括在所述一个或多个域之中的被指定到第一数据关键度的第一域中的存储器块中的一个存储器块。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210074039A KR20220165855A (ko) | 2021-06-08 | 2021-06-08 | 스토리지 장치 및 그의 동작 방법 |
KR10-2021-0074039 | 2021-06-08 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115458013A true CN115458013A (zh) | 2022-12-09 |
Family
ID=84284123
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210149903.0A Pending CN115458013A (zh) | 2021-06-08 | 2022-02-18 | 存储装置及其操作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220391318A1 (zh) |
KR (1) | KR20220165855A (zh) |
CN (1) | CN115458013A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11961547B2 (en) * | 2022-02-09 | 2024-04-16 | Micron Technology, Inc. | Techniques for memory system refresh |
US20240069722A1 (en) * | 2022-08-31 | 2024-02-29 | Nvidia Corporation | Dynamically assigning namespace type to memory devices |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11163597B2 (en) * | 2016-01-20 | 2021-11-02 | Unisys Corporation | Persistent guest and software-defined storage in computing fabric |
US10387081B2 (en) * | 2017-03-24 | 2019-08-20 | Western Digital Technologies, Inc. | System and method for processing and arbitrating submission and completion queues |
US10564898B2 (en) * | 2018-06-11 | 2020-02-18 | Western Digital Technologies, Inc. | System and method for storage device management |
US10732897B2 (en) * | 2018-07-03 | 2020-08-04 | Western Digital Technologies, Inc. | Quality of service based arbitrations optimized for enterprise solid state drives |
US10606516B2 (en) * | 2018-08-01 | 2020-03-31 | Hewlett Packard Enterprise Development Lp | Systems and methods for I/O prioritization in NVMe-compliant storage devices |
US11625189B2 (en) * | 2021-06-28 | 2023-04-11 | Western Digital Technologies, Inc. | Systems and methods for fragmentation management in host buffers |
-
2021
- 2021-06-08 KR KR1020210074039A patent/KR20220165855A/ko active Search and Examination
-
2022
- 2022-01-19 US US17/578,678 patent/US20220391318A1/en active Pending
- 2022-02-18 CN CN202210149903.0A patent/CN115458013A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220391318A1 (en) | 2022-12-08 |
KR20220165855A (ko) | 2022-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11237769B2 (en) | Memory system and method of controlling nonvolatile memory | |
US20160062885A1 (en) | Garbage collection method for nonvolatile memory device | |
US8984219B2 (en) | Data storage device and method of writing data in the same | |
US11747989B2 (en) | Memory system and method for controlling nonvolatile memory | |
US10235069B2 (en) | Load balancing by dynamically transferring memory range assignments | |
US11086772B2 (en) | Memory system performing garbage collection operation and operating method of memory system | |
US20190258729A1 (en) | Key-value storage device and operating method thereof | |
US20220391318A1 (en) | Storage device and operating method thereof | |
US20210365367A1 (en) | Storage device and operating method thereof | |
KR20200132495A (ko) | 메모리 시스템, 컨트롤러 및 컨트롤러의 동작 방법 | |
CN111414133A (zh) | 操作存储器控制器和存储器***的方法以及存储器*** | |
KR20200114212A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
CN110389907B (zh) | 电子装置 | |
KR102596964B1 (ko) | 맵 캐시 버퍼 크기를 가변시킬 수 있는 데이터 저장 장치 | |
KR20210012641A (ko) | 메모리 시스템, 데이터 시스템 및 그 동작방법 | |
CN114613405A (zh) | 频繁读取干扰攻击者的标识和高速缓存 | |
US20230315646A1 (en) | Method of managing data in storage device based on variable size mapping, method of operating storage device using the same and storage device performing the same | |
KR20220103340A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US20240069771A1 (en) | Read operations for mixed data | |
US11294587B2 (en) | Data storage device capable of maintaining continuity of logical addresses mapped to consecutive physical addresses, electronic device including the same, and method of operating the data storage device | |
KR102583244B1 (ko) | 스토리지 장치 및 스토리지 장치의 동작 방법 | |
US20240069782A1 (en) | Storage device including nonvolatile memory device and operating method of storage device | |
EP4220414A1 (en) | Storage controller managing different types of blocks, operating method thereof, and operating method of storage device including the same | |
KR20230115195A (ko) | 액티브 존 리프레시를 수행하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법 | |
CN113253917A (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 |