CN114546606A - 非易失性存储器存储模块及其操作方法 - Google Patents

非易失性存储器存储模块及其操作方法 Download PDF

Info

Publication number
CN114546606A
CN114546606A CN202111352543.6A CN202111352543A CN114546606A CN 114546606 A CN114546606 A CN 114546606A CN 202111352543 A CN202111352543 A CN 202111352543A CN 114546606 A CN114546606 A CN 114546606A
Authority
CN
China
Prior art keywords
command
commands
priority
storage module
host
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
Application number
CN202111352543.6A
Other languages
English (en)
Inventor
阿波哈扎甘·阿南丹
C.T.雅加迪什
休曼·普拉卡什·巴拉科瑞斯南
撒让亚·卡唯撒·塞尔瓦拉吉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN114546606A publication Critical patent/CN114546606A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

提供了非易失性存储器存储模块及其操作方法。非易失性存储器(NVM)存储模块的操作可包括从主机存储器接收与多个基于优先级的队列相关联的多个命令。根据与存储命令的队列相关联的优先级和命令的大小来评估接收到的命令。评估的命令被拆分成多个子命令,每个子命令具有根据评估确定的大小。至少基于每个子命令的大小针对评估的命令中的每个分配预定数量的硬件资源,从而使得基于分配的资源处理评估的命令。因此,可增强评估命令的服务质量(QoS)。

Description

