CN114461133A - 存储装置中的主机接口层和处理请求的方法 - Google Patents
存储装置中的主机接口层和处理请求的方法 Download PDFInfo
- Publication number
- CN114461133A CN114461133A CN202111251989.XA CN202111251989A CN114461133A CN 114461133 A CN114461133 A CN 114461133A CN 202111251989 A CN202111251989 A CN 202111251989A CN 114461133 A CN114461133 A CN 114461133A
- Authority
- CN
- China
- Prior art keywords
- weight
- qos
- partition
- qos class
- queue
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 96
- 238000012545 processing Methods 0.000 title claims abstract description 12
- 230000015654 memory Effects 0.000 claims description 77
- 238000013519 translation Methods 0.000 claims description 49
- 238000013507 mapping Methods 0.000 claims description 33
- 230000004044 response Effects 0.000 claims description 11
- 239000000872 buffer Substances 0.000 claims description 10
- 238000005192 partition Methods 0.000 description 278
- 230000008569 process Effects 0.000 description 33
- 238000002955 isolation Methods 0.000 description 29
- 238000010586 diagram Methods 0.000 description 14
- 238000007726 management method Methods 0.000 description 10
- 239000007787 solid Substances 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 5
- 238000000638 solvent extraction Methods 0.000 description 5
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000002028 premature Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
- 239000012085 test solution Substances 0.000 description 1
Images
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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- 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/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- 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/061—Improving I/O performance
-
- 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/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6215—Individual queue per QOS, rate or priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/622—Queue service order
- H04L47/623—Weighted service order
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)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
描述了存储装置中的主机接口层和处理请求的方法。主机接口层可包括仲裁器,用于从至少包括第一提交队列(SQ)和第二SQ的集合选择第一SQ。第一SQ可与第一服务质量(QoS)等级相关联,第二SQ可与第二QoS等级相关联。命令获取器可从第一SQ获取输入/输出(I/O)请求。命令解析器可将I/O请求放置在来自至少包括第一命令队列和第二命令队列的集合的第一命令队列中。仲裁器可被配置为至少部分地基于与第一SQ相关联的第一权重和与第二SQ相关联的第二权重来选择第一SQ。第一权重可至少部分地基于与第一QoS等级相关联的至少一个第一命名空间(NS)的第一总存储容量,第二权重可至少部分地基于与第二QoS等级相关联的至少一个第二NS的第二总存储容量。
Description
本申请要求于2020年11月10日提交的第63/112,146号美国临时专利申请以及于2020年11月10日提交的第63/112,150号美国临时专利申请的权益,所述两个美国临时专利申请出于所有目的通过引用包含于此。
本申请涉及于2021年3月1日提交的第17/189,255号美国专利申请,所述美国专利申请出于所有目的通过引用包含于此。
技术领域
公开总体涉及包括存储装置的系统,更具体地,涉及存储装置中的主机接口层和处理请求的方法。
背景技术
向租户提供存储的企业(诸如,超大规模者和企业解决方案)期望在其多租户系统中实现租户之间的性能隔离。也就是说,这些企业期望提供服务质量(QoS)/服务级别协议(SLA)保证。已经探索了各种解决方案来实现这样的隔离。但是大量的租户(其数量可以是数千或更多)限制了用于真正提供性能隔离的测试解决方案的适用性。
仍然需要为涉及大量的租户的系统提供性能隔离。
发明内容
在一个总体方面,一种存储装置中的主机接口层包括:仲裁器,用于从至少包括第一提交队列(SQ)和第二SQ的集合选择第一SQ,第一SQ与第一服务质量(QoS)等级相关联,第二SQ与第二QoS等级相关联;命令获取器,用于从第一SQ获取输入/输出(I/O)请求;以及命令解析器,用于将I/O请求放置在来自至少包括第一命令队列和第二命令队列的集合的第一命令队列中。仲裁器被配置为至少部分地基于与第一SQ相关联的第一权重和与第二SQ相关联的第二权重来从至少包括第一SQ和第二SQ的集合选择第一SQ。第一权重至少部分地基于与第一QoS等级相关联的至少一个第一命名空间(NS)的第一总存储容量。第二权重至少部分地基于与第二QoS等级相关联的至少一个第二NS的第二总存储容量。
在另一总体方面,一种方法包括:至少部分地基于与第一服务质量(QoS)等级相关联的至少一个第一命名空间(NS)的第一总存储容量来确定用于第一提交队列(SQ)的第一权重;确定用于第二SQ的第二权重,第二SQ至少部分地基于与第二QoS等级相关联的至少一个第二NS的第二总存储容量;至少部分地基于第一权重和第二权重来从第一SQ和第二SQ选择第一SQ;在第一SQ中选择输入/输出(I/O)请求;至少部分地基于用于I/O请求的第一QoS等级,从至少包括第一命令队列和第二命令队列的集合选择第一命令队列;以及至少部分地基于用于I/O请求的第一QoS等级,将I/O请求放置在第一命令队列中。
在另一总体方面,一种包括非暂时性存储介质的物品,所述非暂时性存储介质具有存储在其上的指令,所述指令在由机器执行时导致:至少部分地基于与第一服务质量(QoS)等级相关联的至少一个第一命名空间(NS)的第一总存储容量来确定用于第一提交队列(SQ)的第一权重;确定用于第二SQ的第二权重,第二SQ至少部分地基于与第二QoS等级相关联的至少一个第二NS的第二总存储容量;至少部分地基于第一权重和第二权重来从第一SQ和第二SQ选择第一SQ;在第一SQ中选择输入/输出(I/O)请求;至少部分地基于用于I/O请求的第一QoS等级,从至少包括第一命令队列和第二命令队列的集合选择第一命令队列;以及至少部分地基于用于I/O请求的第一QoS等级,将I/O请求放置在第一命令队列中。
附图说明
图1示出包括可提供端到端租户隔离的存储装置的系统。
图2示出图1的机器的细节。
图3示出图1的具有多个核、多个提交队列(submission queue,SQ)和多个非易失性存储器(NVM)集的处理器。
图4A至图4C示出使用与在图1的处理器上运行的图3的NVM集相关联的图3的命名空间(NS)的各种应用。
图5示出图1的SSD的细节。
图6示出图5的主机接口层的细节。
图7A示出管理用于由图6的仲裁器实现的调度算法的权重。
图7B示出管理用于由图6的仲裁器实现的调度算法的权重。
图8示出图5的闪存转换层的细节。
图9示出图1的SSD中的分区的超级块。
图10示出图1的SSD中的分区的超级块的可选示图。
图11示出图1的SSD中的图5的闪存芯片中的超级块。
图12示出图5的与非(NAND)接口层的细节。
图13示出与服务质量(QoS)等级相关联的写入请求。
图14A至图14B示出用于将图13的写入请求映射到图3的SQ的示例过程的流程图。
图15A至图15B示出用于由图5的主机接口层处理来自图3的SQ的请求的示例过程的流程图。
图16示出用于确定由图6的仲裁器使用的权重的示例过程的流程图。
图17示出用于将图13的写入请求中的数据写入图9的分区中的超级块的示例过程的流程图。
图18示出用于选择图9的分区中的超级块中的在其中图13的写入请求中的数据可被写入的超级块的示例过程的流程图。
图19示出用于对图9的分区执行垃圾收集或耗损均衡的示例过程的流程图。
图20示出用于从图9的分区移除超级块的示例过程的流程图。
具体实施方式
现在将详细参照公开的实施例,公开的实施例的示例在附图中被示出。在下面的具体实施方式中,阐述了许多具体细节以使得能够透彻理解公开。然而,应当理解,本领域普通技术人员可在没有这些具体细节的情况下实践公开。在其他情况下,没有详细描述公知的方法、过程、组件、电路和网络,以免不必要地模糊实施例的方面。
将理解,尽管在此可使用术语第一、第二等来描述各种元件,但是这些元件不应受这些术语限制。这些术语仅用于将一个元件与另一元件区分开。例如,在不脱离公开的范围的情况下,第一模块可被称为第二模块,并且类似地,第二模块可被称为第一模块。
这里在公开的描述中使用的术语仅出于描述特定实施例的目的,而不意在限制公开。如在公开的描述和所附权利要求中使用的,除非上下文另外清楚地指示,否则单数形式也意在包括复数形式。还将理解,如在此使用的术语“和/或”表示并且涵盖相关所列项中的一个或多个的任何和所有可行的组合。还将理解,术语“包括”和/或“包含”用在本说明书中时,表明存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。附图的组件和特征不必按比例绘制。
随着装置容量和性能的提高,存储装置中的多租户支持已经变得重要。公开的实施例引入了用于包括存储装置(诸如,固态驱动器(SSD))的系统的新架构,用于在服务质量(QoS)和空间方面的多租户支持。这样的架构可提供性能隔离并且集成空间隔离、性能隔离和主机接口集(host interface set)以实现多租户构思。公开的实施例可包括全系统架构,全系统架构为多租户系统(multi-tenant system)中的每个租户(例如,应用或虚拟机(VM)或容器)提供租户之间、从应用到与非(NAND)模块的端到端性能隔离以及QoS服务级别协议(SLA)。
使用主机和SSD内部架构设计,公开的实施例可在不使用诸如流(streaming)、单根输入/输出(I/O)虚拟化(SR-IOV)或多功能网络装置的技术的情况下,支持租户之间的性能隔离。通过利用非易失性存储器快速标准(NVMe)标准技术,几乎可以不需要主机侧软件开销。
主机可实现基于命名空间(NS)和非易失性存储器(NVM)集的性能隔离方案。(NVM集也可被称为集。)存储装置中的用于应用的存储可通过NS分派。NS可与NVM集相关联。NVM集可与具有QoS等级的提交队列(SQ)相关联。SQ可提供基于QoS等级的性能隔离和控制。
NVM集可被理解为包括在逻辑上和潜在地在物理上与其他NVM分离的一组NS的NVM的集合。通过使集创建命令(set create command)成为NVMe的逻辑但“特定于供应商(vendor specific)”的扩展,可通过管理员使用私有接口或发布接口创建集。
其中每个NVM集可具有以下属性:与NVM集相关联的标识符(ID)(其可以是例如16位的值);用于写入NVM集的最佳大小;NVM集的总容量;以及NVM集的未分配的容量。NVM集还可包括针对集的QoS等级/类型的属性。
管理员可创建多个NVM集,每个QoS等级一个(或多个)NVM集。可使用任何数量(一个或多个)的QoS等级,因此,可使用任何数量的NVM集。例如,如果核包括标记为紧急(U)、高(H)、中(M)和低(L)的四个每秒I/O操作(I/O operations per second,IOPS)QoS等级,则管理员可创建四个NVM集。可利用指示相应QoS等级的NVM集属性来初始化每个NVM集。
处理器可包括一个或多个核。针对机器的处理器中的每个核,管理员可创建一个或多个SQ。每个SQ可被分派与NVM集所使用的QoS等级之一对应的优先级。在每个核中,每个QoS等级可存在一个或多个SQ。在公开的一些实施例中,如果将要定义但不使用一个(或多个)QoS等级,则管理员不会将任何SQ分派给该QoS等级/那些QoS等级。管理员可为每个SQ分派优先级以与NVM集的QoS等级之一对应。管理员还可将SQ与NVM集相关联。
提交给I/O SQ的命令可包括各种字段。这些字段中的一个(诸如,双字命令(command double word,CDW)11(位02:01))可指示用于加权轮询(Weighted Round Robin,WRR)调度算法的SQ优先级。这些字段中的另一个(诸如,CDW 12(位15:00)),可用于指示绑定到SQ的NVM集。当创建SQ时,管理员可使用“CDW 12位15:00”将特定SQ绑定到NVM集。
在QoS等级与NVM集之间以及在NVM集与SQ之间可存在1:1的对应关系。因此,在QoS等级与SQ之间可存在1:1的对应关系。在一些实施例中,在一些(或所有)SQ与NVM集之间可存在多对一关系。还可存在与单个QoS等级相关联的多于一个NVM集。
主机还可包括用于机器的处理器中的每个核的控制器管理部,控制器管理部可包括管理提交和完成队列。主机还可包括用于从存储装置接收数据的I/O完成队列。
公开的实施例可包括用于将应用绑定到NS的机制,NS继而可被绑定到NVM集,NVM集继而可被绑定到SQ。然后,性能SLA可被分派给来自应用的命令,并基于分派给SQ的QoS等级被传递给存储装置。通过将针对应用的I/O路径限制到特定SQ,I/O路径可从应用到NS到NVM集到SQ,并且相关联的QoS属性可被传递到存储装置。通过限制从应用到SQ的I/O路径,还可实现用于I/O命令的优先级调度。应用可通过在任何核上运行而无需在特定核上运行,来获得用于其I/O命令的任何SQ优先级等级。相同的NVM集可被绑定到处理器中的每个核中的一个(或多个)SQ。通过使用多于一个NS,每个NS可与不同的NVM集相关联,单个应用可根据所使用的NS而具有多个QoS和优先级等级。公开的实施例还可通过具有更多NVM集,来支持不同的QoS选项(例如,IOPS、延迟、带宽、吞吐量等)。
当应用需要访问存储装置时,应用可创建NS并用NVM集ID标记NS,这可作为NS创建命令的一部分发生,NS创建命令可以是NVMe命令(例如,“特定于供应商”的扩展)。通过将NS绑定到NVM集,NS可得到(inherit)NVM集的相关联的QoS等级。该绑定还可创建从应用到与QoS等级相关联的SQ的路径。因此,来自应用的I/O命令可被发送到与NVM集相关联的SQ。应用可创建多于一个NS,并且将每个NS与不同的NVM集(因此,与不同的QoS等级)相关联。附加NS可被给予不同的标识符以支持唯一地标识NS。
当应用使用NS创建命令创建NS时,应用可选择NS与什么NVM集相关联(其可使用例如NS创建命令的位101:100作为NVM集标识符)。创建的NS可得到来自NVM集的属性(诸如,QoS等级)。
基于SQ的优先级,不同的I/O命令可具有不同的权重,这可导致基于例如WRR调度算法的优先级调度。
一个应用可专用于仅一个NS和QoS等级。应用可在任何核中运行并保持QoS等级和优先级等级。每个核可具有其自己的SQ和完成队列。因此,由应用发送的命令可被映射到NVM集,NVM集继而可被映射到核内的适当的SQ。
应用可使用一个NS在任何核(例如,多线程应用)中运行,并保持其QoS等级和优先级等级。例如,应用App1可创建被标识为“NS 10”的NS并将其与NVM集L相关联。因为管理员可能已经在核0中创建了具有低优先级等级的SQ并将其与NVM集L相关联,并且在核1中创建了具有低优先级等级的SQ并将其与NVM集L相关联,所以应用App1可在核0、核1、或者两者中运行,并且来自App1的I/O命令将仍然具有到具有低优先级的SQ和与低QoS等级的NVM集相关联的SQ的受限路径。因此,应用App1可在任何核或多个核上运行时保持QoS等级和优先级等级。由在核0上运行的应用发送的请求可被发送到与核0相关联的适当的SQ;由在核1上运行的应用发送的请求可被发送到与核1相关联的适当的SQ。
应用还可具有在一个或多个核中运行的多个QoS等级和优先级等级。例如,应用可创建多个NS,将那些NS与不同的NVM集相关联,从而具有对多个QoS等级和优先级等级的访问。与关联于NVM集M的NS相关联的请求可被发送到中(medium)SQ,并且与关联于NVM集U的NS相关联的请求可被发送到紧急(urgent)SQ。
可通过具有更多的NVM集,来支持不同的QoS选项(例如,IOPS、延迟、带宽、吞吐量等)。例如,一对核可使用具有基于IOPS的优先级的NVM集,而另一对核可使用具有基于延迟的优先级的NVM集。公开的实施例可被扩展到使用任何数量的优先级的等级的任何数量的核。在公开的一些实施例中,核可支持具有不同QoS选项和针对每个QoS选项的不同QoS等级的NVM集。
公开的实施例实现针对I/O命令的受限路径,实现针对I/O命令的QoS支持,并且使得一个应用能够具有多个QoS等级。应用不限于在特定核上运行以利用SQ中的优先级调度。
存储装置中的主机接口层(HIL)可执行基于NS容量的QoS控制。容量越高,可使用的QoS等级越高。
如以上所讨论的那样,主机可使用NVM集将应用映射到NS,NVM集继而可被映射到与NVM集相关联的SQ(可为每个SQ分派一个QoS等级)。因为每个SQ具有其自己的QoS等级,所以与每个SQ相关联的一个或多个NVM集可具有与SQ相关联的QoS等级。类似地,因为每个NVM集可具有QoS等级,所以与每个NVM集相关联的一个或多个NS可具有与NVM集相关联的QoS等级。最后,因为每个NS可具有QoS等级,所以与每个NS相关联的一个或多个应用可具有与NS相关联的QoS等级。
每个NVM集可被映射到每个核内的SQ;每个核还可包括用于接收从存储装置返回的信息的完成队列。
NS QoS表可将NS映射到HIL内的QoS等级。QoS权重表可将QoS等级映射到权重,权重可在从HIL到闪存转换层(FTL)的调度命令时被使用。
在HIL,I/O命令可包括NS ID。HIL可实现基于NS容量的QoS控制和基于NS的密钥管理。WRR调度算法可用于基于根据NS容量获得的权重来调度I/O命令。
HIL可包括仲裁器、命令获取器、命令解析器、QoS感知调度器、主机完成队列(HCQ)和写入缓冲器。仲裁器可包括上述WRR调度算法。仲裁器可根据SQ QoS优先级等级为每个SQ设置权重。命令获取器可根据仲裁器分派给每个SQ的权重,来获取(retrieve)并处理来自每个SQ的命令。命令解析器可对命令进行解析,并从NS QoS表检查其NS QoS等级。命令解析器还可根据优先级等级将命令插入到相关的命令队列中:对于每个QoS等级可存在一个或多个命令队列。QoS感知调度器可根据QoS权重表来调度来自命令队列的命令,然后将那些命令发送到识别的FTL核。HCQ可将I/O完成消息从存储装置发送回主机。写入缓冲器可用于缓冲写入数据流量。
公开的实施例可包括用于创建多个QoS等级的系统和方法,其中,对应的动态权重基于为每个等级分派的总存储容量。通过针对每个容量范围分派优先级,可引入增加的QoS等级。公开的实施例可基于每个QoS等级的总存储容量来提供平衡的权重。
通过基于QoS等级的总存储容量来调整权重,可提供所有租户之间的更好的QoS平衡。由于超大规模者可使用存储QoS模型,因此基于QoS等级的总存储容量来调整权重可提供改进的命令平衡。此外,公开的实施例可为具有类似容量但不同优先级的租户提供不同的QoS等级/权重。
在公开的一些实施例中,容量(桶(bucket))的范围和相应QoS等级被预先定义。例如,范围-1可被分派QoS-1,范围-2可被分派QoS-2等。每当NS被创建时,用于该NS的QoS等级可基于其存储容量来分派。因此,例如,如果新的NS的存储容量落入范围-2,则其QoS等级为QoS-2。
可基于每个等级的总存储容量(所有NS的存储容量)来调整用于每个QoS等级的权重。例如,如果QoS等级的总存储容量可从范围-i移动到范围-n(如果新的NS被创建或现有的NS被删除,则可能发生),则用于该QoS等级的权重可被自动更新到与范围-n的QoS等级对应的权重。
例如,考虑以下方法。SSD的总存储容量可被标记为“Tc”。支持的QoS等级可被标记为QoS-1至QoS-n。特定NS的容量可被标记为C-i(其中,i的范围从1到支持的NS的最大数量)。每个QoS等级的基于容量的桶可被标记为CB-i(其中,i的范围从1到n)。CB-i可被手动定义或使用预定义公式来定义。
桶与QoS等级之间可存在1:1的对应关系。桶-1的范围可从0字节(或一些最小支持的NS大小)到CB-1。桶-2的范围可从CB-1到CB-2,依此类推直到桶-N,桶-N的范围可从CB-n-1到Tc。
分派给每个QoS等级的权重可被标记为W-i。尽管权重与QoS等级之间可存在1:1的对应关系,但是任何QoS等级都可基于分派给每个QoS等级的总存储容量而具有相同或不同的权重。每个QoS等级的总存储容量可被标记为TC_QoS-i。TC_QoS-i可基于相应桶/QoS等级中的NS的数量来计算。例如,如果存在容量小于CB-1的10个NS,则TC_QoS-1可被计算为这10个NS的容量之和。
可维护三个表。一个表可将每个桶的容量与桶的总存储容量相匹配。另一个表可将NS与其对应的QoS等级相匹配。第三表可将QoS等级与其权重相匹配。
在公开的其他实施例中,QoS优先级也可以是一个因素。例如,考虑这样的情况:四个NS(NS-1、NS-2、NS-3和NS-4)可能各自具有相同的容量,但是两个NS(NS-1和NS-2)可能具有一个优先级,并且另外两个NS(NS-3和NS-4)可能具有另一个优先级。即使所有四个NS具有相同的容量,但是通过考虑优先级,NS-1和NS-2可被分派给一个QoS等级,并且NS-3和NS-4可被分派给另一QoS等级。因此,分派给NS-1和NS-2的权重可以是W-i,而分派给NS-3和NS-4的权重可以是W-i+1。
现在考虑创建与NS-3和NS-4具有相同容量和相同优先级的第五NS的情况。如果QoS等级的总存储容量保持在相同的范围内,则权重将不会再次改变。但是如果QoS等级的总存储容量改变,则用于QoS等级的权重可基于其总存储容量而改变。
通过包括主机优先级,具有相同容量的NS仍然可被分派不同的QoS等级。
相对于先前的讨论,可引入主机优先级P-i。QoS等级的总存储容量现在可以是针对特定优先级等级的处于该QoS等级的每个NS的容量之和。(因此,如果存在分派给特定QoS等级的具有不同优先级的NS,则对于该QoS等级可能存在多于一个总存储容量。)将每个桶的容量与桶的总存储容量相匹配的表还可包括优先级等级,优先级等级用于在包括具有不同优先级的NS的QoS等级之间进行区分。
基于总存储容量的QoS等级和权重可被存储为表并且由SSD内部IO调度器使用。
公开的实施例可包括基于在每个等级分派的总存储容量(动态地)分派每个QoS等级的权重的系统。每当在任何QoS等级存在总存储容量的改变(添加/移除)时,权重可被实时调整,并且权重可基于优先级和容量的组合。
各种应用可使用与不同NVM集相关联的各种NS。然后,这些不同的NVM集可映射到不同的一个或多个I/O SQ和一个或多个I/O完成队列。
NS QoS表可将NS(或NS标识符)映射到HIL内的QoS等级。类似地,QoS权重表可将QoS等级映射到权重,权重可在从HIL到FTL的调度命令时被使用。
SSD中的闪存转换层(FTL)可基于与NS相关联的SSD内部QoS等级,来执行超级块级存储空间隔离。通过将应用(或NS)QoS与SSD内部优先级组合,可实现基于优先级的调度。FTL可实现基于QoS等级的I/O完成管理:裸片中的QoS等级越高,命令完成可被处理得越快。
SSD还可执行NAND管理。使用基于QoS的分区管理,NAND可被划分成超级块。每个分区可被分派QoS等级。可根据需要将未使用的超级块分配给分区。
在每个FTL内,对于每个裸片可存在裸片队列管理器(DQM),DQM可将命令放置在多个队列之一中以向存储装置提交请求。例如,在与每个QoS等级对应的每个裸片内可存在一个队列。裸片还可包括裸片完成队列,裸片完成队列可将从裸片接收的数据存储在FTL。
在FTL,可实现基于QoS等级的存储空间隔离。FTL可将应用(或NS)QoS与SSD内部优先级组合以实现基于优先级的调度。FTL还可实现基于QoS等级的I/O完成管理。FTL可以是QoS感知的:来自相同QoS权重等级的I/O命令可被发送到由QoS感知超级块管理器维护的相同分区,QoS感知超级块管理器可基于分区的QoS等级来处理超级块分配。
FTL可包括完成管理器和DQM。完成管理器可在裸片之间执行基于QoS等级的完成消息调度。完成管理器可将完成消息从FTL递送到HIL中的HCQ。I/O完成消息的优先级越高,消息可被调度用于递送越快。DQM可根据QoS感知超级块管理在分区中分配NAND存储。每个裸片可具有多个优先级队列。DQM可基于命令QoS等级将NAND命令中继到相关队列。
NAND接口层(NIL)可与裸片中的各种通道通信。每个通道可具有存储横跨该通道可访问的数据的相关联的块。
NIL可执行将要发送到物理NAND芯片的命令的调度。NIL可包括NAND命令调度器,NAND命令调度器可基于通道/裸片忙碌/空闲状态和/或裸片队列优先级来调度NAND命令。NAND命令调度器可将命令完成状态递送到FTL中的裸片完成队列。
最后,分区可包括用于存储进入分区的新数据的块。垃圾收集还可导致数据被写入(编程)到分区中的块。
NAND管理可基于QoS等级在NAND芯片中建立分区。每个分区可包括具有相同分配方法但不同于其他分区的超级块(例如,4通道单向(4-channel one-way)超级块、4通道双向(4-channel two-way)超级块等)。
NAND管理可建立与QoS等级对齐的分区。对于每个QoS等级可存在分区,并且处于相同QoS等级的写入I/O命令可被存储在相同分区中。每个分区可包括可被分配给分区的超级块(例如,4通道单向超级块、4通道双向超级块等)。垃圾收集(GC)可发生在分区内:由于垃圾收集而被擦除的块/超级块中的有效数据可被复制到同一分区内的另外的块/超级块。可在分区之间共享空闲的块池。
由于可对分区执行GC,所以垃圾收集可涉及将超级块添加到分派给分区的超级块列表。新添加的超级块(用于数据或GC)可用于(开放块(open block))该QoS等级的写入I/O命令。可将有效页从垃圾收集针对的超级块移动到新添加到用于分区的超级块列表的超级块。
可将类似的超级块的集合(NAND块的集合)分组以形成分区。超级块的不同组可用于形成用于每个QoS等级的不同分区。每个分区的超级块的数量不需要固定,而是可根据需要增长。每个分区可基于该分区的QoS等级来应用不同的RAID(独立磁盘冗余阵列)等级。例如,一些分区可支持RAID,其他分区可能不支持RAID。在支持RAID的分区之中,每个分区可具有不同的RAID等级。每个分区还可被分配超额供应(overprovisioning)空间的一部分。
SSD可被设计有用于划分各种超级块的一个或多个NAND块分配方案。通过对超级块进行分区,SSD可提供租户之间的隔离并提供不同的性能选项。
例如,可存在用于可具有类似的NAND类型的所有超级块的单个超级块分配方案。或者,可存在具有不同并行性的超级块分配方案:可将来自不同数量(一个或多个)的通道的不同数量(一个或多个)的超级块分配给分区。或者,可存在基于块的NAND类型的超级块分配方案:例如,一些超级块可包括单层单元(SLC)NAND,并且其他超级块可包括多层单元(MLC)NAND。
可构建不同的分区以针对每个QoS等级提供性能和特征的变化。因此,不同的分区可在租户之间提供不同等级的性能和隔离,这可与NS的QoS SLA对齐。每个分区中的GC和WL可被独立地执行。每个分区可具有不同的RAID等级和不同的超级块分配方案。因此,单个SSD可包括不同类型的超级块,并且基于不同的QoS等级来使用它们。
在擦除超级块时,超级块的NAND块可被释放到空闲的块池中,并且擦除的超级块可从分派给分区的超级块列表被移除。
公开的实施例可包括SSD内部设计,SSD内部设计可包括基于QoS的包括块或超级块的组的分区。SSD可包括针对不同分区的基于QoS的特征集(GC/耗损均衡(WL)/独立磁盘冗余阵列(RAID))。因此,GC和WL可在每个分区中被独立地执行。每个分区还可具有不同的RAID等级和不同的超级块分配方案。该方法具有以下益处:在一个分区执行的GC和WL不影响或干扰其他分区中的操作。
QoS等级以及基于总存储容量和主机优先级的相应权重可被存储为表并由SSD内部IO调度器使用。此外,每个核可具有其自己的I/O SQ和I/O完成队列的集合;每个核中的I/O SQ可表示不同的主机优先级并且被映射到各种NVM集。
图1示出包括可提供端到端租户隔离(也称为,性能隔离)的存储装置的系统。在图1中,机器(例如,主机)105可包括处理器110、存储器115和存储装置120。处理器110可以是任何种类的处理器。(为了易于说明,处理器110连同下面讨论的其他组件被示出在机器外部:公开的实施例可将这些组件包括在机器内。)虽然图1示出单个处理器110,但是机器105可包括任何数量的处理器,每个处理器可以是单核处理器或多核处理器,每个处理器可实现精简指令集计算机(RISC)架构或复杂指令集计算机(CISC)架构(以及其他可能性),并且可以以任何期望的组合被混合。
处理器110可连接到存储器115。存储器115可以是任何种类的存储器(诸如,闪存、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、持久性随机存取存储器、铁电随机存取存储器(FRAM)或非易失性随机存取存储器(NVRAM)(诸如,磁阻式随机存取存储器(MRAM)等))。存储器115也可以是不同存储器类型的任何期望的组合,并且可由存储器控制器125管理。存储器115可用于存储可被称为“短期”的数据:即,不期望被存储延长的时间段的数据。短期数据的示例可包括临时文件、由应用本地使用的数据(其可能已从其他存储位置被复制)等。
处理器110和存储器115还可支持在其下各种应用可运行的操作系统。这些应用可发出从存储器115或存储装置120读取数据或将数据写入存储器115或存储装置120的请求(其也可被称为命令)。可使用装置驱动器130来访问存储装置120。虽然图1使用通用术语“存储装置”,但是公开的实施例可包括可受益于提供性能隔离的架构的任何存储装置格式,存储装置的示例可包括硬盘驱动器和固态驱动器(SSD)。以下对“SSD”的任何引用应当被理解为包括公开的这样的其他实施例。
图2示出图1的机器105的细节。在图2中,通常,机器105包括一个或多个处理器110,处理器110可包括可用于协调机器的组件的操作的存储器控制器125和时钟205。处理器110还可连接到存储器115,作为示例,存储器115可包括随机存取存储器(RAM)、只读存储器(ROM)或其他状态保存介质。处理器110还可连接到存储装置120和网络连接器210,网络连接器210可以是例如以太网连接器或无线连接器。处理器110还可连接到总线215,用户接口220和可使用输入/输出(I/O)引擎225管理的I/O接口端口以及其他组件可附接到总线215。
图3示出图1的具有多个核、多个提交队列(SQ)和多个非易失性存储器(NVM)集的处理器110。在图3中,处理器110被示出为具有两个核305-1和305-2,但是公开的实施例可在处理器110中包括任何数量(从一个到如期望的那样多(没有限制))的核。
在每个核内,管理员可创建任何数量的提交队列(SQ)(使用例如一个或多个NVMeSQ创建命令)。图3示出分别被标记为紧急(U)、高(H)、中(M)和低(L)的四个SQ 310-1、310-2、310-3和310-4(其可表示不同的服务质量(QoS)等级,服务质量(QoS)等级包括具有提供给租户的不同性能等级的不同服务级别协议(SLA))。虽然图3在每个核中示出四个SQ并且表明四个QoS等级,但是公开的实施例可包括每个核的任何数量的SQ和任何数量的QoS等级,从一个到如期望的那样多(没有限制)。SQ 310-1至310-4可用于向图1的存储装置120发送应用的请求(诸如,写入请求或读取请求)。在公开的各种实施例中,每个SQ 310-1至310-4可与不同的QoS等级相关联,两个(或更多个)SQ可与相同的QoS等级相关联,或者这些可能性的混合可被使用(其中,一些SQ与唯一的QoS等级相关联,而其他SQ与相同的QoS等级相关联)。SQ 310-1至310-4可以以任何期望的方式被实现:例如,使用先进先出(FIFO)队列、循环队列和其他技术。
在用于创建SQ的命令中,可使用NVMe SQ创建命令中的各种位(诸如,双字命令(CDW)11中的位02:01)来指定与特定SQ相关联的QoS等级。虽然仅使用两个位来指定用于SQ的QoS等级表明QoS等级的数量(以及由此SQ的数量)可被限制在四个,但是公开的实施例可使用潜在地位于命令内的其他位置的更多位来创建SQ,以使用多于四个QoS等级:例如,CDW11中的位15:03被保留,并且可用于定义多于四个QoS等级。
除了SQ 310-1至310-4之外,管理员还可创建完成队列315。类似于管理员可如何使用NVMe SQ创建命令来创建SQ,完成队列315可使用NVMe完成队列创建命令来创建。完成队列315可用于从图1的存储装置120接收信息。虽然图3示出一个完成队列315,但是公开的实施例可包括多个完成队列315。
虽然图3示出SQ 310-1至310-4和完成队列315作为处理器110中的核305-1的一部分,但是从技术的角度来看,核305-1可被称为“拥有”SQ 310-1至310-4和完成队列315,并且SQ 310-1至310-4和完成队列315实际上可存在于图1的存储器115内。也就是说,核305-1可将信息写入图1的存储器115内的位置中的SQ 310-1至310-4,并且图1的存储装置120可通过从图1的存储器115内的适当位置进行读取来从SQ 310-1至310-4读取数据。类似地,图1的存储装置120可通过写入图1的存储器115内的适当位置来将数据写入完成队列315,并且核305-1可从图1的存储器115内的完成队列315读取信息。
管理员还可定义一个或多个NVM集。图3示出四个NVM集320-1、320-2、320-3和320-4,但是公开的实施例可包括任何数量(从一个到如期望的那样多(没有限制))的NVM集。NVM集320-1至320-4可各自与QoS等级相关联:例如,NVM集320-1至320-4可与U QoS等级、H QoS等级、M QoS等级和L QoS等级相关联。NVM集320-1至320-4可与SQ 310-1至310-4相关联,从而将NVM集320-1至320-4分别与同SQ 310-1至310-4关联的QoS等级相关联。可以以用于创建SQ 310-1至310-4的命令建立该关联:例如,CDW 12中的位15:00可包括用于与SQ相关联的NVM集的标识符(ID)。通过将NVM集与SQ相关联,NVM集可得到SQ的属性(诸如,QoS等级)。
可使用各种命令来创建NVM集320-1至320-4。例如,可建立特定于个体客户的私有接口以允许创建NVM集。或者,发布接口可被使用,公开接口可被实现为对非易失性存储器快速标准(NVMe)协议的特定于供应商的扩展。在创建时,每个NVM集可具有ID(ID对于NVM集可以是唯一的,并且可以是例如16位长度)、与NVM集相关联的最佳写入大小、用于NVM集的总存储容量和未分配容量(其可防止太多租户使用与NVM集相关联的QoS等级,潜在地导致违反SLA)以及QoS等级(如以下所讨论的,QoS等级可从SQ得到)。每个NVM集还可指示QoS类型:例如,QoS等级反映基于每秒不同数量的I/O操作(IOPS)、不同延迟、不同带宽、不同吞吐量等的优先级。
注意,单个NVM集可与多个SQ相关联。例如,在图3中,NVM集320-1与核305-1和305-2两者中的紧急SQ相关联。如下面参照图4A至图4C所讨论的,通过将单个NVM集与多个SQ(并且特别是与处理器110中的不同核中的SQ)相关联,由在特定核中运行的应用发送的写入请求或读取请求可被路由到该核中的SQ,从而允许应用潜在地在任何核中运行并且仍然实现目标QoS等级。此外,单个NVM集可与处理器110中的单个核中的多个SQ相关联。如果NVM集与多个SQ相关联,则与NVM集相关联的所有SQ应当具有相同的QoS等级:该选择避免了关于特定写入请求或读取请求应当被放置到哪个SQ中的混淆。但是公开的实施例可将单个NVM集与关联于两个(或更多个,没有限制)QoS等级的SQ相关联。(在公开的这样的实施例中,主机可使用其他信息(诸如,作为应用的一部分而提供的数据)确定用于给定命令(写入命令或读取命令)的适当的优先级。一旦确定了适当的优先级,主机可将命令放置在具有适当的先级的相关联的SQ中。一个SQ也可被标识为在适当的优先级可能未被确定的情况下所使用的默认SQ;可选地,主机可随机选择任何相关联的SQ。)NVM集可得到与相关联的SQ相关联的QoS等级:无论什么QoS等级与SQ相关联,与那些SQ相关联的NVM集也可与该QoS等级相关联。
每个应用可创建一个或多个命名空间(NS):应用也可共享NS。这些NS(诸如,NS325-1和325-2(NS 2和NS 7))可与NVM集320-1至320-4之一相关联。与NVM集320-1至320-4与SQ 310-1至310-4之间的关系不同,单个NS应当与单个NVM集相关联:如下面参照图4A至图4C所讨论的,该选择避免了关于特定写入请求或读取请求应当被放置到哪个SQ中的混淆。注意,反之则不然:单个NVM集可与多于一个的NS相关联。例如,图3示出NVM集320-4与NS325-1和325-2(以及潜在的其他NS)相关联。此外,公开的实施例可将单个NS与两个(或更多个,没有限制)NVM集相关联。
作为创建NS的一部分,NS可与NVM集相关联。例如,使用NVMe创建NS命令,字节101:100可用于通过包括与NVM集相关联的ID来识别与NS相关联的NVM集。通过将NS与NVM集相关联,NS可得到NVM集的属性(诸如,QoS等级)。通常,每个QoS等级可向NS提供不同的容量,其中,较高的QoS等级向与该QoS等级相关联的NS提供更大的容量。每个NS还可具有其自己的ID,这在系统中的NS之间可以是唯一的。
可使用不同的NVM集来根据不同的标准管理QoS等级。例如,在一些核中,可建立QoS等级以保证一些最小数量的IOPS。无论任何其他应用及其相关联的QoS等级如何,应用都可接收比保证的IOPS多的IOPS,但是不应当接收比保证的IOPS少的IOPS。例如,NVM集320-4可保证针对与该QoS等级相关联的NS的请求的100个IOPS,而NVM集320-1可保证针对与该QoS等级相关联的NS的请求的100,000个IOPS。
在其他核中,可建立QoS等级以保证用于发送到图1的存储装置120的请求的最大延迟。此外,无论任何其他应用及其相关联的QoS等级如何,应用的命令都可比保证的那样更快地被处理,但是不应当花费比保证的时间更长的时间。例如,NVM集320-4可针对被发送到图1的存储装置120的请求,保证不超过10,000微秒(μs)的延迟,而NVM集320-1可针对被发送到图1的存储装置120的请求,保证不超过10μs的延迟。可用于管理QoS等级的其他标准可以是保证的带宽和吞吐量;公开的实施例还可扩展到其他标准。
用于特定QoS等级的保证性能表示应用针对其请求可接收的最小服务等级。因此,例如,如果特定QoS等级保证应用100IOPS,则应用可预期如果在一秒间隔期间被发送则100个请求可被处理。类似地,如果特定QoS等级保证10μs延迟,则以该QoS等级发送的任何请求应当在10μs以内接收到响应。通过使用例如加权轮询技术(下面参照图7A至图7B讨论的),图1的存储装置120可提供承诺的服务等级:相比于来自具有较小数量的请求的QoS等级的请求,加权轮询技术可处理来自具有较大数量的请求的QoS等级的更多的请求(即使具有较小数量的请求的QoS等级可能具有更高的整体优先级)。
注意,在该上下文中,优先级并不意味着具有较高优先级的所有请求在具有较低优先级的任何请求被处理之前被处理:由于QoS保证可能受到更严格的约束,因此较高优先级的请求仅接收较高的重要性。类似地,注意,请求可比保证的那样更快地被处理。也就是说,系统可超过针对QoS等级承诺的性能:唯一的期望是提供最小性能。例如,当使用延迟作为QoS选项时,如果在任何SQ中没有未决的请求,则甚至放置在最低优先级SQ中的请求可与放置在最高优先级SQ中的请求一样快地被处理。或者,当使用IOPS作为QoS选项时,如果在任何SQ中没有未决的请求,则即使针对QoS等级可能仅承诺100IOPS,应用也可处理100,000IOPS。但是公开的实施例还可包括处于QoS等级的性能上限(例如,在一秒间隔中处理的IOPS的最大数量,或处理请求的最小延迟)。
图4A至图4C示出使用与在图1的处理器110上运行的图3的NVM集相关联的图3的NS325-1和325-2的各种应用。在图4A中,示出应用405-1和405-2:应用405-1被示出为在处理器110的核305-1上运行,并且应用405-2被示出为在处理器110的核305-2上运行。应用405-1和405-2被示出为各自使用一个NS:应用405-1被示出为使用与NVM集320-4相关联的NS325-1,而应用405-2被示出为使用与NVM集320-3相关联的NS。
当应用405-1发出将要发送到图1的存储装置120的请求时,基于包括在请求中的逻辑块地址(LBA),处理器110(更具体地,核305-1)可确定请求中的LBA是NS 325-1的一部分。通过使用NS 325-1与NVM集320-4之间的关联以及NVM集320-4与SQ 310-4之间的关联,如箭头410所示,处理器110(更具体地,核305-1)可确定请求应当被放置在SQ 310-4中。类似地,处理器110(更具体地,核305-2)可使用NS与NVM集320-3之间的关联以及NVM集320-3与SQ 415之间的关联,如箭头420所示将来自应用405-2的请求放置到SQ 415中。
因为NVM集可与处理器110中的不同核中的SQ相关联,所以应用可在处理器110中的任何核中运行,并且仍然确保所建立的QoS被满足。例如,在图4B中,应用405-1可在核305-1或305-2中运行,并且仍然接收承诺的QoS等级。基于请求中的LBA,NS 325-1可被识别,NS 325-1继而可与NVM集320-4相关联,NVM集320-4继而可与SQ 310-4(在核305-1中)和SQ 425(在核305-2中)相关联。因此,当应用405-1在核305-1中运行时,如箭头410所示,请求可被路由到SQ 310-4;当应用405-1在核305-2中运行时,如箭头430所示,请求可被路由到SQ 425。以类似的方式,如果图4A的应用405-2在核305-2中运行(如图4A中所示)并且与应用405-1共享NS 325-1,则来自图4A的应用405-2的请求可被路由到如箭头430所示的SQ425。
最后,在图4C中,应用405-1被示出为在核305-1中运行,但是被示出为访问与NVM集320-4相关联的NS 325-1以及与NVM集320-1相关联的NS。此外,使用请求的LBA,涉及的NS可被识别;然后相关联的NVM集可被识别,并且请求被路由到相关联的SQ 310-4(如箭头410所示)、或者SQ 310-1(如箭头435所示)。因此,单个应用可使用具有不同QoS等级的多个NS,并且实现如由QoS等级指定的不同等级的性能。
虽然以上讨论使用包括在来自应用的请求中的LBA来识别NS,但是公开的实施例可使用除了LBA之外的ID来确定特定请求的NS。例如,如果图1的存储装置120是键值存储装置,则来自应用的请求可包括键而不是LBA。请求本身还可使用其ID来指定NS,而不是将其留给图1的存储装置120以使用LBA确定NS。公开的实施例意在可能由应用(诸如,应用405-1和405-2)用来确定来自应用的特定请求所涉及的相关联的NS的所有ID。
图5示出图1的SSD 120的细节。在图5中,SSD 120可包括接口505。接口505可以是用于将SSD 120连接到图1的机器105的接口。SSD 120可包括多于一个接口505:例如,一个接口可用于基于块的读取请求和写入请求,并且另一接口可用于键值读取请求和写入请求。虽然图5表明接口505是图1的SSD 120与机器105之间的物理连接,但是接口505还可表示可在公共物理接口之间使用的协议差异。例如,SSD 120可使用U.2或M.2连接器连接到机器105,但是可支持基于块的请求和键值请求:处理不同类型的请求可由不同的接口505执行。
SSD 120还可包括可管理接口505的主机接口层510。如果SSD 120包括多于一个接口505,则单个主机接口层510可管理所有接口,SSD 120可包括用于每个接口的主机接口层,或者其一些组合可被使用。下面参照图6至图7B进一步讨论主机接口层510。
SSD 120还可包括SSD控制器515、各种通道520-1、520-2、520-3和520-4,各种闪存芯片525-1、525-2、525-3、525-4、525-5、525-6、525-7和525-8可沿通道520-1、520-2、520-3和520-4排列。SSD控制器515可管理沿通道520-1至520-4向闪存芯片525-1至525-8发送读取请求和写入请求。尽管图5示出四个通道和八个闪存芯片,但是公开的实施例可包括任何数量(一个或多个,没有限制)的通道,通道包括任何数量(一个或多个,没有限制)的闪存芯片。
在每个闪存芯片内,空间可被组织成块,块可被进一步细分为页并可被分组为超级块。页通常是可在SSD上读取或写入的最小数据单位。页大小可根据需要变化:例如,页可以是4KB的数据。如果将要写入的不足整页,则多余空间是“未使用的”。
虽然页可被写入和读取,但是SSD通常不允许数据被覆写:即,现有数据不可被新数据“原位(in place)”替换。相反,当数据将被更新时,新数据被写入SSD上的新页,并且原始页被无效(标记为准备擦除)。因此,SSD页通常具有三种状态之一:空闲(准备好写入)、有效(包含有效数据)和无效(不再包含有效数据,而是在擦除之前不可用)(这些状态的确切名称可变化)。
但是,虽然页可被单独地写入和读取,但是块是可被擦除的基本数据单位。也就是说,页不被单独擦除:块中的所有页通常被同时擦除。例如,如果块包含256个页,那么块中的所有256个页被同时擦除。这种布置可导致SSD的一些管理问题:如果选择仍然包含一些有效数据的块进行擦除,则在块可被擦除之前,可能需要将该有效数据复制到SSD上其他位置的空闲页。(在公开的一些实施例中,擦除单位可与块不同:例如,它可以是超级块,超级块可以是多个块的集合)。
SSD控制器515可包括闪存转换层530(对于不使用闪存的存储装置,其可被更一般地称为逻辑到物理转换层)和与非(NAND)接口层535。闪存转换层530可处理LBA或其他逻辑ID(如图1的处理器110所使用的)与数据被存储在闪存芯片525-1至525-8中的物理块地址(PBA)或其他物理地址的转换。NAND接口层535可处理沿通道520-1至520-4发送用于从闪存芯片525-1至525-8读取数据和/或将数据写入闪存芯片525-1至525-8的请求。虽然图5示出一个闪存转换层530,但是公开的实施例可包括任何数量(一个或多个,没有限制)的闪存转换层530。虽然图5示出一个NAND接口层535,但是公开的实施例可包括任何数量(一个或多个,没有限制)的NAND接口层535。下面参照图8至图11进一步讨论闪存转换层530;下面参照图12进一步讨论NAND接口层535。
图6示出图5的主机接口层510的细节。在图6中,主机接口层510可包括仲裁器605、命令获取器610、命令解析器615、NS-QoS表620、命令队列625、QoS感知调度器630和QoS-权重表635。
仲裁器605可在图3的SQ 310-1至310-4之间进行仲裁,以选择下一SQ,其中,请求应当根据下一SQ被处理。(虽然该讨论针对(address)图3的核305-1的SQ(其中,图1的处理器110包括多于一个核),但是仲裁器605可在所有核的所有SQ之间进行仲裁。)仲裁器605可使用任何期望的仲裁算法来选择处理请求所根据的下一队列。一个示例仲裁算法可在加权轮询(WRR)中被使用。在公开的一些实施例中,如下面参照图7A至图7B进一步讨论的,使用动态权重的WRR的版本可被使用。
一旦选择了SQ,就可从SQ访问请求并处理请求。命令获取器610可选择所选择的SQ中的请求以进行处理。在公开的一些实施例中,单个SQ中的所有请求具有相等的优先级:假设请求以提交的顺序被组织,则命令获取器610可选择处于SQ的头(head)的请求以接下来进行处理。在公开的其他实施例中,单个SQ中的请求可具有不同的优先级,在这种情况下,命令获取器610可以以与请求被提交的顺序不同的顺序选择请求。在公开的这样的实施例中,命令获取器610可跟踪每个请求在单个SQ中未决的时间:例如,通过将当前时间(其可被测量为自某个固定时间(诸如,当系统上次启动时)以来的循环的数量)与当每个请求被放置在SQ中时的时间进行比较。如果较高优先级请求总是在较低优先级请求之前被获取,则可能发生较低优先级请求最终未被及时处理以满足承诺的QoS:然后,命令获取器610可针对那些请求在SQ中未决的时间来对各个请求的优先级进行加权。
然后,命令解析器615可对由命令获取器610选择的请求进行解析。通过对命令进行解析,命令解析器615然后可确定请求应当被放置到其中的适当的命令队列。例如,命令队列625可包括针对一些数量的优先级等级(可与QoS等级的数量相同或不同)的读取队列(例如,RQ1至RQp)和写入队列(例如,WQ1至WQp)。通过对请求进行解析,命令解析器615可确定命令是读取请求还是写入请求,并且可将请求放置在适当的命令队列625中。可存在任何数量(一个或多个,没有限制)的命令队列625。
然后,QoS感知调度器630可从命令队列625获取请求,并将那些命令发送给图5的闪存转换层530中的裸片队列。哪个裸片队列可接收特定命令可取决于针对图5的通道520-1至520-4分配给图5的闪存芯片525-1至525-8的LBA范围。QoS感知调度器630可使用任何期望的调度算法,来调度将要发送到图5的闪存转换层530中的裸片队列(因此发送到图5的闪存芯片525-1至525-8)的命令。由于处理读取请求所需的时间与处理写入请求所需的时间会不同,因此QoS感知调度器630可以以与那些命令被放置在命令队列625中所按照的顺序不同的顺序从命令队列625获取请求。下面参照图8进一步讨论闪存转换层530(和裸片队列)。
主机接口层510可知道分配给每个NS的容量。如果NS尝试写入将导致NS超过其容量的数据,则主机接口层510可向图1的主机105返回错误消息作为结果。
除了这些组件之外,主机接口层510可包括写入缓冲器640和主机完成队列仲裁器645。写入缓冲器640可用于缓冲从图1的机器105(更具体地,图4A至图4C的应用405-1和405-2)发送但尚未写入图5的闪存芯片525-1至525-8中的页/块/超级块的数据。虽然图6示出一个写入缓冲器640,但是公开的实施例可包括任何数量(一个或多个,没有限制)的写入缓冲器。
主机完成队列仲裁器645可调度将从图5的闪存芯片525-1至525-8返回的结果放置回到图3的完成队列315,图3的完成队列315适合于具有请求被最初放置的SQ的核。虽然主机完成队列仲裁器645可以以从图5的闪存芯片525-1至525-8接收的顺序返回结果,但是主机完成队列仲裁器645也可以以与从图5的闪存芯片525-1至525-8接收的顺序不同的顺序返回结果。例如,主机完成队列仲裁器645可接收读取结果,随后是写入结果。但是如果读取结果与被分派低QoS等级的NS(例如,与图3的NVM集320-4相关联的NS)相关联,并且写入结果与被分派紧急QoS等级的NS(例如,与图3的NVM集320-1相关联的NS)相关联,则读取结果可被延迟以优先返回写入结果。因此,同与较低QoS等级相关联的请求的结果相比,主机完成队列仲裁器645可更快地调度与较高QoS等级相关联的请求的结果的返回。与仲裁器605和QoS感知调度器630一样,主机完成队列仲裁器645可使用任何期望的调度算法来调度将结果返回到适当的完成队列。
组件(诸如,仲裁器605、命令获取器610、命令解析器615、QoS感知调度器630和主机完成队列仲裁器645)可以以任何期望的方式来实现。除了其他可能性之外,这些组件可使用现场可编程门阵列(FPGA)、专用集成电路(ASIC)、中央处理器(CPU)、图形处理器(GPU)或通用GPU(GPGPU)以及其他可能性来实现。在一些实施方式中,各种组件还可包括将要由底层电路实施方式执行的代码:该代码可被存储在通用存储装置中(例如,可与主机数据被存储在图5的闪存芯片525-1至525-8中),被存储在专用存储装置(其可以是易失性存储装置或非易失性存储装置)中,或者可被存储在某种形式的只读存储器(ROM)(诸如,可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)等)中。此外,可使用不同的技术来实现不同的组件:例如,可使用FPGA来实现一个组件,可使用CPU来实现另一组件等。此外,多个组件可使用相同的技术来实现,并且可被组合成单个组件:例如,仲裁器605、命令获取器610和命令解析器615可使用单个FPGA来实现。
最后,主机接口层510可包括用于诸如NS-QoS表620和QoS-权重表635的表的存储(例如,存储区域)。NS-QoS表620可将各个NS映射到其相关联的QoS等级(如上面参照图3所讨论的,单独的NS可与单独的NVM集相关联,NVM集继而可与其中应用正运行的核中的SQ相关联:与核相关联的QoS等级然后可与NVM集相关联,并且继而与NS相关联)。虽然NS-QoS表620示出每个NS和QoS等级的相同值,但是这是任意的:用于给定NS的QoS等级可不同于分派给NS的ID。此外,虽然NS ID在图1的机器105和图1的存储装置120内应当是唯一的,但是多个NS可具有相同的相关联的QoS等级。QoS-权重表635可将QoS等级映射到权重,权重将要由仲裁器605和/或QoS感知调度器630在选择处理请求所根据的SQ/命令队列时使用。下面参照图7A至图7B进一步讨论QoS-权重表635。
如上所述,仲裁器605可使用WRR算法来选择处理请求所根据的下一SQ。权重被分派给每个SQ(更准确地,分派给与SQ相关联的每个QoS等级)。通常,来自每个SQ的请求以分派给该SQ的权重相对于权重之和的比例被处理。在数学上,如果分派给SQ k的权重是wk并且总共有n个SQ,则来自SQ k的请求被处理的时间。换句话说,在每一个请求中,那些请求中的wk取自SQ k。
在公开的一些实施例中,可预先确定权重。但是,这样的方法潜在地有利于与高QoS等级相关联的请求(例如,与图3的NVM集320-1相关联的请求)以至于:与低QoS等级相关联的请求(例如,与图3的NVM集320-4相关联的请求)最终可能未被及时被服务以满足QoS等级。例如,考虑以下情况:与低QoS等级相关联的1000个请求在图3的SQ 310-4中未决,并且与高QoS等级相关联的请求以足够的速率被发出,使得在图3的SQ 310-4中总是存在至少一个这样的未决的请求。预先分派给QoS等级的权重可能导致与低QoS等级相关联的1000个请求中的最后一个需要很长的时间才能被满足,以至于QoS保证不被满足。
通过动态地调整权重,可避免这种结果。可动态地调整权重以反映每个QoS等级的NS的数量,使得当处于每个QoS等级的NS的数量改变时,权重可被更新以反映该事实。因此,在以上示例中,图3的SQ 310-4可被分派随着NS的数量增加而增大的权重,从而确保从图3的SQ 310-4处理更多的请求,并且有希望地避免任何请求不及时被服务以满足通过QoS等级表示的保证。
注意,虽然上面的示例和下面的讨论集中于分派给每个QoS等级的NS的数量,但是公开的实施例也可使用其他标准。因此,可基于其他标准针对每个QoS等级动态地调整权重:例如,SQ中的未决请求的数量。
图7A示出管理用于由图6的仲裁器605实现的调度算法的权重。在图7中,示出三个表:表705、表710和最后的QoS-权重表635,表705将QoS等级映射到NS的大小并示出处于该QoS等级的所有NS的总存储容量,表710将不同的总容量映射到权重。
在表705中,每个QoS等级与特定桶大小相关联。也就是说,对于给定的QoS等级,与该等级相关联的所有NS可存储多达特定量的数据(或者可被分配固定量的数据)。因此,例如,查看QoS等级715(QoS等级1),与QoS等级715相关联的NS被分派给桶720,并且可存储多达2GB的数据(或者可选地,可在图1的SSD 120上分配2GB的存储)。在图7A中示出的快照示例(snapshot example)中,对于QoS等级715的12GB的总存储容量725,可存在与QoS等级715相关联的六个NS。类似地,可存在与QoS等级2相关联的40个NS(因为存在200GB的总存储容量,并且每个NS可被分配5GB)、与QoS等级3相关联的三个NS(因为存在30GB的总存储容量,并且每个NS可被分配10GB)、以及与QoS等级4相关联的一个NS。
虽然以上讨论表明每个QoS等级对于在该QoS等级分配的任何NS具有固定大小,但是公开的实施例可具有可变化的NS容量。例如,在公开的一些实施例中,当NS被创建时,分配给NS的容量可由应用指定,但是容量应当在分派给该QoS等级的范围内。因此,分派给QoS等级715的NS可请求从0GB到2GB的容量,分派给QoS等级2的NS可请求从2GB到5GB的容量,分派给QoS等级3的NS可请求在5GB与10GB之间的容量,分派给QoS等级4的NS可请求在10GB与25GB之间的容量,以此类推(其中,最高QoS等级潜在地允许容量超过桶范围)。在公开的这样的实施例中,用于桶的最大允许容量可用于计算分配给QoS等级的总容量(因为该值表示分配给该QoS等级的容量的上限),或者分配给每个NS的实际容量可被确定并用于计算分配给该QoS等级的容量。注意,在公开的这样的实施例中,图1的主机105可指定NS的QoS等级作为NS创建命令的一部分。
在公开的其他实施例中,针对NS所请求的大小可指示NS被分派的QoS等级。也就是说,代替QoS等级指示NS允许的容量的范围,NS的请求容量可用于确定用于该NS的适当的QoS等级。在公开的这样的实施例中,表710可用于基于用于NS的分配的容量来确定将要分派给NS的QoS等级。注意,在公开的这样的实施例中,由于QoS等级可基于将要为NS分配的容量来确定,因此主机可以不指定NS的QoS等级。
例如,考虑分配的容量被指定为20GB所针对的NS。如在表710中可看出,条目730包括20GB将落入其中的10GB与25GB之间的范围。因此,通过请求20GB的容量,该NS可被分派给QoS等级735。(注意,因为表705以类似的方式将桶大小映射到QoS等级,所以表705可用于这样的相同的目的。)请求较大的分配的容量的NS可被分派较高的QoS等级;请求较小的分配的容量的NS可被分派较低的QoS等级。注意,表710因此用于两个目的:表710可用于基于NS的分配的容量来确定NS的QoS,以及基于为特定QoS等级分配的总容量来确定将要分派给该QoS等级的权重。
在公开的其他实施例中,对分配给每个NS的容量可没有限制。因此,例如,可被映射到QoS等级715的NS可具有100GB的分配的容量。在公开的这样的实施例中,由于可能没有可用于近似每个NS的实际容量的值,因此图5的主机接口层510可跟踪用于每个NS的分配的容量,并且可使用该信息来确定用于每个QoS等级的分配的容量。
代替使权重基于QoS等级来分派,权重可基于处于QoS等级的命名空间的总存储容量来分派。因此,表710可根据各种总容量映射到权重。例如,由于QoS等级715具有12GB的总存储容量725,并且12GB在表710的范围730中,因此QoS等级715可被分派具有值3的权重735。出于类似的原因,QoS等级2可被分派权重9,并且QoS等级3和4可各自被分派权重4,从而产生QoS-权重表635中示出的值。
由于与QoS-权重表635中的每个QoS等级相关联的权重取决于处于该QoS等级的NS的总存储容量,因此权重可被适当地动态地调整。但是每次图6的仲裁器605可选择SQ来处理请求时,不需要重新计算权重。由于总存储容量725可取决于与特定QoS等级相关联的NS的数量,因此权重可仅在总存储容量725改变时被改变,继而权重仅在分派给QoS等级的NS的数量改变时改变。因此,权重可仅在NS被创建或删除时被调整;否则,权重可保持不变。
如可看出的那样,由于权重可取决于处于给定QoS等级的总存储容量,因此分派给单个QoS等级的NS越多,则用于该QoS等级的权重可能越高。由于可预期,当存在处于给定QoS等级的更多的NS时,在该QoS等级生成更多的请求,因此通过基于QoS等级715的总存储容量725确定权重,可从在其中更多的NS请求被处理的SQ处理更多NS请求。
但是从图7A移除的是对QoS等级本身的任何引用,或者更具体地,对该QoS等级承诺的保证。注意,例如,QoS等级3和4具有相同的权重,这意味着来自这两个QoS等级的请求可被同等地处理。该结果可能与处于QoS等级4的请求应当优先于处于QoS等级3的请求的预期相反。因此,虽然如所描述的那样调整权重可帮助防止处于QoS等级2的请求未被及时处理,但是与每个QoS等级相关联的优先级可能丢失。图7B也示出如何考虑优先级。
图7B示出管理用于由图6的仲裁器605实现的调度算法的权重。在图7中,表705可与图7A中的表相同。但是表740可代替表710。在表740中,优先级可添加为列:因此,表740可根据容量范围和优先级的组合映射到权重。
例如,在表705中,QoS等级745(QoS等级2)可包括大小为5GB的桶750,并且总存储容量755可以是200GB(意味着处于QoS等级745的40个NS)。在表740中,对于范围200GB至-600GB可存在多个条目,但是只有范围760和优先级765的组合适合于总存储容量755和QoS等级745。因此,对于QoS等级745,权重770可被使用:如表635中所示,用于QoS等级2的权重是10。但是QoS等级1、3和4(所有的QoS等级1、3和4落入表740中的相同容量范围内)具有不同的权重,从而反映与那些QoS等级相关联的不同优先级。
图8示出图5的闪存转换层530的细节。在图8中,闪存转换层530可包括QoS感知闪存转换层805以及裸片队列管理器810-1和810-2。QoS感知闪存转换层805可类似于没有QoS感知的闪存转换层进行操作(因为QoS感知闪存转换层805可将LBA映射到PBA(如可被存储在LBA至PBA表815中的PBA那样),其中,命令基于数据将被写入或读取的物理位置来适当地路由)。但是QoS感知闪存转换层805还可帮助确保租户隔离。为此,QoS感知闪存转换层805可包括分区管理器820,分区管理器820可对图5的闪存芯片525-1至525-8中的页/块/超级块进行分区,其中,不同的分区用于存储与不同QoS等级相关联的数据。参照图9至图11进一步论述页/块/超级块的划分。
裸片队列管理器810-1和810-2可管理向图5的闪存芯片525-1至525-8发送命令。裸片队列管理器810-1和810-2可各自分别包括各种裸片队列(例如,DQ1至DQn,其中,n是正整数)825-1和825-2,裸片队列825-1和825-2可用于对将要发送到图5的闪存芯片525-1至525-8的命令进行排队。
在QoS感知闪存转换层805与裸片队列管理器810-1和810-2之间,闪存转换层530可将同每个NS相关联的QoS等级与可由图1的存储装置120建立的内部优先级进行组合。组合起来,图1的存储装置120可提供基于优先级的调度。
虽然图8示出两个裸片队列管理器810-1和810-2,但是公开的实施例可包括任何数量(一个或多个,没有限制)的裸片队列管理器,但是裸片队列管理器的数量可对应于用于将数据存储在图5的闪存芯片525-1至525-8中的裸片的数量。类似地,裸片队列管理器810-1和810-2可包括任何数量(一个或多个,没有限制)的裸片队列825-1和825-2。例如,对于由系统提供的每个QoS等级,可存在一个裸片队列825-1和825-2,或者对于图1的存储装置120内部的每个优先级等级,可存在一个裸片队列825-1和825-2。通常,由图1的存储装置120内部地分派给单个请求的优先级越高,请求可被完成得越快。
裸片队列管理器810-1和810-2还可包括裸片完成队列(DCQ)830-1和830-2。裸片完成队列830-1和830-2可接收发出到图5的闪存芯片525-1至525-8的命令的结果。例如,裸片完成队列830-1和830-2可接收从图5的闪存芯片525-1至525-8读取的数据,或者可接收尝试将数据写入图5的闪存芯片525-1至525-8的结果。完成管理器835可访问来自裸片完成队列830-1和830-2的结果,并且将那些结果递送回图6的主机完成队列仲裁器645,以递送回发起请求的应用。
在公开的一些实施例中,闪存转换层530可包括垃圾收集逻辑和/或耗损均衡逻辑(图8中未示出)。因为垃圾收集和/或耗损均衡可能涉及改变数据被存储的物理地址,所以使垃圾收集逻辑和/或耗损均衡逻辑作为闪存转换层530的一部分简化了更新数据被存储在闪存转换层530中的位置的处理。但是公开的实施例也可将垃圾收集逻辑和/或耗损均衡逻辑放置在图1的存储装置120内的其他位置。此外,可存在多于一个垃圾收集逻辑和/或耗损均衡逻辑(其也可被组合成单个逻辑)。例如,如果图1的存储装置120包括多个闪存转换层530,则每个闪存转换层530可具有其自己的垃圾收集逻辑和/或耗损均衡逻辑。如下面参照图9所讨论的,垃圾收集逻辑和/或耗损均衡逻辑可一次在单个分区内操作,从而确保从一个块移动到另一个块的任何数据可保留在数据最初被写入的分区内。
如以上所讨论的那样,图5的闪存芯片525-1至525-8内的存储可被组织成分区,其中,分区管理器820管理什么存储被分派给每个分区。图9示出图1的SSD 120中的分区的超级块。如图9中所示,术语分区意在表示分配给特定QoS等级的块(或超级块)的集合:术语分区不应被解释为表示具有固定大小的预定存储部分(例如,如在格式化一个或多个卷(volume)之前将硬盘分区为那些卷)。还值得注意的是,从图1的主机105的角度来看,图1的存储装置120中的任何分区都是不可见的。公开的实施例可包括图1的主机105和图1的存储装置120两者,但是图1的主机105可能不知道图1的存储装置120如何存储数据。
在图9中,示出了分区905-1、905-2和905-3。每个分区可包括多个超级块:例如,分区905-1被示出为包括超级块910-1、910-2、910-3、910-4和910-5(SB 1、SB 2、SB 3、SB 4和SB 5)。注意,不同的分区可包括不同数量的超级块:分区905-2被示出为包括四个超级块(SB 6、SB 7、SB 8和SB 9),并且分区905-3被示出为包括三个超级块(SB 10、SB 11和SB12)。分区可包括任何数量(零个或多个,无限制)的超级块(尽管如果分区存储任何数据,则分区中将存在至少一个超级块)。
分区的使用提供了租户可在逻辑上彼此隔离所通过的机制:或者至少,使用不同QoS等级的租户可在逻辑上彼此隔离。例如,分区905-1可以是存储来自与图3的NVM集320-4相关联的NS的数据的分区,分区905-2可以是存储来自与图3的NVM集320-3相关联的NS的数据的分区,并且分区905-3可以是存储来自与图3的NVM集320-2相关联的NS的数据的分区(其中,图9中未示出的另一分区存储同与图3的NVM集320-1相关联的NS相关联的数据)。可存在任何数量(零个或多个,没有限制)的分区:在公开的一些实施例中,分区的数量可与QoS等级或NVM集的数量相关。
当数据将被写入图1的存储装置120时,图8的QoS感知闪存转换层805可使用关于数据与哪个QoS等级相关联的信息(这可例如使用图6的NS-QoS表620来确定)来识别数据应当被写入的分区。然后,图8的QoS感知闪存转换层805可选择所识别的分区中的超级块来存储数据,并且可更新图8的LBA至PBA表815以反映最终存储数据的PBA。为此,图8的分区管理器820可保持在其中块和/或超级块被分配给每个分区905-1至905-3的列表(在公开的一些实施例中,其可以是排序列表)。由于分区可基于当数据被写入图1的存储装置120和从图1的存储装置120无效时随时间增长和/或缩小,因此任何分区中的超级块的数量不是固定的。图8的分区管理器820还可保持所有空闲的块和/或超级块(即,未分配给任何分区的块,并因此可能正不存储任何数据)的列表(在公开的一些实施例中,其可以是排序列表)。
每个分区905-1至905-3可向将数据存储在分区905-1至905-3中的租户提供不同等级的性能。因此,图8的分区管理器820可针对不同的分区使用不同的超级块分配方案。例如,分区905-1至905-3可被分配提供不同并行性的超级块(诸如,所有NAND块来自单个通道,两个NAND块各自来自两个通道,或者(更一般地)i个NAND块来自j个不同通道(i和j在值上可相同或不同,并且可以各自是2的某个幂或其他值))。不同的超级块可支持不同形式的流量:例如,一些超级块可支持跨一个或多个通道的单向流量,而其他超级块可支持跨一个或多个通道的双向流量。不同的超级块还可包括不同数量的NAND块:例如,分配给分区905-2的超级块可各自包括两个NAND块,而分配给分区905-3的超级块可各自包括四个NAND块。每当新的超级块将被分配给单个分区时(例如,当应用正在写入不适合分区中的可用空间的数据时,或者当执行垃圾收集时,或者当执行耗损均衡时),用于分区的超级块分配方案可被使用。
可选地,可基于不同的NAND类型来分配超级块。例如,分区905-1可被分配包括三层单元(TLC)的超级块,分区905-2可被分配包括多层单元(MLC)的超级块,分区905-3可被分配包括单层单元(SLC)的超级块。由于TLC和MLC闪存芯片可比SLC闪存芯片存储更多的数据(但具有更慢的性能),因此分区905-1可比分区905-2包括更少的超级块,分区905-2继而可比分区905-3包括更少的超级块(其示出了超级块分配方案可组合NAND类型和并行性方法两者)。
当然,图8的分区管理器820还可针对分区905-1至905-3中的两个或更多个(多达全部)使用相同的超级块分配。
此外,不同的分区可提供不同的服务。例如,不同的分区可提供不同等级的独立磁盘冗余阵列(RAID)支持。一个或多个分区可以不提供RAID支持,而其他分区可提供各种等级的RAID。因此,分区内的RAID等级可用于支持所承诺的QoS等级。此外,图1的存储装置120的超额供应可再次基于QoS等级在不同的分区之间被分配。
可能发生分区中的任何单独超级块中的存储不足:也就是说,可能没有处于空闲状态的足够的页/块/超级块来存储数据。例如,如果分区905-1被选择来处理写入请求,但是超级块910-1至910-5不具有足够的空闲页来存储数据,则可能需要将新的超级块分配给分区905-1。这种情况也在第一次将任何数据写入分区时出现:由于分区在该第一次写入之前可能不包含数据,因此可能没有分配给分区的超级块。然后,图8的分区管理器820可将新的超级块分配给分区905-1(从而新数据可被写入),将新分配的超级块添加到分区905-1中的超级块的列表,然后将数据写入新分配的超级块中的PBA。
如上所述,SSD中的存储(例如,SSD中的存储区域)可处于三种状态之一:空闲(没有任何东西写入存储)、有效(数据被写入存储)或无效(有效数据已被写入存储但此后已被无效)。此外,通常以比数据被写入的单位更大的单位擦除存储:例如,可一次写入一页数据,但一次擦除一个块。因此,SSD中的存储可变成块中的有效数据和无效数据的片段映射(fragmentary map)。即使SSD仅有一部分存储有效数据,如果SSD在擦除块之前等待直到该块中的所有数据被无效,则SSD也可能进入没有空间写入新数据的状态。为了解决这个问题,SSD可使用垃圾收集逻辑。
垃圾收集逻辑检查SSD上的空闲存储量,垃圾收集逻辑可使用FPGA、ASIC或在CPU、GPU或GPGPU上运行的代码来实现,并且可以是图5的SSD控制器515、图5的闪存转换层530的一部分,或者包括在图1的SSD 120内的其他位置。如果空闲存储量下降到阈值以下(或一些其他触发条件被满足),则垃圾收集逻辑可识别包含无效数据(理想地,包含尽可能多的无效数据)的块。然后,垃圾收集逻辑可从选择的块读取任何有效数据,并将该数据写入SSD上具有空闲存储的另外的块(称为编程),并更新图5的闪存转换层530以反映有效数据被存储的新位置。一旦所有有效数据已从选择的块被复制,块就可被擦除,从而允许新数据被写入块。
然而,在通过QoS等级进行租户隔离的情况下,该处理略有改变。代替对有效数据进行任意的编程,垃圾收集逻辑可将数据编程到同一分区中的超级块中。也就是说,垃圾收集逻辑可在分区内操作,而不是作为跨整个SSD操作。这种改变解释了为什么图9示出垃圾收集逻辑写入同一分区中的超级块。(一旦超级块被垃圾收集逻辑擦除,超级块就可从分区中解除分配,并且超级块中的块返回到空闲块池,或者超级块可被留下来分配给用于将来的数据写入的分区。)
在公开的一些实施例中,图8的分区管理器820可将新的超级块分配给在垃圾收集被执行时将要使用的分区。也就是说,当垃圾收集被执行时,新的超级块可被添加到分区,并且将被垃圾收集逻辑擦除的超级块中的所有有效数据可被编程到新的超级块中。然后,一旦垃圾收集完成,新添加的超级块就可用于写入从图4A至图4C的应用405-1和405-2接收的其他数据。在公开的其他实施例中,垃圾收集逻辑可将来自将被擦除的超级块的有效数据编程到分区中的现有超级块中的任何可用空闲空间中,并且只有当分区中没有足够的空闲空间用于将由垃圾收集逻辑编程的所有有效数据时,新的超级块才可能被分配给分区。耗损均衡可根据需要使用与关于将新的超级块分配给分区的垃圾收集的方法类似的方法。
SSD的另一方面是图5的闪存芯片525-1至525-8不具有无限的寿命。相反,图5的闪存芯片525-1至525-8中的每个单元可具有有限数量的写入/擦除循环,在有限数量的写入/擦除循环之后单元可能无法保证正确地存储写入的数据。该写入/擦除循环的数量可取决于许多因素(包括例如在图5的闪存芯片525-1至525-8中使用的NAND的类型)。例如,可预期SLC单元在数据不能被正确地存储之前经历100,000个写入/擦除循环,而MLC可能具有10,000个写入/擦除循环的上限,TLC可能具有1000个写入/擦除循环的上限,四层单元(QLC)可能具有仅100个写入/擦除循环的上限。
因为在可能发生错误之前单元可能经历的写入/擦除循环的数量是有限的,所以SSD尝试尽可能多地甚至在所有单元之间保持写入/擦除循环的数量。因此,如果一个块经历了一些写入/擦除循环,而另外的块仅经历了很少的写入/擦除循环,则图5的闪存转换层530可能倾向于后面的块写入新接收的数据。该处理被称为耗损均衡。但是再次,由于期望通过QoS等级进行租户隔离,所以耗损均衡逻辑应当引导数据被写入适当分区中的超级块中。因此,即使分区中的超级块可具有用于数据的空间,具有较少的写入/擦除循环的新的超级块也可被分配给分区,并且替代地,数据可被写入该超级块。
除了每个分区潜在地具有其自己的RAID等级之外,每个分区可具有关于何时以及如何运行垃圾收集和/或耗损均衡的其自己的规则。也就是说,一个分区可指示对于该分区当空闲块的数量为该分区的总可用空闲块的40%时垃圾收集应当被执行,而另外的分区可指示对于该分区当空闲块的数量为总可用空闲块的20%时垃圾收集应当被执行。耗损均衡可类似地在不同分区中被不同地应用。此外,因为垃圾收集和耗损均衡可在单个分区内被执行,所以一个分区中的垃圾收集操作和耗损均衡操作不应影响或干扰另外的分区中的操作。
为了支持如所描述的垃圾收集和耗损均衡,图1的存储装置120可包括一个或多个垃圾收集逻辑和/或耗损均衡逻辑(图中未示出)。如果图1的存储装置120包括足够的垃圾收集逻辑和/或耗损均衡逻辑,使得每个分区905-1至905-3可具有其自己的垃圾收集逻辑和/或耗损均衡逻辑,则每个垃圾收集逻辑和/或耗损均衡逻辑可专用于单个分区。可选地,如果比分区少的垃圾收集逻辑和/或耗损均衡逻辑(并且即使存在足够的垃圾收集逻辑和/或耗损均衡逻辑,使得每个分区可具有其自己的垃圾收集逻辑和/或耗损均衡逻辑),则一个或多个垃圾收集逻辑和/或一个或多个耗损均衡逻辑可一次在一个分区内操作。但是在任一种情况下,一个或多个垃圾收集逻辑和/或一个或多个耗损均衡逻辑可知道分区的存在,并且可确保由于垃圾收集和/或耗损均衡而编程的任何数据被写入该分区中的另一超级块,使得数据可与其他分区中的租户(以及因此使用其他QoS等级的租户)隔离。
以上讨论集中于分区905-1至905-3之间的逻辑隔离。分区905-1至905-3也可彼此物理隔离。例如,返回参照图5,示出八个闪存芯片525-1至525-8。如果每个闪存芯片525-1至525-8存储仅与一个QoS等级相关联的数据,则用于不同QoS等级的数据被存储在不同闪存芯片上的事实可提供物理隔离以及逻辑隔离。因此,由图8的分区管理器820使用的超级块分配方案也可尝试物理地以及逻辑地隔离超级块。
返回图9,虽然以上讨论集中于分区905-1至905-3用于逻辑地隔离用于不同QoS等级的数据,但是分区905-1至905-3也可被分派给各个租户。也就是说,分区905-1可用于存储用于租户1的数据,分区905-2可用于存储用于租户2的数据等。以这种方式,分区905-1至905-3可用于逻辑地隔离各个租户以及用于不同QoS等级的数据。在公开的这样的实施例中,最终可存在与相同QoS等级相关联的多个分区(例如,如果两个租户都使用处于QoS等级1的NS并且分区被分派给各个租户,则将存在与QoS等级1相关联的两个分区)。
虽然上面的讨论集中于使用超级块来管理分区,但是公开的实施例可使用其他存储单位来组织分区。例如,可使用页或块来组织分区。以上对超级块的任何引用应当被理解为也适用于块和/或页。
图10示出图1的SSD 120中的图9的分区905-1的图9的超级块910-1至910-5的可选示图。在图10中,示出了超级块910-1至910-5以及超级块1005-1至1005-11。不同的交叉影线可指示超级块被分配给哪个分区。因此,例如,超级块910-1至910-5可被分配给图9的分区905-1,超级块1005-2、1005-6、1005-7和1005-8可被分配给图9的分区905-2,超级块1005-3、1005-5和1005-10可被分配给图9的分区905-3。空闲块池1010可识别超级块1005-1、1005-4、1005-9和1005-11当前是空闲的并且可用于根据需要(根据针对QoS等级的适当的超级块分配方案)被分配给任何分区。图10中示出的组织可描绘超级块分配的示例,其中任何超级块可被分配给任何分区。
图11示出图1的SSD 120中的图5的闪存芯片525-1至525-8中的超级块。在SSD中,块可被组织成平面,平面可被组织成裸片,并且裸片可被组织成通道。因此,图11可有效地描绘两个示例闪存芯片(一个经由通道0被访问,另一个经由通道1被访问)。可选地,如果单个闪存芯片可支持两个通道,则图11可有效地描绘可跨两个通道被访问的单个闪存芯片。
跨这些各种通道、裸片和平面,示出了超级块910-4。本质上,超级块910-4是在平面内都具有相同的位置但是在通道、裸片或平面中的至少一个方面彼此不同的块的集合。这种布置允许引入一些并行性,这可加速从超级块的数据读取和写入。
图12示出图5的NAND接口层535的细节。在图12中,NAND接口层535被示出为包括NAND命令调度器1205-1和1205-2。NAND命令调度器1205-1和1205-2可从图8的裸片队列825-1和825-2接收命令。NAND命令调度器1205-1和1205-2可使用任何期望的仲裁算法来选择访问图8的哪个裸片队列825-1和/或825-2,然后从图8的该裸片队列825-1和/或825-2选择单独的命令。例如,NAND命令调度器1205-1和1205-2可使用WRR调度算法(但是可能在分派给图8的各个裸片队列825-1和/或825-2的预定的固定权重的情况下,而不是上面讨论的动态权重),并且可使用FIFO选择算法来从图8的裸片队列825-1和/或825-2选择下一命令进行处理。因此,NAND命令调度器1205-1和1205-2可基于裸片队列优先级等级(其可对应于QoS等级)来实现优先级调度。
一旦命令已经被选择,NAND命令调度器1205-1和1205-2就可通过图5的通道520-1至520-4将那些命令发送到图5的闪存芯片525-1至525-8。
此外,NAND接口层535可包括通道/裸片状态单元1210-1和1210-2。通道/裸片状态单元1210-1和1210-2可从对应的NAND命令调度器与其通信的通道/裸片接收信息。该信息可包括例如从图5的闪存芯片525-1至525-8读取的数据、写入命令的结果、以及关于图5的闪存芯片525-1至525-8的状态的其他信息。NAND命令调度器1205-1和1205-2可使用该信息来调度图5的闪存芯片525-1至525-8的命令(例如,如果通道/裸片状态单元1210-1和/或1210-2指示通道/裸片忙碌,则NAND命令调度器1205-1和1205-2可等待调度下一命令,直到通道/裸片状态单元1210-1和/或1210-2指示通道/裸片空闲为止)。然后,NAND命令调度器1205-1和1205-2可将该信息返回到图8的裸片完成队列830-1和830-2。
虽然图12示出两个NAND命令调度器1205-1和1205-2以及两个通道/裸片状态单元1210-1和1210-2,但是公开的实施例可包括任何数量(一个或多个,没有限制)的NAND命令调度器和通道/裸片状态单元。在公开的一些实施例中,针对图5的通道520-1至520-4中的每个,可存在一个NAND命令调度器和一个通道/裸片状态单元。此外,NAND命令调度器和通道/裸片状态单元的数量可不同:例如,一个NAND命令调度器可沿多个通道向闪存芯片发送命令,但是每个通道可具有专用的通道/裸片状态单元。
图13示出与服务质量(QoS)等级相关联的写入请求。在图13中,示出了写入请求1305。写入请求1305可包括数据1310,数据1310可具有相关联的LBA 1315。由于每个NS(或者至少,与单个应用相关联的每个NS)可具有唯一的LBA范围,因此LBA 1315可被映射到NS325-1。(可选地,NS325-1可被包括在写入请求1305中,在这种情况下,将LBA 1315映射到NS325-1可能是不必要的。)由于每个NS可与单个NVM集相关联,因此NS 325-1可被映射到NVM集320-4。由于每个NS可与单个SQ相关联(至少在应用正在其中运行的核内),因此NVM集320-4可被映射到SQ 310-4。最后,SQ 310-4可被映射到QoS等级,QoS等级继而可被映射到分区905-1。因此,可存在关联链,其将特定写入请求向下关联到图1的存储装置120中的可存储数据1310的分区。
虽然图13集中于写入请求1305,但公开的实施例可针对其他I/O命令(诸如,读取命令)映射类似关联链。
在上面的讨论中,焦点在于单个存储装置以及其自己的控制器。但是控制器(诸如,图5的SSD控制器515)可管理存储在多个SSD中的信息。为了支持管理多个存储装置的图5的SSD控制器515,可通过添加将图5的闪存转换层530连接到附加存储装置的附加电路来扩充图8的LBA至PBA表815以包括这样的列:以特定PBA标识存储图13的数据1310的存储装置。在公开的这样的实施例中,图1的系统可向通过多个存储装置存储的租户提供租户隔离。此外,通过支持多个存储装置上的存储,图8的分区管理器820可在多个存储装置之间而不是仅在单个存储装置内选择超级块。除了潜在地跨越多个存储装置的分区之外,每个存储装置可被分派为存储仅与单个QoS等级相关联的数据,从而提供用于在不同QoS等级的租户之间提供物理分离的附加方法。
图14A至图14B示出用于将图13的写入请求1305映射到图3的SQ310-1至310-4的示例过程的流程图。在图14A中,在框1405,图1的主机105可发出命令以创建图3的SQ 310-1至310-4。可基于来自管理员的指令发出用于创建图3的SQ 310-1至310-4的命令。在框1410,图1的主机105可将QoS等级分派给图3的SQ 310-1至310-4。可基于来自管理员的指令将QoS等级分派给图3的SQ 310-1至310-4。如上所述,该分派可以是SQ创建命令的一部分,而不是单独的过程。在框1415,图1的主机105可发出命令以创建图3的NVM集320-1至320-4。可基于来自管理员的指令来发出用于创建图3的NVM集320-1至320-4的命令。在框1420,图1的主机105可将图3的NVM集320-1至320-4与图3的SQ 310-1至310-4相关联。QoS等级可基于来自管理员的指令而与图3的NVM集320-1至320-4相关联。如以上所讨论的,该关联可以是NVM集创建命令的一部分,而不是单独的过程。注意,由于图3的SQ 310-1至310-4与图3的NVM集320-1至320-4之间的关联可通过用于创建包括相关联的NVM集的ID的SQ的命令来完成,因此这些框的顺序可被调整以首先创建图4的NVM集320-1至320-4。
在框1425,应用可发出命令以创建图3的NS 325-1和325-2。在框1430,应用可将图3的NS 325-1和325-2与图3的NVM集320-4相关联。如以上所讨论的,该关联可以是NS创建命令的一部分,而不是单独的过程。
在框1435(图14B),图1的处理器110可从图4A至图4C的应用405-1或405-2接收图13的I/O请求1305(例如,写入请求1305)。在框1440,使用图13的I/O请求1305的图13的LBA1315,图1的处理器110可将图3的NS 325-1识别为与图13的I/O请求1305相关联。在框1445,图1的处理器110然后可基于图3的NS 325-1与图3的NVM集320-4之间的关联来识别图3的NVM集320-4。在框1450,图1的处理器110然后可基于图3的NVM集320-4与图3的SQ 310-4之间的关联来识别图3的SQ 310-4。然后,在框1455,图1的处理器110可将图13的I/O请求1305放置在图3的SQ 310-4中。
最终,在框1460,图1的处理器110可在完成队列315中接收对图1的I/O请求1305的响应。在框1465,图1的处理器110然后可将响应递送到图4A至图4C的应用405-1或405-2。
图15A至图15B示出用于由图5的主机接口层510处理来自图3的SQ 310-1至310-4的请求的示例过程的流程图。在图15A中,在框1505,图6的仲裁器605可确定用于图3的SQ310-1至310-4的权重。如以上所讨论的,可针对QoS等级确定权重,QoS等级(借助于与图3的SQ 310-1至310-4的关联)可用于图3的SQ 310-1至310-4。在框1510,基于权重,图6的仲裁器605可选择SQ。在框1515,图6的命令获取器610可从选择的SQ选择图13的I/O请求1305。在框1520,图6的命令解析器615可选择图6的命令队列625。在框1525,命令解析器可将图13的I/O请求1305放置在选择的命令队列625中。
在框1530(图15B),图6的QoS感知调度器630可选择图6的命令队列625。在框1535,图6的QoS感知调度器630可从图6的命令队列625选择图13的I/O请求1305。在框1540,图6的QoS感知调度器630可将图13的I/O请求1305发送到图5的闪存转换层530。
在框1545,图6的主机完成队列仲裁器645可从图5的闪存转换层530接收图13的I/O请求1305的结果(例如,对图13的I/O请求1305的响应)。在框1550,图6的主机完成队列仲裁器645可将结果放置在图3的完成队列315中。图6的主机完成队列仲裁器645可按照接收结果所按照的顺序将结果放置在图3的完成队列315中,或者可对结果进行重新排序以满足与生成结果的请求相关联的QoS等级。例如,如果主机完成队列仲裁器645中存在与高QoS等级相关联的结果并且主机完成队列仲裁器645中存在与低QoS等级相关联的另一结果,则即使与低QoS等级相关联的结果首先被放置在主机完成队列仲裁器645中,主机完成队列仲裁器645也可首先将与高QoS等级相关联的结果放置在图3的完成队列315中。
图16示出用于确定由图6的仲裁器605使用的权重的示例过程的流程图。在图16中,在框1605,图6的仲裁器605可确定分派给每个QoS等级的NS的总存储容量。如上面参照图3和图7A至图7B所讨论的,假设与给定NVM集相关联的每个NS具有相同的存储容量,则可通过将与NVM集相关联的NS的数量与分派的存储容量相乘来确定用于QoS等级的总存储容量。可选地,可通过对与QoS等级相关联的各个NS的容量求和来确定用于QoS等级的总存储容量,或者通过确定用于处于QoS等级的所有NS的最大容量并将该最大容量乘以与该QoS等级相关联的NS的数量来确定用于QoS等级的总存储容量。在这一点上,存在可选方案。在框1610,图6的仲裁器605可使用图7A的表710将单个QoS等级的总存储容量映射到权重。可选地,在框1615,图6的仲裁器605可使用图7B的表740将同QoS等级组合的单个QoS等级的总存储容量映射到权重。
图17示出用于将图13的写入请求1305中的图13的数据1310写入图9的分区905-1至905-3中的超级块的示例过程的流程图。在图17中,在框1705,图8的QoS感知闪存转换层805可接收图13的I/O请求1305。基于接收图13的I/O请求1305所通过的命令队列625,或者使用图6的NS-QoS表620,请求可与QoS等级相关联。在框1710,图8的QoS感知闪存转换层805可选择具有相关联的QoS等级的分区905-1。在框1715,图8的QoS感知闪存转换层805可在图9的分区905-1中识别图13的数据1310可被写入的图9的超级块910-1。在框1720,图8的QoS感知闪存转换层805可在图9的超级块910-1内选择用于图13的数据1310的PBA。在框1725,图8的QoS感知闪存转换层805可更新图8的LBA至PBA表815以反映存储图13的数据1310的PBA。最后,在框1730,裸片队列管理器810-1可使用图5的NAND接口层535来将图13的数据1310写入图9的分区905-1中的图9的超级块910-1中的PBA。
图18示出用于在图9的分区905-1中选择图13的写入请求1305中的图13的数据1310可被写入的图9的超级块910-1的示例过程的流程图。在图18中,在框1805,图8的QoS感知闪存转换层805可确定图9的分区905-1中的任何超级块当前是否具有足够的空闲空间来存储图13的数据1310。如果存在具有足够的空闲空间来存储图13的数据1310的图9的至少一个超级块910-1,则在框1810,图8的QoS感知闪存转换层805可在图9的分区905-1中选择具有足够的空闲空间来存储图13的数据1310的图9的超级块910-1。另一方面,如果图9的分区905-1中不存在具有足够的空闲空间来存储图13的数据1310的图9的超级块910-1,则在框1815,图8的分区管理器820可将新的超级块分配给图9的分区905-1,并且在框1820,图8的QoS感知闪存转换层805可在图9的分区905-1中选择新分配的超级块来存储图13的数据1310。
虽然图18集中于响应于由图4A至图4C的应用405-1和/或405-2发出的图13的写入请求1305而写入图13的数据1310,但是图18同样适用于基于垃圾收集或耗损均衡来写入数据。因此,图18中示出的流程图还可用于在数据由于垃圾收集和/或耗损均衡可被写入的情况下选择超级块。
图19示出用于对图9的分区执行垃圾收集或耗损均衡的示例过程的流程图。在图19中,在框1905,垃圾收集逻辑和/或耗损均衡逻辑可选择图9的分区905-1至905-3。如上所述,该垃圾收集逻辑和/或耗损均衡逻辑可专用于图9的分区905-1至905-3,或者该垃圾收集逻辑和/或耗损均衡逻辑可被配置为在图9的任何分区905-1至905-3上操作。在框1910,垃圾收集逻辑和/或耗损均衡逻辑可选择图9的分区905-1至905-3中的超级块。在框1915,垃圾收集逻辑和/或耗损均衡逻辑可对选择的超级块执行垃圾收集和/或耗损均衡。在框1920,垃圾收集逻辑和/或耗损均衡逻辑可确定是否存在用于来自选择的超级块的要编程的任何数据。如果存在来自选择的超级块的要编程的数据,则在框1925,垃圾收集逻辑和/或耗损均衡逻辑可将来自选择的超级块的数据编程到分区中的另一超级块中。该处理可涉及诸如上面参照图18描述的操作的操作。一旦来自选择的超级块的需要被编程的任何数据已经被编程,则处理完成(尽管如果选择的超级块现在没有存储有效数据,则可如下面参照图20描述的那样从分区移除选择的超级块)。
图20示出用于从图9的分区移除超级块的示例过程的流程图。在图20中,在框2005,图8的分区管理器820可在图9的分区905-1中识别当前未存储有效数据的图9的超级块910-1。当先前写入图9的超级块910-1的数据被图4A至图4C的应用405-1和/或405-2无效时,或者当图9的超级块910-1被选择用于垃圾收集时以及其他可能性,可出现这样的情况。一旦识别出不具有有效数据的图9的超级块910-1,则在框2010,图8的分区管理器820可从图9的分区905-1移除图9的超级块910-1。在框2015,图5的闪存转换层530可擦除图9的超级块910-1。最后,在框2020,图8的分区管理器820可将图9的超级块910-1返回到图10的空闲块池1010。
如虚线2025所示,可省略框2015。例如,可能发生图9的超级块910-1被分配给图9的分区905-1以存储被快速无效的少量数据(诸如,临时的应用数据)。由于图9的超级块910-1的大部分可以是空闲的以存储其他数据,因此在该时刻擦除块可能是过早的(例如,通过不必要地使用写入/擦除循环)。在这种情况下,在不擦除图9的超级块910-1的情况下将图9的超级块910-1返回到图10的空闲块池1010可能是合理的(当稍后再次使用图9的超级块910-1来存储数据时,可忽略图9的超级块910-1中的无效数据)。
在图14A至图20中,示出公开的一些实施例。但本领域技术人员将认识到,通过改变框的次序、通过省略框或通过包括附图中未示出的连接,公开的其它实施例也是可行的。无论是否明确地描述,流程图的所有这样的变化都被认为是公开的实施例。
公开的实施例提供了优于现有技术的技术优点。首先,通过使QoS等级适用于主机和存储装置两者,可实现通过QoS等级的端到端租户隔离。此外,因为存储装置还支持QoS等级,所以主机上的负担(在尝试确保满足SLA方面)降低:存储装置可负责确保满足SLA。主机可设置可与各个QoS等级相关联的SQ和NVM集;当NS与NVM集相关联时,NS可得到与NVM集相关联的QoS等级,而不是必须单独地为NS建立QoS等级。因为NVM集可跨越处理器核,所以应用可在任何期望的核中运行并且仍然实现承诺的QoS(与必须在特定核中运行以接收特定QoS等级优势相反)。
在存储装置中,存储可被划分为分区,每个分区可与QoS等级相关联。因为预期一个QoS等级的租户可在逻辑上与预期另一QoS等级的租户隔离,所以这种布置有助于提供租户隔离。如果存储装置提供一些形式的物理隔离(例如,多个闪存芯片或磁盘),则数据可被写入特定位置,该特定位置也可将租户与具有其他QoS等级的租户物理隔离。
使用动态权重,WRR调度算法可被使用,WRR调度算法可识别用于与不同QoS等级相关联的请求的优先级,也可防止请求等待太长时间以至于可能不满足通过QoS等级承诺的服务。权重可与QoS等级分离,并且可基于分配给处于QoS等级的NS的总存储来确定。
下面的讨论意在提供对其中可实现公开的某些方面的一个或多个合适的机器的简要、总体描述。一个或多个机器可至少部分地通过来自常规输入装置(诸如,键盘、鼠标等)的输入以及通过从另外的机器接收的指令、与虚拟现实(VR)环境的交互、生物特征反馈或其它输入信号来控制。如在此所使用的,术语“机器”意在广泛地包含单个机器、虚拟机或者通信地连接的一起操作的机器、虚拟机或装置的系统。示例性机器包括计算装置(诸如,个人计算机、工作站、服务器、便携式计算机、手持装置、电话、平板计算机等)以及运输装置(诸如,私人或公共交通工具(例如,汽车、火车、出租车等))。
一个或多个机器可包括嵌入式控制器(诸如,可编程或不可编程逻辑器件或阵列、专用集成电路(ASIC)、嵌入式计算机、智能卡等)。一个或多个机器可利用至一个或多个远程机器(诸如,通过网络接口、调制解调器或其它通信连接)的一个或多个连接。机器可通过物理网络和/或逻辑网络(诸如,内联网、互联网、局域网、广域网等)的方式来互连。本领域技术人员将理解,网络通信可利用各种有线和/或无线短距离或长距离载波和协议,包括:射频(RF)、卫星、微波、电气和电子工程师协会(IEEE)802.11、光学、红外、电缆、激光等。
本公开的实施例可通过参照或结合相关联的数据来描述,所述相关联的数据包括函数、程序、数据结构、应用程序等,所述相关联的数据在被机器访问时引起机器执行任务或者定义抽象数据类型或低级硬件上下文。相关联的数据可被存储在例如易失性存储器和/或非易失性存储器(例如,RAM、ROM等)中,或者被存储在其它存储装置及它们相关联的存储介质中,其它存储装置及它们相关联的存储介质包括硬盘驱动器、软盘、光学存储设备、磁带、闪存、记忆棒、数字视频盘、生物存储设备等。相关联的数据可以以包、串行数据、并行数据、传播信号等的形式在包括物理网络和/或逻辑网络的传输环境上被传输,并且可以以压缩格式或加密格式被使用。相关联的数据可在分布式环境中被使用,并且被本地地和/或远程地存储以用于机器访问。
公开的实施例可包括有形的非暂时性机器可读介质,有形的非暂时性机器可读介质包括可由一个或多个处理器执行的指令,所述指令包括用于执行如在此所描述的公开的元件的指令。
上面描述的方法的各种操作可由能够执行操作的任何合适的装置(诸如,一个或多个各种硬件和/或软件组件、电路和/或一个或多个模块)来执行。软件可包括用于实现逻辑功能的可执行指令的有序列表,并且可以以任何“处理器可读介质”来实现,以被指令执行系统、设备或装置(诸如,单核或多核处理器或包含处理器的系统)使用或者结合指令执行系统、设备或装置(诸如,单核或多核处理器或包含处理器的系统)来使用。
结合在此公开的实施例描述的方法或算法和功能的块或步骤可直接以硬件、以由处理器执行的软件模块、或以二者的组合来实现。如果以软件来实现,则功能可作为一个或多个指令或代码被存储在有形的非暂时性计算机可读介质上或通过有形的非暂时性计算机可读介质传输。软件模块可驻留在随机存取存储器(RAM)、闪存、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移动盘、CD ROM或本领域已知的任何其它形式的存储介质中。
已经参照示出的实施例描述和示出公开的原理,将认识到,示出的实施例可在不脱离这样的原理的情况下在布置和细节上被修改,并且可以以任何期望的方式进行组合。此外,尽管前述讨论已经集中在特定实施例上,但其它配置被预期。具体地,尽管在此使用了诸如“根据公开的实施例”等的表述,但这些短语意味着总体上涉及实施例可能性,而不意在将公开限制为特定实施例配置。如在此所使用的,这些术语可涉及可组合到其它实施例中的相同的或不同的实施例。
前述的说明性实施例不应被解释为限制其公开。尽管已经描述了一些实施例,但本领域技术人员将容易理解,在实质上不脱离本公开的新颖教导和优点的情况下,许多修改对那些实施例是可行的。因此,所有这样的修改意在被包括在如在权利要求中限定的本公开的范围内。
公开的实施例可扩展至下面的声明,而没有限制:
声明1、公开的实施例包括一种系统,所述系统包括:
处理器;
第一提交队列(SQ)和第二SQ,第一SQ与第一服务质量(QoS)等级相关联,并且第二SQ与第二QoS等级相关联,第一QoS等级与第二QoS等级不同;以及
应用,在处理器上运行并使用第一命名空间(NS),
其中,处理器被配置为接收第一非易失性存储器(NVM)集创建命令以建立与第一SQ相关联的第一NVM集,
其中,处理器被配置为接收第二NVM集创建命令以建立与第二SQ相关联的第二NVM集,
其中,处理器被配置为接收第一NS创建命令以建立与第一NVM集相关联的第一NS,
其中,处理器被配置为接收第二NS创建命令以建立与第二NVM集相关联的第二NS,以及
其中,处理器被配置为至少部分地基于从应用发送到至少一个存储装置的输入/输出(I/O)请求与第一NS相关联、第一NS与第一NVM集相关联、并且第一NVM集与第一SQ相关联,将I/O请求放置在第一SQ中。
声明2、公开的实施例包括根据声明1所述的系统,其中,第一SQ和第二SQ由处理器拥有。
声明3、公开的实施例包括根据声明1所述的系统,其中,
所述系统包括:存储器,并且
用于第一SQ的第一数据和用于第二SQ的第二数据存储在存储器中。
声明4、公开的实施例包括根据声明1所述的系统,其中,
处理器包括第一核和第二核;
第一核与第一SQ和第二SQ相关联;以及
第二核与第三SQ和第四SQ相关联,第三SQ具有第一QoS等级,并且第四SQ具有第二QoS等级。
声明5、公开的实施例包括根据声明1所述的系统,还包括:完成队列,用于从所述至少一个存储装置接收数据。
声明6、公开的实施例包括根据声明1所述的系统,其中,
第一NVM集与所述至少一个存储装置中的第一存储分区相关联,并且
第二NVM集与所述至少一个存储装置中的第二存储分区相关联。
声明7、公开的实施例包括根据声明6所述的系统,其中,
所述至少一个存储装置包括固态驱动器(SSD);
所述至少一个存储装置中的第一存储分区包括SSD中的第一组与非(NAND)闪存芯片,并且
所述至少一个存储装置中的第二存储分区包括SSD中的第二组NAND闪存芯片。
声明8、公开的实施例包括根据声明7所述的系统,其中,SSD中的第一组NAND闪存芯片与SSD中的第二组NAND闪存芯片物理分离。
声明9、公开的实施例包括根据声明6所述的系统,其中,所述至少一个存储装置中的第一存储分区在逻辑上与所述至少一个存储装置中的第二存储分区分离。
声明10、公开的实施例包括根据声明1所述的系统,其中,所述至少一个存储装置支持第一QoS等级和第二QoS等级。
声明11、公开的实施例包括一种方法,所述方法包括:
从在处理器上运行的应用接收发送到至少一个存储装置的输入/输出(I/O)请求;
识别与I/O请求相关联的命名空间(NS);
至少部分地基于NS与非易失性存储器(NVM)集之间的第一关联来识别NVM集,NVM集与服务质量(QoS)等级相关联;
至少部分地基于NVM集与提交队列(SQ)之间的第二关联来识别SQ;以及
将I/O请求放置在SQ中。
声明12、公开的实施例包括根据声明11所述的方法,其中,SQ由处理器拥有。
声明13、公开的实施例包括根据声明11所述的方法,其中,用于SQ的数据被存储在存储器中。
声明14、公开的实施例包括根据声明11所述的方法,还包括:
在完成队列中接收响应;以及
将响应发送到应用。
声明15、公开的实施例包括根据声明11所述的方法,其中,SQ与QoS等级相关联。
声明16、公开的实施例包括根据声明15所述的方法,其中,NVM集至少部分地基于SQ与QoS等级相关联而与QoS等级相关联。
声明17、公开的实施例包括根据声明16所述的方法,其中,NS至少部分地基于NVM集与QoS等级相关联而与QoS等级相关联。
声明18、公开的实施例包括根据声明11所述的方法,其中,NVM集与所述至少一个存储装置中的第一存储分区相关联。
声明19、公开的实施例包括根据声明18所述的方法,其中,存储装置包括至少一个固态驱动器(SSD)。
声明20、公开的实施例包括根据声明11所述的方法,其中,从在处理器上运行的应用接收I/O请求的步骤包括:从在处理器的第一核中运行的应用接收I/O请求,处理器包括第一核和第二核。
声明21、公开的实施例包括根据声明11所述的方法,还包括:
从在处理器上运行的应用接收第二I/O请求;
识别与第二I/O请求相关联的第二NS;
至少部分地基于第二NS与第二NVM集之间的第三关联来识别第二NVM集,第二NVM集与第二QoS等级相关联;
至少部分地基于第二NVM集与第二SQ之间的第四关联来识别第二SQ;以及
将第二I/O请求放置在第二SQ中。
声明22、公开的实施例包括根据声明11所述的方法,还包括:向处理器发送命令以创建SQ。
声明23、公开的实施例包括根据声明22所述的方法,还包括:将QoS等级分派给SQ。
声明24、公开的实施例包括根据声明11所述的方法,还包括:向处理器发送命令以创建NVM集。
声明25、公开的实施例包括根据声明24所述的方法,还包括:将NVM集与SQ相关联。
声明26、公开的实施例包括根据声明25所述的方法,其中,NVM集从SQ得到QoS等级。
声明27、公开的实施例包括根据声明11所述的方法,还包括:向处理器发送命令以创建NS。
声明28、公开的实施例包括根据声明27所述的方法,还包括:将NS与NVM集相关联。
声明29、公开的实施例包括根据声明28所述的方法,其中,NS从NVM集得到QoS等级。
声明30、公开的实施例包括一种物品,所述物品包括非暂时性存储介质,所述非暂时性存储介质具有存储在其上的指令,所述指令在由机器执行时导致:
从在处理器上运行的应用接收发送到至少一个存储装置的输入/输出(I/O)请求;
识别与I/O请求相关联的命名空间(NS);
至少部分地基于NS与非易失性存储器(NVM)集之间的第一关联来识别NVM集,NVM集与服务质量(QoS)等级相关联;
至少部分地基于NVM集与提交队列(SQ)之间的第二关联来识别SQ;以及
将I/O请求放置在SQ中。
声明31、公开的实施例包括根据声明30所述的物品,其中,SQ由处理器拥有。
声明32、公开的实施例包括根据声明30所述的物品,其中,用于SQ的数据被存储在存储器中。
声明33、公开的实施例包括根据声明30所述的物品,所述非暂时性存储介质具有存储在其上的另外的指令,所述另外的指令在由机器执行时导致:
在完成队列中接收响应;以及
将响应发送到应用。
声明34、公开的实施例包括根据声明30所述的物品,其中,SQ与QoS等级相关联。
声明35、公开的实施例包括根据声明34所述的物品,其中,NVM集至少部分地基于SQ与QoS等级相关联而与QoS等级相关联。
声明36、公开的实施例包括根据声明35所述的物品,其中,NS至少部分地基于NVM集与QoS等级相关联而与QoS等级相关联。
声明37、公开的实施例包括根据声明30所述的物品,其中,NVM集与至少一个存储装置中的第一存储分区相关联。
声明38、公开的实施例包括根据声明37所述的物品,其中,存储装置包括至少一个固态驱动器(SSD)。
声明39、公开的实施例包括根据声明30所述的物品,其中,从在处理器上运行的应用接收I/O请求的步骤包括:从在处理器的第一核中运行的应用接收I/O请求,处理器包括第一核和第二核。
声明40、公开的实施例包括根据声明30所述的物品,所述非暂时性存储介质具有存储在其上的另外的指令,所述另外的指令在由机器执行时导致:
从在处理器上运行的应用接收第二I/O请求;
识别与第二I/O请求相关联的第二NS;
至少部分地基于第二NS与第二NVM集之间的第三关联来识别第二NVM集,第二NVM集与第二QoS等级相关联;
至少部分地基于第二NVM集与第二SQ之间的第四关联来识别第二SQ;以及
将第二I/O请求放置在第二SQ中。
声明41、公开的实施例包括根据声明30所述的物品,所述非暂时性存储介质具有存储在其上的另外的指令,所述另外的指令在由机器执行时导致:向处理器发送命令以创建SQ。
声明42、公开的实施例包括根据声明41所述的物品,所述非暂时性存储介质具有存储在其上的另外的指令,所述另外的指令在由机器执行时导致:将QoS等级分派给SQ。
声明43、公开的实施例包括根据声明30所述的物品,所述非暂时性存储介质具有存储在其上的另外的指令,所述另外的指令在由机器执行时导致:向处理器发送命令以创建NVM集。
声明44、公开的实施例包括根据声明43所述的物品,所述非暂时性存储介质具有存储在其上的另外的指令,所述另外的指令在由机器执行时导致:将NVM集与SQ相关联。
声明45、公开的实施例包括根据声明44所述的物品,其中,NVM集从SQ得到QoS等级。
声明46、公开的实施例包括根据声明30所述的物品,所述非暂时性存储介质具有存储在其上的另外的指令,所述另外的指令在由机器执行时导致:向处理器发送命令以创建NS。
声明47、公开的实施例包括根据声明46所述的物品,所述非暂时性存储介质具有存储在其上的另外的指令,所述另外的指令在由机器执行时导致:将NS与NVM集相关联。
声明48、公开的实施例包括根据声明47所述的物品,其中,NS从NVM集得到QoS等级。
声明49、公开的实施例包括一种存储装置中的主机接口层,所述主机接口层包括:
仲裁器,用于从至少包括第一提交队列(SQ)和第二SQ的集合选择第一SQ,第一SQ与第一服务质量(QoS)等级相关联,第二SQ与第二QoS等级相关联;
命令获取器,用于从第一SQ获取输入/输出(I/O)请求;以及
命令解析器,用于将I/O请求放置在来自至少包括第一命令队列和第二命令队列的集合的第一命令队列中,
其中,仲裁器被配置为至少部分地基于与第一SQ相关联的第一权重和与第二SQ相关联的第二权重,来从至少包括第一SQ和第二SQ的集合选择第一SQ,
其中,第一权重至少部分地基于与第一QoS等级相关联的至少一个第一命名空间(NS)的第一总存储容量,并且
其中,第二权重至少部分地基于与第二QoS等级相关联的至少一个第二NS的第二总存储容量。
声明50、公开的实施例包括根据声明49所述的存储装置中的主机接口层,其中,存储装置包括固态驱动器(SSD)。
声明51、公开的实施例包括根据声明49所述的存储装置中的主机接口层,其中,
第一命令队列与第一QoS等级相关联,并且
第二命令队列与第二QoS等级相关联。
声明52、公开的实施例包括根据声明51所述的存储装置中的主机接口层,还包括:QoS感知调度器,用于至少基于与第一QoS等级相关联的权重来从第一命令队列选择I/O请求。
声明53、公开的实施例包括根据声明52所述的存储装置中的主机接口层,还包括:用于将第一QoS等级映射到权重的表的存储。
声明54、公开的实施例包括根据声明49所述的存储装置中的主机接口层,还包括:用于将第一NS映射到第一QoS等级并且将第二NS映射到第二QoS等级的表的存储。
声明55、公开的实施例包括根据声明49所述的存储装置中的主机接口层,还包括:用于将第一总容量范围映射到第一权重并且将第二总容量范围映射到第二权重的表的存储。
声明56、公开的实施例包括根据声明49所述的存储装置中的主机接口层,其中,
第一权重至少部分地基于与第一QoS等级相关联的所述至少一个第一NS的第一总存储容量和由主机分派的第一优先级,并且
第二权重至少部分地基于与第二QoS等级相关联的所述至少一个第二NS的第二总存储容量和由主机分派的第二优先级。
声明57、公开的实施例包括根据声明56所述的存储装置中的主机接口层,还包括:用于将第一总容量范围和第一优先级映射到第一权重并且将第二总容量范围和第二优先级映射到第二权重的表的存储。
声明58、公开的实施例包括根据声明49所述的存储装置中的主机接口层,其中,第一权重和第二权重被动态地调整。
声明59、公开的实施例包括根据声明58所述的存储装置中的主机接口层,其中,第一权重和第二权重至少部分地基于第一NS被创建或第一NS被删除来计算。
声明60、公开的实施例包括根据声明49所述的存储装置中的主机接口层,其中,
第一命令队列包括第一读取队列和第一写入队列,并且
第二命令队列包括第二读取队列和第二写入队列。
声明61、公开的实施例包括根据声明49所述的存储装置中的主机接口层,还包括:写入缓冲器,用于存储将被写入存储装置的数据。
声明62、公开的实施例包括根据声明49所述的存储装置中的主机接口层,还包括:完成队列仲裁器,用于将对I/O请求的响应放置在完成队列中。
声明63、公开的实施例包括一种方法,所述方法包括:
至少部分地基于与第一服务质量(QoS)等级相关联的至少一个第一命名空间(NS)的第一总存储容量,来确定用于第一提交队列(SQ)的第一权重;
确定用于第二SQ的第二权重,第二SQ至少部分地基于与第二QoS等级相关联的至少一个第二NS的第二总存储容量;
至少部分地基于第一权重和第二权重来从第一SQ和第二SQ选择第一SQ;
在第一SQ中选择输入/输出(I/O)请求;
至少部分地基于用于I/O请求的第一QoS等级,从至少包括第一命令队列和第二命令队列的集合选择第一命令队列;以及
至少部分地基于用于I/O请求的第一QoS等级,将I/O请求放置在第一命令队列中。
声明64、公开的实施例包括根据声明63所述的方法,其中,所述方法在存储装置中的主机接口层中被实现。
声明65、公开的实施例包括根据声明64所述的方法,其中,存储装置包括固态驱动器(SSD)。
声明66、公开的实施例包括根据声明63所述的方法,其中,
确定第一权重的步骤包括:将第一总存储容量映射到第一权重,并且
确定第二权重的步骤包括:将第二总存储容量映射到第二权重。
声明67、公开的实施例包括根据声明66所述的方法,其中,
将第一总存储容量映射到第一权重的步骤包括:将第一总存储容量和由主机分派给所述至少一个第一NS的第一优先级映射到第一权重,并且
将第二总存储容量映射到第二权重的步骤包括:将第二总存储容量和由主机分派给所述至少一个第二NS的第二优先级映射到第二权重。
声明68、公开的实施例包括根据声明63所述的方法,其中,至少部分地基于第一权重和第二权重来选择第一SQ的步骤包括:至少部分地基于通过第一权重和第二权重确定的比例选择第一SQ。
声明69、公开的实施例包括根据声明63所述的方法,其中,
确定用于第一SQ的第一权重的步骤包括:当NS被创建或删除时,确定用于第一SQ的第一权重,并且
确定用于第二SQ的第二权重的步骤包括:当NS被创建或删除时,确定用于第二SQ的第二权重。
声明70、公开的实施例包括根据声明63所述的方法,其中,第一命令队列包括与第一QoS等级相关联的读取队列和与第一QoS等级相关联的写入队列。
声明71、公开的实施例包括根据声明63所述的方法,还包括:
至少部分地基于与第一QoS等级相关联的权重来从第一命令队列获取I/O请求;以及
将I/O请求发送到闪存转换层(FTL)。
声明72、公开的实施例包括根据声明63所述的方法,还包括:
接收I/O请求的结果;以及
将结果放置在完成队列中。
声明73、公开的实施例包括根据声明72所述的方法,其中,将结果放置在完成队列中的步骤包括:至少部分地基于第一QoS等级将结果放置在完成队列中。
声明74、公开的实施例包括一种物品,所述物品包括非暂时性存储介质,所述非暂时性存储介质具有存储在其上的指令,所述指令在由机器执行时导致:
至少部分地基于与第一服务质量(QoS)等级相关联的至少一个第一命名空间(NS)的第一总存储容量,来确定用于第一提交队列(SQ)的第一权重;
确定用于第二SQ的第二权重,第二SQ至少部分地基于与第二QoS等级相关联的至少一个第二NS的第二总存储容量;
至少部分地基于第一权重和第二权重来从第一SQ和第二SQ选择第一SQ;
在第一SQ中选择输入/输出(I/O)请求;
至少部分地基于用于I/O请求的第一QoS等级,从至少包括第一命令队列和第二命令队列的集合选择第一命令队列;以及
至少部分地基于用于I/O请求的第一QoS等级,将I/O请求放置在第一命令队列中。
声明75、公开的实施例包括根据声明74所述的物品,其中,所述物品在存储装置中的主机接口层中被实现。
声明76、公开的实施例包括根据声明75所述的物品,其中,存储装置包括固态驱动器(SSD)。
声明77、公开的实施例包括根据声明74所述的物品,其中,
确定第一权重的步骤包括:将第一总存储容量映射到第一权重,并且
确定第二权重的步骤包括:将第二总存储容量映射到第二权重。
声明78、公开的实施例包括根据声明77所述的物品,其中,
将第一总存储容量映射到第一权重的步骤包括:将第一总存储容量和由主机分派给所述至少一个第一NS的第一优先级映射到第一权重,并且
将第二总存储容量映射到第二权重的步骤包括:将第二总存储容量和由主机分派给所述至少一个第二NS的第二优先级映射到第二权重。
声明79、公开的实施例包括根据声明74所述的物品,其中,至少部分地基于第一权重和第二权重来选择第一SQ的步骤包括:至少部分地基于通过第一权重和第二权重确定的比例地选择第一SQ。
声明80、公开的实施例包括根据声明74所述的物品,其中,
确定用于第一SQ的第一权重的步骤包括:当NS被创建或删除时,确定用于第一SQ的第一权重,并且
确定用于第二SQ的第二权重的步骤包括:当NS被创建或删除时,确定用于第二SQ的第二权重。
声明81、公开的实施例包括根据声明74所述的物品,其中,第一命令队列包括与第一QoS等级相关联的读取队列和与第一QoS等级相关联的写入队列。
声明82、公开的实施例包括根据声明74所述的物品,所述非暂时性存储介质具有存储在其上的指令,所述指令在由机器执行时导致:
至少部分地基于与第一QoS等级相关联的权重来从第一命令队列获取I/O请求;以及
将I/O请求发送到闪存转换层(FTL)。
声明83、公开的实施例包括根据声明74所述的物品,所述非暂时性存储介质具有存储在其上的指令,所述指令在由机器执行时导致:
接收I/O请求的结果;以及
将结果放置在完成队列中。
声明84、公开的实施例包括根据声明83所述的物品,其中,将结果放置在完成队列中的步骤包括:至少部分地基于第一QoS等级将结果放置在完成队列中。
声明85、公开的实施例包括一种存储装置,所述存储装置包括:
第一块和第二块;以及
分区管理器,用于将第一块分配给第一分区并且将第二块分配给第二分区,
其中,第一分区被配置为存储从主机接收的与第一服务质量(QoS)等级相关联的第一数据,并且第二分区被配置为存储从主机接收的与第二QoS等级相关联的第二数据。
声明86、公开的实施例包括根据声明85所述的存储装置,其中,第二QoS等级与第一QoS等级不同。
声明87、公开的实施例包括根据声明85所述的存储装置,还包括:第三块。
声明88、公开的实施例包括根据声明87所述的存储装置,其中,分区管理器被配置为:将第三块从空闲块池分配给第三分区,第三分区被配置为存储从主机接收的与第三QoS等级相关联的第三数据。
声明89、公开的实施例包括根据声明88所述的存储装置,其中,第三QoS等级与第一QoS等级和第二QoS等级两者不同。
声明90、公开的实施例包括根据声明87所述的存储装置,其中,分区管理器被配置为将第三块从空闲块池分配给第一分区。
声明91、公开的实施例包括根据声明90所述的存储装置,其中,分区管理器被配置为:至少部分地基于第一分区具有不足以存储从主机接收的附加的第一数据的空间,将第三块从空闲块池分配给第一分区。
声明92、公开的实施例包括根据声明90所述的存储装置,其中,分区管理器被配置为:至少部分地基于垃圾收集逻辑将来自擦除块的有效数据编程在第一分区中,将第三块从空闲块池分配给第一分区。
声明93、公开的实施例包括根据声明92所述的存储装置,其中,分区管理器被配置为:至少部分地基于垃圾收集逻辑将来自擦除块的有效数据编程在第一分区中并且第一分区具有不足以存储有效数据的空间,将第三块从空闲块池分配给第一分区。
声明94、公开的实施例包括根据声明90所述的存储装置,其中,分区管理器被配置为:至少部分地基于耗损均衡逻辑将来自擦除块的有效数据编程在第一分区中,将第三块从空闲块池分配给第一分区。
声明95、公开的实施例包括根据声明94所述的存储装置,其中,分区管理器被配置为:至少部分地基于耗损均衡逻辑将来自擦除块的有效数据编程在第一分区中并且第一分区具有不足以存储有效数据的空间,将第三块从空闲块池分配给第一分区。
声明96、公开的实施例包括根据声明87所述的存储装置,其中,
第一分区被配置为存储从主机接收的与第一QoS等级和第一命名空间(NS)相关联的第一数据,并且第二分区被配置为存储从主机接收的与第二QoS等级和第二NS相关联的第二数据;以及
分区管理器被配置为将第三块从空闲块池分配给第三分区,第三分区被配置为存储从主机接收的与第一QoS等级和第三NS相关联的第三数据。
声明97、公开的实施例包括根据声明85所述的存储装置,其中,分区管理器可操作为在第一块未存储与第一QoS等级相关联的有效数据时将第一块返回到空闲块池。
声明98、公开的实施例包括一种方法,所述方法包括:
接收用于将第一数据写入存储装置的存储中的写入命令,第一数据与第一服务质量(QoS)等级相关联;
识别存储装置的存储中的第一分区,第一分区存储与第一QoS等级相关联的第二数据;
识别第一分区中的用于存储第一数据的块;以及
将第一数据写入第一分区中的所述块,
其中,存储装置的存储中的第二分区存储与第二QoS等级相关联的第三数据。
声明99、公开的实施例包括根据声明98所述的方法,其中,
识别第一分区中的用于存储第一数据的块步骤包括:
确定第一分区中的第一块具有小于第一数据的大小的空闲空间,以及
将第二块从空闲块池分配给第一分区;并且
将第一数据写入第一分区中的所述块的步骤包括:将第一数据写入第一分区中的第二块。
声明100、公开的实施例包括根据声明98所述的方法,其中,接收用于将第一数据写入存储装置的存储中的写入命令的步骤包括:从垃圾收集逻辑接收用于将第一数据写入存储装置的存储中的写入命令。
声明101、公开的实施例包括根据声明98所述的方法,其中,接收用于将第一数据写入存储装置的存储中的写入命令的步骤包括:从耗损均衡逻辑接收用于将第一数据写入存储装置的存储中的写入命令。
声明102、公开的实施例包括根据声明98所述的方法,还包括:
识别第一分区中的第二块,第二块未存储有效数据;
从第一分区移除第二块;以及
将第二块返回到空闲块池。
声明103、公开的实施例包括根据声明102所述的方法,还包括:擦除第二块。
声明104、公开的实施例包括根据声明98所述的方法,其中,
存储装置的存储中的第一分区存储与第一QoS等级和第一命名空间(NS)相关联的第二数据;
存储装置的存储中的第二分区存储与第二QoS等级和第二NS相关联的第三数据;以及
存储装置的存储中的第三分区存储与第一QoS等级和第三NS相关联的第四数据。
声明105、公开的实施例包括一种物品,所述物品包括非暂时性存储介质,所述非暂时性存储介质具有存储在其上的指令,所述指令在由机器执行时导致:
接收用于将第一数据写入存储装置的存储中的写入命令,第一数据与第一服务质量(QoS)等级相关联;
识别存储装置的存储中的第一分区,第一分区存储与第一QoS等级相关联的第二数据;
识别第一分区中的用于存储第一数据的块;以及
将第一数据写入第一分区中的所述块,
其中,存储装置的存储中的第二分区存储与第二QoS等级相关联的第三数据。
声明106、公开的实施例包括根据声明105所述的物品,其中,
识别第一分区中的用于存储第一数据的块的步骤包括:
确定第一分区中的第一块具有小于第一数据的大小的空闲空间,以及
将第二块从空闲块池分配给第一分区;以及
将第一数据写入第一分区中的所述块的步骤包括:将第一数据写入第一分区中的第二块。
声明107、公开的实施例包括根据声明105所述的物品,其中,接收用于将第一数据写入存储装置的存储中的写入命令的步骤包括:从垃圾收集逻辑接收用于将第一数据写入存储装置的存储中的写入命令。
声明108、公开的实施例包括根据声明105所述的物品,其中,接收用于将第一数据写入存储装置的存储中的写入命令的步骤包括:从耗损均衡逻辑接收用于将第一数据写入存储装置的存储中的写入命令。
声明109、公开的实施例包括根据声明105所述的物品,所述非暂时性存储介质具有存储在其上的指令,所述指令在由机器执行时导致:
识别第一分区中的第二块,第二块未存储有效数据;
从第一分区移除第二块;以及
将第二块返回到空闲块池。
声明110、公开的实施例包括根据声明109所述的物品,所述非暂时性存储介质具有存储在其上的指令,所述指令在由机器执行时导致:擦除第二块。
声明111、公开的实施例包括根据声明105所述的物品,其中,
存储装置的存储中的第一分区存储与第一QoS等级和第一命名空间(NS)相关联的第二数据;
存储装置的存储中的第二分区存储与第二QoS等级和第二NS相关联的第三数据;以及
存储装置的存储中的第三分区存储与第一QoS等级和第三NS相关联的第四数据。
声明112、公开的实施例包括一种闪存转换层(FTL)核,所述FTL核包括:
服务质量(QoS)感知FTL,用于从来自至少包括第一命令队列和第二命令队列的集合的第一命令队列获取写入命令,写入命令包括逻辑块地址(LBA);
LBA至物理块地址(PBA)表,在LBA与PBA之间进行映射;以及
裸片队列管理器(DQM),用于与至少一个闪存芯片中的至少一个裸片通信。
声明113、公开的实施例包括根据声明112所述的FTL核,其中,DQM包括与第一QoS等级相关联的第一裸片队列和与第二QoS等级相关联的第二裸片队列。
声明114、公开的实施例包括根据声明113所述的FTL核,其中,DQM被配置为至少部分地基于PBA和第一QoS等级将写入命令放置在第一裸片队列中。
声明115、公开的实施例包括根据声明114所述的FTL核,其中,DQM还被配置为在写入命令中用PBA替换LBA。
声明116、公开的实施例包括根据声明112所述的FTL核,还包括:完成管理器,用于处理来自DQM的结果。
声明117、公开的实施例包括根据声明116所述的FTL核,其中,DQM包括:裸片完成队列,用于存储结果。
因此,鉴于在此描述的对实施例的广泛的各种置换,本具体实施方式和所附材料意在仅是说明性的,并且不应作为限制公开的范围。因此,公开所要求保护的是可进入所附权利要求及其等同物的范围和精神内的所有这样的修改。
Claims (20)
1.一种存储装置中的主机接口层,所述主机接口层包括:
仲裁器,用于从至少包括第一提交队列SQ和第二SQ的集合选择第一SQ,第一SQ与第一服务质量QoS等级相关联,第二SQ与第二QoS等级相关联;
命令获取器,用于从第一SQ获取输入/输出请求;以及
命令解析器,用于将输入/输出请求放置在来自至少包括第一命令队列和第二命令队列的集合的第一命令队列中,
其中,仲裁器被配置为:至少部分地基于与第一SQ相关联的第一权重和与第二SQ相关联的第二权重,来从至少包括第一SQ和第二SQ的集合选择第一SQ,
其中,第一权重至少部分地基于与第一QoS等级相关联的至少一个第一命名空间的第一总存储容量,并且
其中,第二权重至少部分地基于与第二QoS等级相关联的至少一个第二命名空间的第二总存储容量。
2.根据权利要求1所述的存储装置中的主机接口层,其中,
第一命令队列与第一QoS等级相关联,并且
第二命令队列与第二QoS等级相关联。
3.根据权利要求2所述的存储装置中的主机接口层,还包括:QoS感知调度器,用于至少基于与第一QoS等级相关联的权重来从第一命令队列选择输入/输出请求。
4.根据权利要求3所述的存储装置中的主机接口层,还包括:用于将第一QoS等级映射到与第一QoS等级相关联的权重的表的存储区域。
5.根据权利要求1所述的存储装置中的主机接口层,还包括:用于将第一总容量范围映射到第一权重并且将第二总容量范围映射到第二权重的表的存储区域。
6.根据权利要求1所述的存储装置中的主机接口层,其中,
第一权重至少部分地基于与第一QoS等级相关联的所述至少一个第一命名空间的第一总存储容量和由主机分派的第一优先级,并且
第二权重至少部分地基于与第二QoS等级相关联的所述至少一个第二命名空间的第二总存储容量和由主机分派的第二优先级。
7.根据权利要求6所述的存储装置中的主机接口层,还包括:用于将第一总容量范围和第一优先级映射到第一权重以及将第二总容量范围和第二优先级映射到第二权重的表的存储区域。
8.根据权利要求1所述的存储装置中的主机接口层,其中,
第一命令队列包括第一读取队列和第一写入队列,并且
第二命令队列包括第二读取队列和第二写入队列。
9.根据权利要求1至8中的任一项所述的存储装置中的主机接口层,还包括:写入缓冲器,用于存储将要写入存储装置的数据。
10.根据权利要求1至8中的任一项所述的存储装置中的主机接口层,还包括:完成队列仲裁器,用于将对输入/输出请求的响应放置在完成队列中。
11.一种处理请求的方法,包括:
至少部分地基于与第一服务质量QoS等级相关联的至少一个第一命名空间的第一总存储容量,来确定用于第一提交队列SQ的第一权重;
确定用于第二SQ的第二权重,用于第二SQ的第二权重至少部分地基于与第二QoS等级相关联的至少一个第二命名空间的第二总存储容量;
至少部分地基于第一权重和第二权重来从第一SQ和第二SQ选择第一SQ;
在第一SQ中选择输入/输出请求;
至少部分地基于用于输入/输出请求的第一QoS等级,从至少包括第一命令队列和第二命令队列的集合选择第一命令队列;以及
至少部分地基于用于输入/输出请求的第一QoS等级,将输入/输出请求放置在第一命令队列中。
12.根据权利要求11所述的方法,其中,所述方法在存储装置中的主机接口层中被实现。
13.根据权利要求11所述的方法,其中,
确定第一权重的步骤包括:将第一总存储容量映射到第一权重,并且
确定第二权重的步骤包括:将第二总存储容量映射到第二权重。
14.根据权利要求13所述的方法,其中,
将第一总存储容量映射到第一权重的步骤包括:将第一总存储容量和由主机分派给所述至少一个第一命名空间的第一优先级映射到第一权重,并且
将第二总存储容量映射到第二权重的步骤包括:将第二总存储容量和由主机分派给所述至少一个第二命名空间的第二优先级映射到第二权重。
15.根据权利要求11所述的方法,其中,
确定用于第一SQ的第一权重的步骤包括:当命名空间被创建或删除时,确定用于第一SQ的第一权重,并且
确定用于第二SQ的第二权重的步骤包括:当命名空间被创建或删除时,确定用于第二SQ的第二权重。
16.根据权利要求11至15中的任一项所述的方法,还包括:
至少部分地基于与第一QoS等级相关联的权重来从第一命令队列获取输入/输出请求;以及
将输入/输出请求发送到闪存转换层。
17.一种物品,包括非暂时性存储介质,所述非暂时性存储介质具有存储在其上的指令,所述指令在由机器执行时导致:
至少部分地基于与第一服务质量QoS等级相关联的至少一个第一命名空间的第一总存储容量,来确定用于第一提交队列SQ的第一权重;
确定用于第二SQ的第二权重,用于第二SQ的第二权重至少部分地基于与第二QoS等级相关联的至少一个第二命名空间的第二总存储容量;
至少部分地基于第一权重和第二权重来从第一SQ和第二SQ选择第一SQ;
在第一SQ中选择输入/输出请求;
至少部分地基于用于输入/输出请求的第一QoS等级,从至少包括第一命令队列和第二命令队列的集合选择第一命令队列;以及
至少部分地基于用于输入/输出请求的第一QoS等级,将输入/输出请求放置在第一命令队列中。
18.根据权利要求17所述的物品,其中,
确定第一权重的步骤包括:将第一总存储容量映射到第一权重,并且
确定第二权重的步骤包括:将第二总存储容量映射到第二权重。
19.根据权利要求18所述的物品,其中,
将第一总存储容量映射到第一权重的步骤包括:将第一总存储容量和由主机分派给所述至少一个第一命名空间的第一优先级映射到第一权重,并且
将第二总存储容量映射到第二权重的步骤包括:将第二总存储容量和由主机分派给所述至少一个第二命名空间的第二优先级映射到第二权重。
20.根据权利要求17所述的物品,其中,
确定用于第一SQ的第一权重的步骤包括:当命名空间被创建或删除时,确定用于第一SQ的第一权重,并且
确定用于第二SQ的第二权重的步骤包括:当命名空间被创建或删除时,确定用于第二SQ的第二权重。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063112150P | 2020-11-10 | 2020-11-10 | |
US202063112146P | 2020-11-10 | 2020-11-10 | |
US63/112,150 | 2020-11-10 | ||
US63/112,146 | 2020-11-10 | ||
US17/189,255 | 2021-03-01 | ||
US17/189,255 US11409439B2 (en) | 2020-11-10 | 2021-03-01 | Binding application to namespace (NS) to set to submission queue (SQ) and assigning performance service level agreement (SLA) and passing it to a storage device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114461133A true CN114461133A (zh) | 2022-05-10 |
CN114461133B CN114461133B (zh) | 2024-08-23 |
Family
ID=77864354
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111251989.XA Active CN114461133B (zh) | 2020-11-10 | 2021-10-25 | 存储装置中的主机接口层和处理请求的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11409439B2 (zh) |
EP (1) | EP3995969B1 (zh) |
KR (1) | KR20220063756A (zh) |
CN (1) | CN114461133B (zh) |
TW (1) | TW202219754A (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3965327A1 (en) * | 2016-10-28 | 2022-03-09 | Huawei Technologies Co., Ltd. | Switching from one ofdm mode having a certain numerology to another |
US11640270B2 (en) * | 2021-07-27 | 2023-05-02 | Beijing Tenafe Electronic Technology Co., Ltd. | Firmware-controlled and table-based conditioning for flexible storage controller |
US11934672B2 (en) * | 2021-08-26 | 2024-03-19 | International Business Machines Corporation | Cached workload management for a multi-tenant host |
JP2023130874A (ja) * | 2022-03-08 | 2023-09-21 | キオクシア株式会社 | メモリシステムおよび方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180024778A1 (en) * | 2016-07-22 | 2018-01-25 | Samsung Electronics Co., Ltd. | SYSTEM AND METHOD OF ORCHESTRATING EXECUTION OF COMMANDS IN A NON-VOLATILE MEMORY EXPRESS (NVMe) DEVICE |
US20180188975A1 (en) * | 2015-09-28 | 2018-07-05 | Sandisk Technologies Llc | Methods, systems and computer readable media for intelligent fetching of data storage device commands from submission queues |
US20180285294A1 (en) * | 2017-04-01 | 2018-10-04 | Anjaneya R. Chagam Reddy | Quality of service based handling of input/output requests method and apparatus |
WO2019061072A1 (en) * | 2017-09-27 | 2019-04-04 | Intel Corporation | COMPUTER PROGRAM PRODUCT, SYSTEM AND METHOD FOR MANAGING ACCESS TO STORAGE RESOURCES FROM MULTIPLE APPLICATIONS |
CN110088723A (zh) * | 2017-03-24 | 2019-08-02 | 西部数据技术公司 | 用于对提交队列和完成队列进行处理并且做出仲裁的系统和方法 |
CN110088725A (zh) * | 2017-03-24 | 2019-08-02 | 西部数据技术公司 | 用于对提交队列和完成队列进行处理并做出仲裁的系统和方法 |
CN110275774A (zh) * | 2018-03-13 | 2019-09-24 | 三星电子株式会社 | 在虚拟化环境中动态分配物理存储设备资源的机制 |
US20190303309A1 (en) * | 2018-03-27 | 2019-10-03 | Samsung Electronics Co., Ltd. | Methods and systems that manage fetching of commands by a controller from queues of a host |
US20200104056A1 (en) * | 2018-10-01 | 2020-04-02 | Western Digital Technologies, Inc. | System and method for performance-based multiple namespace resource allocation in a memory |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9880773B2 (en) | 2013-03-27 | 2018-01-30 | Vmware, Inc. | Non-homogeneous disk abstraction for data oriented applications |
US9542119B2 (en) | 2014-07-09 | 2017-01-10 | Toshiba Corporation | Solid-state mass storage media having data volumes with different service levels for different data types |
CN104536909B (zh) | 2014-12-09 | 2018-01-23 | 华为技术有限公司 | 一种存储管理方法,存储管理装置及存储设备 |
US10198192B2 (en) | 2015-03-31 | 2019-02-05 | Veritas Technologies Llc | Systems and methods for improving quality of service within hybrid storage systems |
US10866910B2 (en) * | 2015-09-28 | 2020-12-15 | Sandisk Technologies Llc | Systems, methods, and computer-readable media for managing instruction fetch in virtual computing environments |
US11467769B2 (en) * | 2015-09-28 | 2022-10-11 | Sandisk Technologies Llc | Managed fetching and execution of commands from submission queues |
US20180088978A1 (en) * | 2016-09-29 | 2018-03-29 | Intel Corporation | Techniques for Input/Output Access to Memory or Storage by a Virtual Machine or Container |
DE112016007538T5 (de) | 2016-12-23 | 2019-09-26 | Intel Corporation | Technologie zur realisierung eines binärverzweigten non-volatile-memory-express-treibers |
US10496541B2 (en) * | 2017-11-29 | 2019-12-03 | Samsung Electronics Co., Ltd. | Dynamic cache partition manager in heterogeneous virtualization cloud cache environment |
US10558376B2 (en) | 2018-06-28 | 2020-02-11 | Western Digital Technologies, Inc. | Storage system and method for namespace reservation in a multi-queue single-controller environment |
US10732897B2 (en) | 2018-07-03 | 2020-08-04 | Western Digital Technologies, Inc. | Quality of service based arbitrations optimized for enterprise solid state drives |
US11372580B2 (en) | 2018-08-07 | 2022-06-28 | Marvell Asia Pte, Ltd. | Enabling virtual functions on storage media |
US10635355B1 (en) * | 2018-11-13 | 2020-04-28 | Western Digital Technologies, Inc. | Bandwidth limiting in solid state drives |
JP7178916B2 (ja) | 2019-01-29 | 2022-11-28 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US20200089537A1 (en) | 2019-11-20 | 2020-03-19 | Intel Corporation | Apparatus and method for bandwidth allocation and quality of service management in a storage device shared by multiple tenants |
-
2021
- 2021-03-01 US US17/189,255 patent/US11409439B2/en active Active
- 2021-09-20 EP EP21197685.7A patent/EP3995969B1/en active Active
- 2021-10-01 TW TW110136728A patent/TW202219754A/zh unknown
- 2021-10-25 CN CN202111251989.XA patent/CN114461133B/zh active Active
- 2021-11-10 KR KR1020210154246A patent/KR20220063756A/ko unknown
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180188975A1 (en) * | 2015-09-28 | 2018-07-05 | Sandisk Technologies Llc | Methods, systems and computer readable media for intelligent fetching of data storage device commands from submission queues |
US20180024778A1 (en) * | 2016-07-22 | 2018-01-25 | Samsung Electronics Co., Ltd. | SYSTEM AND METHOD OF ORCHESTRATING EXECUTION OF COMMANDS IN A NON-VOLATILE MEMORY EXPRESS (NVMe) DEVICE |
CN110088723A (zh) * | 2017-03-24 | 2019-08-02 | 西部数据技术公司 | 用于对提交队列和完成队列进行处理并且做出仲裁的系统和方法 |
CN110088725A (zh) * | 2017-03-24 | 2019-08-02 | 西部数据技术公司 | 用于对提交队列和完成队列进行处理并做出仲裁的系统和方法 |
US20180285294A1 (en) * | 2017-04-01 | 2018-10-04 | Anjaneya R. Chagam Reddy | Quality of service based handling of input/output requests method and apparatus |
WO2019061072A1 (en) * | 2017-09-27 | 2019-04-04 | Intel Corporation | COMPUTER PROGRAM PRODUCT, SYSTEM AND METHOD FOR MANAGING ACCESS TO STORAGE RESOURCES FROM MULTIPLE APPLICATIONS |
CN110275774A (zh) * | 2018-03-13 | 2019-09-24 | 三星电子株式会社 | 在虚拟化环境中动态分配物理存储设备资源的机制 |
US20190303309A1 (en) * | 2018-03-27 | 2019-10-03 | Samsung Electronics Co., Ltd. | Methods and systems that manage fetching of commands by a controller from queues of a host |
US20200104056A1 (en) * | 2018-10-01 | 2020-04-02 | Western Digital Technologies, Inc. | System and method for performance-based multiple namespace resource allocation in a memory |
Also Published As
Publication number | Publication date |
---|---|
EP3995969A1 (en) | 2022-05-11 |
US20220147247A1 (en) | 2022-05-12 |
EP3995969B1 (en) | 2023-07-05 |
KR20220063756A (ko) | 2022-05-17 |
CN114461133B (zh) | 2024-08-23 |
TW202219754A (zh) | 2022-05-16 |
US11409439B2 (en) | 2022-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114461133B (zh) | 存储装置中的主机接口层和处理请求的方法 | |
US11216365B1 (en) | Maintenance of non-volaitle memory on selective namespaces | |
US9710377B1 (en) | Multi-array operation support and related devices, systems and software | |
US10474397B2 (en) | Unified indirection in a multi-device hybrid storage unit | |
EP3995970A1 (en) | System architecture providing end-to-end performance isolation for multi-tenant systems | |
US20200089537A1 (en) | Apparatus and method for bandwidth allocation and quality of service management in a storage device shared by multiple tenants | |
US9009397B1 (en) | Storage processor managing solid state disk array | |
CN107885456B (zh) | 减少io命令访问nvm的冲突 | |
US8966164B1 (en) | Storage processor managing NVME logically addressed solid state disk array | |
CN109656833B (zh) | 数据储存装置 | |
KR101579941B1 (ko) | 가상머신 i/o 관리 방법 및 장치 | |
US11307768B2 (en) | Namespace auto-routing data storage system | |
CN107885667B (zh) | 降低读命令处理延迟的方法与装置 | |
US11768628B2 (en) | Information processing apparatus | |
US11928360B2 (en) | Command slot management for memory devices | |
US20240012579A1 (en) | Systems, methods, and apparatus for data placement in a storage device | |
CN112988861A (zh) | 控制与键-值数据库相关联的输入/输出流的服务质量 | |
WO2019021415A1 (ja) | ストレージシステム及びデータ格納制御方法 |
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 |