非易失性存储器存储模块及其操作方法
技术领域
本发明涉及计算装置,具体地,涉及固态存储装置。
背景技术
存储模块(诸如,固态驱动器(SSD))通常使用通用模型来确定主机的优化的写入模式和读取模式。当主机行为与这些预期的模式匹配时,存储模块表现出性能、耐久性和功耗的最佳水平。能够使其存储算法适应实际的主机行为而不是预期的主机行为的存储模块具有改进的与主机的协同,从而根据需要产生更好的性能、耐久性和/或功耗。
非易失性存储器快速(NVMe)为这个主题提供了附加的维度。图1表示针对非易失性存储器快速(NVMe)的充当主机500的计算系统内的传统的NVMe规范。主机500包括CPU502、RAM 504和PCI快速控制器506。存储模块508包括非易失性存储器514、处理器510和易失性存储器512。在NVMe中,存储模块508可向主机500显示多个独立队列,从而允许主机一次将许多操作发送到单个存储模块508的不同队列。主机中的每个线程可潜在地将它自己的命令-序列发送到不同的队列,而不是优化的请求的单个流水线,这可能看起来与存储模块508预期(并且优化)的模式不匹配。
如图2中进一步所示,根据NVMe规范,NVMe控制器或处理器510根据选择的仲裁策略(arbitration-policy)从由主机保持的提交队列获取SQ条目(提交队列条目)。NVMe规范支持预定义的标准来执行仲裁。例如,在充当由仲裁和闪存转换层(FTL)采用的策略的一部分的轮询算法中,队列被给予相等的优先级,命令以循环方式或顺序地从每个队列被获取。根据执行仲裁的另一标准,诸如“加权轮询算法”充当由仲裁和闪存转换层(FTL)采用的策略的一部分,队列基于类别和权重被按优先级排列。分配给队列的权重可被定义为(高、中、低)。
加权轮询标准确保从任何高优先级队列获取的请求/命令的数量与其它较低优先级队列相比更多。出于这样的目的,来自所有类别的队列的命令的时间分片(time-sliced)操作已知将如图2中进一步描绘那样被执行。时间分片操作对应于将H1划分为用于沿着各个时隙(T0至T8)之中的不同时隙进行处理的H1-1、H1-2、H1-3。相同的基本原理适用于H2和L1的划分。
作为加权轮询标准的一部分,存储模块分配公共资源池以用于执行在主机系统(或通过由主机系统执行的虚拟机)处运行的任务(应用)。在时间分片操作中执行命令获取(command get),并且在时间分片操作的这样的执行期间,“命令优先级”不被考虑。例如,在单个时间分片操作期间,以与低优先级命令相同的方式处理高优先级命令。可理解,由于任务彼此不同,以这种方式分配的公共资源可能无法最佳地解决优先级指定。传统的队列处理可能无法最佳地解决与特定队列一起提交的时间关键应用需求。
换句话说,在NVMe装置的处理操作期间,硬件内部可用的总体资源对于来自任何优先级队列的命令是公共的。虽然可通过首先计算资源利用然后通过调度算法执行任务迁移来解决限制,但是讽刺地,这样的运用本身以占据大量处理而告终,从而证明是开销。因此,平衡负载以有效地利用公共资源可用性仍然是一个挑战。
此外,根据现有技术的有保证的输入-输出(IO)操作以保留固定量的资源为代价来实现,并且在操作时对流量特性具有较低或微不足道的认知。换句话说,相同类别的多个队列被同等地处理,而与应用需求无关。
发明内容
本发明涉及存储系统、装置和有关的操作的方法。在一些示例中,一种操作非易失性存储器(NVM)存储模块的方法包括:从主机接收多个命令,每个命令与相应的优先级相关联;针对每个接收到的命令,确定所述命令的相应优先级和所述命令的大小中的至少一个;针对接收到的命令中的至少一些,根据以下项中的至少一者将接收到的命令拆分成多个子命令:与所述命令相关联的相应优先级以及所述命令的大小;以及基于接收到的命令的相应子命令中的每个的大小,针对已经被拆分的接收到的命令中的每个分配硬件资源,从而使得基于分配的资源来处理接收到的命令。
在另一个实施例中,本主题涉及一种非易失性存储器(NVM)存储模块,所述非易失性存储器存储模块包括存储器和被配置为执行在此描述的方法的处理器。在一些示例中,存储系统包括主机和在此描述的存储模块。
与被提供来处理来自低优先级队列的命令的硬件相比,可在任何时间点(即,在分配的时隙期间)提供更多的硬件(HW)资源来处理来自高优先级队列的命令。因此,处理高优先级命令的延迟可被减少和/或更好地适合于QoS,从而导致获得增强的QoS。在一些示例中,可基于分配或保留固定的并且独立于传入流量(incoming traffic)的资源(例如,DMA)来实现I/O保证特征。
除了基于优先级的次序获取命令之外,一些示例还在执行获取的命令的同时提供优先级。可在基于命令的大小分配公共资源池的情况下在时间分片操作中处理命令的数据传送。
附图说明
当参照附图阅读下面的详细描述时,本发明的这些和其它特征、方面和优点将变得更好地理解,在附图中,贯穿附图,相同的字符表示相同的部件,其中:
图1示出现有技术的非易失性存储器快速(NVMe)规范;
图2示出现有技术的用于处理命令的时间分片(time-sliced)操作;
图3示出根据发明的实施例的方法步骤;
图4示出根据发明的实施例的系统;
图5示出根据发明的实施例的基于优先级的命令处理的示例操作;
图6示出根据发明的实施例的虚拟化环境中的图3的方法步骤的示例实施方式;
图7示出根据发明的实施例的表示图3的方法步骤的示例结果的统计;
图8示出根据发明的实施例的表示图3的方法步骤的示例结果的其它统计组;以及
图9示出根据发明的实施例的图3的方法步骤的示例实时操作。
具体实施方式
以下将参照附图详细描述本发明的实施例。
图3示出基于PCIe的非易失性存储器(NVM)存储模块的操作的方法。例如,图3的方法可由图4的NVMe存储模块400(诸如,由处理器404(例如,如由软件配置))实施。
作为初始设置的一部分,基于多个命令的数据特性和与提交队列相关联的权重(例如,优先级),在主机存储器内将多个命令分类(sort)到提交队列(SQ)中。多个命令按分类被存储在主机存储器内(诸如,被存储在命令已被指派到的相应提交队列中)。这样的分类包括基于顺序访问、不频繁访问的写入数据、临时写入数据、随机读取、优先读取以及优先写入中的一个或多个来识别主机存储器中的基于优先级的队列。因此,基于所述识别将多个命令分类到提交队列中,其中,每个提交队列被提供有相应的优先级(例如,高、中或低)。注意,各种提交队列的优先级可相同或不同(例如,若干提交队列被分配“高”优先级,其它提交队列被分配“中”优先级,而其它提交队列被分配“低”优先级)。
该方法包括(步骤102)从主机存储器接收被布置为多个基于优先级的队列的多个命令。接收的步骤(步骤102)包括从主机存储器获取存储在提交队列中的多个命令,并且在处理多个命令之前执行硬件资源的所述分配。
之后,(步骤104)根据与存储命令的提交队列相关联(或以其它方式与命令相关联)的优先级和命令的大小中的至少一个来评估多个命令中的至少一个。该方法还包括(步骤106)将所述至少一个评估的命令拆分(split)成多个子命令,每个子命令与根据评估确定的大小对应。拆分的步骤包括将与高优先级队列相关联的至少一个评估的命令拆分成基本上较小大小的子命令,从而避免用于服务于来自其它队列的小传送大小的命令的饥饿(starvation)。此外,在一个实施例中,拆分的步骤包括在从一个评估的命令移动到另一个评估的命令的同时改变子命令大小,作为关于多个评估的命令进行拆分的一部分。注意,如在此所使用的,命令的大小表示执行命令所需的硬件资源的量(而不是命令码的数据传送大小(例如,而不是“写入(WRITE)”的命令码))。命令的大小不需要被精确地计算,而是可被估计(诸如,通过识别作为执行命令的结果而将被传送的数据量)。作为示例,读取128KB数据的命令可被拆分成2个子命令以各自读取64KB(例如,关于如在此其它地方所讨论的高优先级提交队列中的命令),或者可被拆分成32个子命令以各自读取4KB(例如,关于如在此其它地方所讨论的低优先级提交队列中的读取命令)。
该方法还包括(步骤108)至少基于每个子命令的大小为每个评估的命令分配预定的硬件资源,从而使得能够基于分配的资源来处理评估的命令,以用于增强所述评估的命令的服务质量(QoS)。预定的硬件资源可以是存储模块400的硬件资源。在一个示例中,这里硬件资源可表示用于从主存储器移动数据或向主存储器移动数据的内部存储器缓冲器。对于从拆分高优先级(或相对较高优先级)提交队列中的命令而获得的子命令,分配的步骤包括基于观察到子命令的实质上较大的大小,将(与从来自低优先级(或相对较低优先级)提交队列的命令得到的子命令相比)实质上较高量的硬件资源分配给至少一个评估的命令,从而使得能够实质上较快地处理至少一个评估的命令。硬件资源的这样的分配可包括分配一个或多个直接存储器访问数据迁移包(packet)。
在步骤108的分配时,该方法还包括根据分配的预定的硬件资源来处理每个评估的命令,以根据提交队列的优先级和/或评估的命令的大小来实现有保证的服务质量。
图4示出根据本发明的实施例的包括NVM存储模块400的系统的详细内部构造。存储模块400包括存储器402和用于执行图3的方法步骤102至方法步骤108的处理器404。此外,存储器控制器406表示将主命令拆分成子命令的步骤发生的位置。更具体地,本地命令由控制器406接收,并且根据从其获取本地命令的优先级队列而被拆分成子命令。
同样,可存在将NVM存储模块400连接到主机的PCIe(外围组件互连快速)总线,PCIe总线促进存储模块400与主机计算系统之间的操作互连。存储模块400和主机中的一个或两者可通过对应的可拆卸连接器连接到PCIe总线,以可移除地彼此连接。在其它示例中,存储模块400还可与主机计算系统的芯片组集成并且嵌入在主机中。尽管总线和一个或多个可移除连接器可提供由外围连接器接口(PCI)定义的接口以连接存储模块400和主机,但是其它接口标准可用于总线和一个或多个可移除连接器(诸如,串行ATA(SATA)、并行ATA(IDE)和通用串行总线(USB))。
在一些示例中,存储模块400是固态驱动器。将被执行的多个命令源自(并从其接收)形成主机计算系统(主机)的一部分的操作系统,或者源自作为访客操作系统执行并通过服务器/管理程序操作的虚拟操作系统。在其它示例中,主机对应于客户端或服务器计算系统。
图5示出描绘根据本主题的操作的示例实施方式的实施方式。
如可理解的,处理评估的命令的步骤包括以由与每个子命令相关联的相应优先级确定的序列布置用于子命令的多个时间片(time-slice)。每个子命令的这样的处理根据子命令在序列内的位置来完成,其中,每个时间片对应于每个子命令的处理的持续时间。较低优先级命令的时间片使得能够在较高优先级命令的处理接近完成的时刻启动较低优先级命令的处理。
图5的部分(a)涉及分割成子命令的通用表示。图5的部分(b)和(c)考虑高队列或低队列中的固定64KB的传入(incoming)命令以及每次在高命令或低命令被服务时传送的资源和数据量的相应分配。在一个示例中,高命令表示在64KB的给定时隙中被服务以由数据传送引擎处理的命令。低命令表示在4KB的给定时隙中被服务以由数据传送引擎处理的命令。
在涉及(从主机接收的)“命令”和由存储模块生成的所得“子命令”的示例的示例场景中,可设想突发读取场景。在突发读取操作中,可认为单个突发读取命令由内部子命令序列实现,其中,每个内部子命令对应于行的内部读取操作。
在涉及(从主机接收的)“命令”和由存储模块生成的所得“子命令”的示例的另一示例场景中,存储器控制器(406)可将来自主机的用于读取大块数据的命令转换成用于从各个存储器芯片读取的一系列读取命令。
在图5的部分(a)中描绘了处理或时间行程的示例调度,其中可看出,形成提交队列(SQ)的一部分的命令在时间分片操作中被执行。时间片(T0、T1、T2、……T8、……)可具有相同的持续时间,并且可以是彼此顺序的和紧邻的。在图5的部分(a)的示例中,高优先级SQ(提交队列)包含命令H1、H2、H3和H4,而低优先级SQ(提交队列)包含命令L1、L2、L3和L4。命令H1、H2、H3和H4以及命令L1、L2、L3和L4可由存储模块从外部源(例如,主机)接收(例如,对于每个提交队列SQ,以图5中示出的次序被接收)。图5示出由存储模块通过拆分命令H1、H2、H3和H4以及命令L1、L2、L3和L4而生成的一些子命令。图5中示出的子命令包括分别分配给时间片T0至T8的H1-1、H1-2(未示出)、H2-1、H2-2、L1-2、H1-3、H2-3和L1-3。子命令可具有与形成子命令的命令相同的格式(例如,与命令H1、H2、H3、H4、L1、L2、L3以及L4中的相应一个相同)。例如,假设外部接收的命令H1是读取命令。在从外部接收的命令H1形成子命令H1-1、H1-2和H1-3时,相同的命令码(这里是用于读取的命令码)可被使用,而地址信息(例如,开始地址、结束地址或开始地址和长度)可从与命令H1一起接收的地址位置信息得到。因此,子命令可由硬件资源以与它们直接接收到命令H1相同的方式解码和操作。与现有技术相比,图5的实现方式描绘在处理命令的同时考虑优先级。如可看出,命令H1、H2、H3、H4、L1、L2、L3以及L4被划分成各种部分(例如,划分成子命令),之后以使得高优先级命令的划分部分中的大多数(诸如,H1-1、H1-2、H2-1、H2-2、H1-3、H2-3)被调度以在低优先级命令的划分部分中的大多数(即,L1-2、L1-3(以及从划分低优先级命令L1、L2、L3和L4获得的其它(未示出)子命令)之前进行处理的方式定时执行。
图5的部分(b)示出示例高优先级命令处理场景,其中,针对较高优先级队列(即,H1、H2、H3、H4)执行每时间片64K的数据传送(如TR1和TR2所示)。因此,在硬件分配的这个示例中,更多的硬件被分配给被指派给高优先级提交队列的命令的时间片,使得在一个时间片期间进行64KB的数据传送。因此,当在一个时间片期间执行高优先级子命令(例如,H1-1、H1-2等)时,较大的硬件分配提供较大的数据传送。
更具体地,图5的部分(b)示出每个高优先级命令在被处理时将被给予更多的时隙,而低优先级命令将被给予较少的时隙以进行其数据传送。时隙可与资源分配有关。在一个示例中,高优先级命令将被给予更多资源,因此当被处理时需要2个时隙。而低优先级命令被给予较少的资源,因此它只能在1个时隙持续时间内进行操作,并且需要多个稍后的时隙来完成低优先级请求。
图5的部分(c)示出示例低优先级命令处理场景,其中,针对示例较低优先级队列(即,L1、L2、L3、L4)执行每时间片4KB的数据传送(如TR1至TR32所示)。因此,在硬件分配的这个示例中,相对较少的硬件被分配给被指派给低优先级提交队列的命令的时间片,以提供每个时间片4KB的相对较低的数据传送。在这个示例中,对于64KB的总数据传送,对于高优先级提交队列命令,仅需要2个时间片来完成64KB数据传送,而对于低优先级提交队列命令,需要32个时间片来完成64KB数据传送。
注意,对图5的部分(b)和部分(c)中的“片1”、“片2”…“片n”的引用不一定与图5的部分(a)中示出的时间片T0至T8相关,而是仅表示高优先级提交队列(在部分(b)中)的操作片的相对次序和低优先级提交队列(部分(c))的操作片的相对次序,这取决于传入命令的数据传送量。
在一个实施方式中,与高优先级队列相比,上述对命令分片操作的考虑可能不相当于将用于低优先级队列的资源保持较长的时间。在每个时间片操作之后,可将资源释放到空闲池。在进行低优先级命令的下一时间片操作之前,可确保存在的新的高优先级命令优先于部分完成的低优先级命令以使用来自空闲池的资源。
总的来说,除了基于优先级的次序获取命令之外,本实施方式还意在在执行命令的同时提供优先级。基于命令的大小,在具有公共资源池的时间分片操作中处理命令的数据传送。通过在分配的时隙期间的任何时间点提供比来自低优先级队列的命令更多的硬件资源来处理来自高优先级队列的命令,可进一步减少高优先级命令的延迟并获得增强的QoS。
同样地,本实施方式可被扩展为涵盖这样的场景,其中存在多个高优先级队列,即属于相同类别但相对于不同应用(诸如,App1、App2、App3)的队列。在此,可基于应用需求(即,高优先级应用、实时应用、尽力而为应用)来决定优先级。总的来说,本主题实施方式可有效地处理其中存在相同优先级或相同类别的多个队列的场景。通过命令分片和基于分片命令的大小(即,基于子命令的大小)分配硬件资源,本主题的执行队列处理适当地考虑了当经由特定队列提交时时延敏感(time-critical)应用所需的时间。
本实施方式可利用计算系统领域中已知的任何标准/优化的输入输出(I/O)调度机制容易地操作。如可理解的,就其计算成本而言,负载调度算法是昂贵的,因为它涉及多个计算因素(例如,多个VM机器的配置的专用知识、虚拟机(VM)上的当前负载、完成I/O操作所花费的时间)。通过与任何标准/优化的输入输出(I/O)调度机制协同工作并将所述计算因素用作处理的一部分,通过图3的方法步骤管理的本主题能够使用标准的负载调度算法来发挥其巨大的优势。
图6示出根据本发明的示例性实施方式和操作。在这个示例中,在虚拟化环境中处理命令,其中,在虚拟化环境中可存在多个高优先级队列。基于应用需求选择特定队列可在访客操作系统的驱动器向存储模块发送VU命令或触发的帮助下实现。存储模块可实现在此公开的方法步骤,以实现访客系统的期望的资源分配。
步骤601表示从虚拟化环境中的任何主机提交关键应用请求。虚拟化环境中的特定主机中的提交命令队列条目本身可根据标准过程被优先化成各种队列(诸如,“低”、“中”和“高”)。如示例中所示,“高”额定队列(“high”rated queue)可涉及A3或应用3。
在步骤602,虚拟化环境中的每个主机发送VU命令(即,触发)以请求存储模块对“高”优先级额定队列进行特殊处理。
在步骤603,“管理程序”内的形成NVMe存储模块的一部分的固件(FW)处理VU命令并发起图3的方法步骤。
在步骤604,根据图3的方法步骤102,从虚拟函数1(VF1)的优先级队列获取优先级为“低”、“中”、“高”的各种队列。
在步骤605,根据图3的方法步骤104至108,“高”额定命令队列在具有更多资源或被分配DMA的情况下被服务。
图7示出根据发明的实施例的表示图3的方法步骤的示例结果的示例性带宽统计(以兆字节每秒(MBs/s)为单位)。图7的左侧示出通过针对三个时间片中的每个分配相同量的硬件资源而实现的带宽对于三个时间片中的每个保持相同,而图7的右侧示出通过在时间片之间分配不同量的硬件资源而实现的带宽在三个时间片之间变化。
图7的左侧描绘传统或现有技术场景,其中,尽管存在作为提交队列的不同优先级的命令队列,但是资源的分配以及因此分配的带宽对于链接到管理程序的所有虚拟机(VM1、VM2、VM3)保持相同。如可从左侧观察到的,带宽在三个请求方VM1、VM2和VM3之间被相等地划分。
另一方面,如图7右侧所示,明显的是,因为根据这个实施例由VF1引发的用于服务其“高”优先级队列的触发,所以图7右侧的VF1(如图6中所示)被分配比虚拟函数2(VF2)更多的资源。现在,由于VM1被给予高优先级,因此这个特定请求者VM1的带宽高,并且对VM2和VM3的其它2个请求被成比例地调整以匹配总带宽。
图8示出根据发明的实施例的表示图3的方法步骤的示例性结果的其它统计集合。更具体地,本附图中示出的实验结果涉及128KB读取命令。结果可由灵活输入/输出(FIO)测试器确定,该测试器示出执行由用户指定的特定类型的I/O动作的线程或进程的数量。如可理解的,FIO测试器的典型使用是写入与想要模拟的I/O负载匹配的作业文件。
如可理解的,每秒键输入/输出(KIOP)是存储系统(诸如,NVMe)的关键性能参数之一。其它参数是延迟(以μs或ms为单位)和吞吐量(MB/s)。从与“高”优先级命令队列对应的FIO 1的应用和针对“低”优先级命令队列的FIO 2的应用的模拟结果可明显发现由FIO 1确定的KIOP和吞吐量显著高于FIO 2。另一方面,发现由FIO 2确定的延迟显著高于FIO 1。
图9示出根据发明的实施例的图3的方法步骤的示例实时操作。
在所述操作期间,可基于主机存储器缓冲器内的队列的“优先级”来填充(populate)具有示例已知PRP/SGL地址的相同大小的命令。在一个示例中,PRP/SGL地址在不同优先级的队列之间不同。
除了基于优先级的次序获取命令之外,本主题还可在执行接收到的命令的同时(例如,在执行从外部源(诸如,主机)提供的命令的同时)提供优先级。基于命令的大小,在具有公共资源池的时间分片操作中处理命令的数据传送。另外,与来自低优先级队列的命令相比,通过在分配的时隙期间的任何时间点提供附加的硬件资源来处理来自高优先级队列的命令,本主题可减少高优先级命令的延迟,从而增强QoS。在一些示例中,在虚拟化环境中可存在多个高优先级队列,其中,至少在访客装置(即,VF1)的驱动程序向系统(例如,包含图3的方法步骤的主机和存储模块)发送VU命令或其它触发的帮助下实现对特定队列的选择以用于硬件分配。

Claims (17)

1.一种操作非易失性存储器存储模块的方法,所述方法包括:
从主机接收多个命令,每个命令与相应的优先级相关联;
针对每个接收到的命令,确定所述命令的相应优先级和所述命令的大小中的至少一者;
针对接收到的命令中的至少一些,根据以下项中的至少一个将接收到的命令拆分成多个子命令:
与所述命令相关联的相应优先级,以及所述命令的大小;以及
基于接收到的命令的相应子命令中的每个的大小,针对已经被拆分的接收到的命令中的每个分配硬件资源,从而使得基于分配的资源来处理接收到的命令。
2.根据权利要求1所述的方法,还包括:
将主机内的所述多个命令分类到提交队列中,提交队列具有相应的优先级;以及
根据所述分类将所述多个命令存储在主机存储器内。
3.根据权利要求2所述的方法,其中,所述分类的步骤包括:针对每个命令,基于以下项中的一个或多个将所述命令放置到提交队列中的选择的一个提交队列中:
与所述命令相关联的顺序访问、不频繁访问的写入数据、临时写入数据、随机读取、优先读取以及优先写入。
4.根据权利要求1所述的方法,其中,所述拆分的步骤包括:拆分接收到的所述多个命令中的第一命令和第二命令,其中,第一命令被确定为与第一优先级相关联并且被拆分成第一大小的多个第一子命令,第二命令被确定为第二优先级并且被拆分成第二大小的多个第二子命令,
其中,第一优先级高于第二优先级,
其中,第一大小大于第二大小,从而使得基于较高的第一优先级较快地处理较大大小的第一子命令。
5.根据权利要求4所述的方法,
其中,所述分配的步骤包括:基于对第一子命令的较大大小的识别,向第一命令分配比向第二命令更多的硬件资源,从而使得与第二命令相比较快地处理第一命令,并且
其中,硬件资源的所述分配包括分配一个或多个数据迁移包。
6.根据权利要求4所述的方法,其中,所述分配的步骤包括:针对第一子命令和第二子命令中的每个分配硬件资源,以在具有相等持续时间的多个相应时间片内完成第一子命令和第二子命令的任务。
7.根据权利要求2至权利要求6中的任意一项所述的方法,还包括:
根据分配的硬件资源处理接收的命令中的每个,以根据提交队列的优先级实现服务质量。
8.根据权利要求7所述的方法,
其中,从主机接收所述多个命令的步骤和分配硬件资源的步骤在处理接收到的命令中的每个之前被执行。
9.一种非易失性存储器存储模块,包括:
存储器;以及
处理器,被配置为:
从主机接收各自与相应优先级相关联的多个命令;
针对每个接收到的命令,确定所述命令的相应优先级和所述命令的大小中的至少一者;
针对接收到的命令中的至少一些,根据以下项中的至少一个将接收到的命令拆分成多个子命令:与所述命令相关联的相应优先级以及所述命令的大小;以及
基于接收到的命令的相应子命令中的每个的大小,针对已经被拆分的接收到的命令中的每个分配硬件资源,从而使得基于分配的资源来处理接收到的命令。
10.根据权利要求9所述的非易失性存储器存储模块,其中,处理器被配置为:接收作为被分类到不同优先级的提交队列中的所述多个命令。
11.根据权利要求10所述的非易失性存储器存储模块,其中,提交队列基于以下项中的一个或多个被分类:
顺序访问、不频繁访问的写入数据、临时写入数据、随机读取、优先读取以及优先写入。
12.根据权利要求9所述的非易失性存储器存储模块,其中,所述非易失性存储器存储模块包括:连接器,用于提供到主机的可移除连接,连接器由以下标准中的一个定义:
外围连接器接口PCI,
串行高级技术附件SATA,
并行高级技术附件,以及
通用串行总线USB。
13.根据权利要求9所述的非易失性存储器存储模块,其中,所述非易失性存储器存储模块被嵌入在主机中。
14.根据权利要求9所述的非易失性存储器存储模块,其中,所述非易失性存储器存储模块是固态驱动器。
15.根据权利要求9至权利要求14中的任意一项所述的非易失性存储器存储模块,其中,所述多个命令对应于由以下项中的至少一个提供的命令:
与主机对应的操作系统;以及
作为访客操作系统由主机执行的虚拟操作系统。
16.根据权利要求9至权利要求14中的任意一项所述的非易失性存储器存储模块,其中,主机包括客户端或服务器计算系统。
17.一种存储系统,包括:根据权利要求9所述的非易失性存储器存储模块、主机以及连接主机和所述非易失性存储器存储模块的总线。
CN202111352543.6A 2020-11-18 2021-11-16 非易失性存储器存储模块及其操作方法 Pending CN114546606A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN202041050189 2020-11-18
IN202041050189 2020-11-18

Publications (1)

Publication Number Publication Date
CN114546606A true CN114546606A (zh) 2022-05-27

Family

ID=81586630

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111352543.6A Pending CN114546606A (zh) 2020-11-18 2021-11-16 非易失性存储器存储模块及其操作方法

Country Status (2)

Country Link
US (1) US11579805B2 (zh)
CN (1) CN114546606A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115408178A (zh) * 2022-10-31 2022-11-29 北京登临科技有限公司 用于保护对片上资源的访问的方法、介质和电子设备

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11934672B2 (en) * 2021-08-26 2024-03-19 International Business Machines Corporation Cached workload management for a multi-tenant host

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8225022B2 (en) * 2006-08-08 2012-07-17 Dataram, Inc. Methods for eliminating intermediate bussing and bridging requirements between a solid state memory device with PCI controller and a main system bus
US9317204B2 (en) * 2013-11-14 2016-04-19 Sandisk Technologies Inc. System and method for I/O optimization in a multi-queued environment
US10353747B2 (en) * 2015-07-13 2019-07-16 Futurewei Technologies, Inc. Shared memory controller and method of using same
JP2020154391A (ja) * 2019-03-18 2020-09-24 富士ゼロックス株式会社 情報処理システムおよびプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115408178A (zh) * 2022-10-31 2022-11-29 北京登临科技有限公司 用于保护对片上资源的访问的方法、介质和电子设备

Also Published As

Publication number Publication date
US20220156001A1 (en) 2022-05-19
US11579805B2 (en) 2023-02-14

Similar Documents

Publication Publication Date Title
US8959249B1 (en) Cooperative cloud I/O scheduler
KR102450528B1 (ko) 애플리케이션을 인식하는 효율적인 io 스케줄러 시스템 및 방법
US9019826B2 (en) Hierarchical allocation of network bandwidth for quality of service
CN109558344B (zh) 一种适用于网络传输的dma传输方法及dma控制器
US11093352B2 (en) Fault management in NVMe systems
US9934062B2 (en) Technologies for dynamically allocating hardware acceleration units to process data packets
KR102309798B1 (ko) Sr-iov 기반 비휘발성 메모리 컨트롤러 및 그 비휘발성 메모리 컨트롤러에 의해 큐에 리소스를 동적 할당하는 방법
CN114546606A (zh) 非易失性存储器存储模块及其操作方法
KR20080073128A (ko) 디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및방법
US20150134884A1 (en) Method and system for communicating with non-volatile memory
US10146574B1 (en) Techniques for scheduling storage operations on virtual disks of a virtual machine
US10949368B2 (en) Input/output command rebalancing in a virtualized computer system
US9390033B2 (en) Method and system for communicating with non-volatile memory via multiple data paths
CN115237587A (zh) 用于基于多资源参数的i/o命令调度的系统和方法
JP2022509170A (ja) プロセッサにおける余裕認識(laxity-aware)型動的優先度変更
US11429314B2 (en) Storage device, storage system and operating method thereof
JP2022554137A (ja) 重み付きメモリアクセス動作タイプを使用したメモリデバイスのサービスの品質
JP2006195985A (ja) リソース利用率を制御する方法およびコンピュータシステム
CN112597080B (zh) 读请求控制装置及方法以及存储器控制器
US8694699B2 (en) Path selection for application commands
JP2022554136A (ja) メモリデバイス内の複数の機能のためのサービスの品質
CN113296957A (zh) 一种用于动态分配片上网络带宽的方法及装置
US11620083B2 (en) Method for implementing predictable latency mode feature in SSD, and non-volatile memory (NVM) based storage device
CN113076138B (zh) 一种NVMe命令处理方法、设备及介质
WO2015073608A1 (en) Method and system for communicating with non-volatile memory

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