掌桥专利:专业的专利平台
掌桥专利
首页

存储器命令的功能仲裁和服务质量

文献发布时间:2023-06-19 11:52:33


存储器命令的功能仲裁和服务质量

本申请案要求2019年12月30日申请的第62/954,852号美国临时申请案的优先权,其内容以引用的方式并入本文中。

技术领域

本公开的实施例大体上涉及存储器子系统,且更具体来说,涉及从功能提供存储器命令的服务质量。

背景技术

存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置和易失性存储器装置。一般来说,主机系统可利用存储器子系统来在存储器装置处存储数据和从存储器装置检索数据。

发明内容

在一个方面,本公开涉及一种从功能提供存储器命令的服务质量的系统,其包括:存储器装置;主机接口;处理装置,其耦合到所述存储器装置和所述主机接口,以进行以下操作:经由所述主机接口,从多个虚拟机接收多个命令;使所述多个命令中的每一者与相应功能关联,所述相应功能表示从其接收所述多个命令中的每一者的相应虚拟机;以及为每一相应功能设置关于所述存储器装置的资源的消耗的相应服务质量的相应定义;其中所述处理装置包括仲裁电路系统以根据所述定义在每功能基础上处置所述多个命令中的每一者。

在另一方面,本公开涉及一种用于从功能提供存储器命令的服务质量的方法,其包括:经由存储器装置的仲裁电路系统,为表示经由主机耦合到所述存储器装置的相应虚拟机的多个功能中的每一者配置相应的可配置服务质量定义;从第一虚拟机接收第一存储器存取请求;经由所述仲裁电路系统,根据第一对应服务质量定义,为所述第一存储器存取请求提供第一服务质量;从第二虚拟机接收第二存储器存取请求;以及经由所述仲裁电路系统,根据第二对应服务质量定义,为所述第二存储器存取请求提供第二服务质量,其中所述第二服务质量定义不同于所述第一服务质量定义。

在另一方面,本公开涉及一种用于从功能提供存储器命令的服务质量的系统,其包括:第一处理装置;存储器装置;第二处理装置,其耦合到所述存储器装置和所述第一处理装置,以进行以下操作:接收为表示相应虚拟机的多个功能中的每一者设置相应服务质量的定义的命令,其中所述相应服务质量的所述定义描述所述存储器装置的指派给所述多个功能的可消耗性资源;接收与所述多个功能相关联的多个命令;且其中所述第二处理装置包括仲裁电路系统以处置与所述多个功能相关联的所述多个命令中的每一者,前提是满足所述相应服务质量的对应定义,使得所述多个功能不会消耗比所述对应定义所表示的资源多的资源。

附图说明

根据下文给出的详细描述和本公开的各种实施例的附图,将更充分地理解本公开。

图1示出根据本公开的一些实施例的包含存储器子系统的实例计算系统。

图2示出根据本公开的一些实施例的包含存储器子系统的计算系统的实例。

图3示出根据本公开的一些实施例的包含仲裁电路系统的存储器子系统的实例。

图4示出根据本公开的一些实施例的仲裁电路系统的实例。

图5示出根据本公开的一些实施例的实例数据库。

图6是根据本公开的一些实施例的用于仲裁电路系统的实例方法的流程图。

图7是本公开的实施例可在其中操作的实例计算机系统的框图。

具体实施方式

本公开的方面是针对从功能提供存储器命令的服务质量的存储器子系统。存储器子系统可为存储装置、存储器模块,或存储装置和存储器模块的混合。结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用存储器子系统,所述存储器子系统包含一或多个存储器装置,例如存储数据的存储器装置。主机系统可提供数据以存储在存储器子系统处,且可请求从存储器子系统检索数据。

主机系统可将存取请求(例如,写入命令、读取命令)发送到存储器子系统,以便将数据存储在存储器子系统处的存储器装置上,且从存储器子系统上的存储器装置读取数据。如由主机请求指定,待读取或写入的数据在下文中被称作“主机数据”。主机请求可包含用于主机数据的逻辑地址信息(例如,逻辑块地址(LBA)、名称空间),其为主机系统与主机数据关联的位置。逻辑地址信息可以是用于主机数据的元数据的部分。

主机系统可实施利用虚拟化中间软件(例如管理程序)的虚拟化环境。主机系统所执行的常规管理程序可强制执行用于存取存储器子系统的一或多个策略。举例来说,虚拟机(VM)中的一或多者可经由管理程序存取存储器子系统。管理程序可实施所述策略来限制VM对存储器子系统的存取。然而,鉴于管理程序可在软件中实施(例如经由机器可执行指令实施),与所述策略在硬件中实施相比,管理程序可能较低效。

可为从VM到存储器子系统的输入/输出(I/O)业务旁路所述管理程序。然而,旁路管理程序对所述策略的强制执行可使VM中的任一者能够利用存储器子系统的所有可用硬件资源。使VM中的任一者能够无限制地利用可用硬件资源可阻止其它VM归因于硬件资源的不足而存取所述硬件资源。使VM中的任一者能够无限制地利用可用硬件资源可导致违反与其它VM相关联的水平服务协议(SLA)。使VM中的任一者能够无限制地利用可用硬件资源可使存储器子系统成为可限制主机系统的效率的瓶颈。

如本文中所使用,SLA是服务提供商与客户端之间的承诺。SLA定义由服务提供商提供的服务的若干方面。举例来说,SLA可定义提供给客户端的服务质量(QoS)。QoS的定义包含由服务提供商提供的服务的一或多个可测量水平的指定值或值范围。QoS的定义可包含可测量服务水平的低阈值和/或高阈值。可测量服务水平的实例包含可在给定时间周期内从一或多个存储器装置读取和写入到一或多个存储器装置的数据的量、每时间周期的I/O,以及依据每时间周期的通过量(例如MB)等。

本公开的方面解决以上和其它缺陷。为了改进对存储器子系统的存取的性能,可通过存储器子系统来强制执行对应于SLA的策略。VM可在无管理程序实施的策略强制执行机制的情况下向存储器子系统提供命令。举例来说,VM可经由硬件机构本机耦合到存储器子系统,例如借助于在主机系统上运行的管理程序的单根I/O虚拟化(SRIOV)。向VM提供对存储器子系统的存取,同时在存储器子系统中强制执行SLA,可向VM提供对存储器子系统的附近本机存取。

存储器子系统可直接从VM接收I/O业务。存储器子系统可利用功能来表示VM。如本文中所使用,功能是逻辑装置的逻辑和/或物理表示。举例来说,功能可为计算系统的VM中的一者的逻辑表示。外围组件互连高速(PCIe)功能可为可表示VM的功能的实例。

本文中的图遵循编号定则,其中第一数字对应于图号,且剩余的数字标识图式中的元件或组件。可通过使用类似数字来标识不同图式之间的类似元件或组件。举例来说,103可表示图1中的元件“03”,且类似元件在图2中可表示为203。可在没有连字符和额外数字或字母的情况下提及图内的类似元件。参见例如图2中的元件221-1,…,221-N。如应了解,可添加、交换和/或去除本文中的各种实施例中所示的元件,从而提供本公开的数个额外实施例。另外,如将了解,图中提供的元件的比例和相对标度意在示出本发明的某些实施例,且不应以限制性意义理解。

图1示出根据本公开的一些实施例的包含存储器子系统103的实例计算系统100。存储器子系统103可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置106)、一或多个非易失性存储器装置(例如,存储器装置105),或其组合。

存储器子系统103可为存储装置、存储器模块,或存储装置和存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器、安全数字(SD)卡,以及硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小外形DIMM(SO-DIMM),和各种类型的非易失性双列直插式存储器模块(NVDIMM)。

计算系统100可为计算装置,例如桌上型计算机、膝上型计算机、网络服务器、移动装置、交通工具(例如,飞机、无人机、火车、汽车或其它运输工具)、具有物联网(IoT)功能的装置、嵌入式计算机(例如,交通工具、工业设备或连网商业装置中包含的嵌入式计算机),或包含存储器和处理装置的此类计算装置。

计算系统100可包含与一或多个存储器子系统103耦合的主机系统102。在一些实施例中,主机系统102耦合到不同类型的存储器子系统103。图1示出耦合到一个存储器子系统103的主机系统102的实例。如本文中所使用,“耦合到”或“与耦合”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如不具有介入组件),无论有线还是无线,包含例如电连接、光学连接、磁性连接等连接。

主机系统120可包含处理器芯片组以及由处理器芯片组执行的软件堆叠。处理器芯片组可包含一或多个核心、一或多个高速缓冲存储器、存储器控制器(例如,NVDIMM控制器),以及存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统120使用存储器子系统110,例如,将数据写入到存储器子系统110以及从存储器子系统110读取数据。

主机系统102可经由物理主机接口耦合到存储器子系统103。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、PCIe接口、通用串行总线(USB)接口、光纤通道、串行附接SCSI(SAS)、小型计算机系统接口(SCSI)、双数据速率(DDR)存储器总线、双列直插式存储器模块(DIMM)接口(例如,支持双数据速率(DDR)的DIMM套接接口)、开放式NAND快闪接口(ONFI)、双数据速率(DDR)、低功率双数据速率(LPDDR),或任何其它接口。物理主机接口可用于在主机系统102与存储器子系统103之间传输数据。当存储器子系统103通过PCIe接口与主机系统102耦合时,主机系统102可进一步利用NVM快速(NVMe)接口来存取存储器组件(例如存储器装置105)。物理主机接口可提供接口,来在存储器子系统103与主机系统102之间传递控制、地址、数据和其它信号。图1示出存储器子系统103作为实例。一般来说,主机系统102可经由同一通信连接、多个单独通信连接和/或通信连接的组合来存取多个存储器子系统。

存储器装置105、106可包含不同类型的非易失性存储器装置105和/或易失性存储器装置106的任何组合。易失性存储器装置(例如存储器装置106)可为(但不限于)随机存取存储器(RAM),例如动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)。

非易失性存储器装置(例如,存储器装置105)的一些实例包含“与非”(NAND)型快闪存储器和就地写入存储器,例如三维交叉点(“3D交叉点”)存储器装置,其是非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列,基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器对比,交叉点非易失性存储器可进行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下,对非易失性存储器单元进行编程。NAND型快闪存储器包含(例如)二维NAND(2D NAND)和三维NAND(3D NAND)。

存储器装置105中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如单电平单元(SLC)可每单元存储一个位。其它类型的存储器单元,例如多电平单元(MLC)、三电平单元(TLC)、四电平单元(QLC)和五电平单元(PLC)可每单元存储多个位。在一些实施例中,存储器装置105、106中的每一个可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC或这些的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分,以及MLC部分、TLC部分、QLC部分或PLC部分。存储器装置105、106的存储器单元可分组为页,页可指用以存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,NAND),页可进行分组以形成块。

虽然描述例如3D交叉点非易失性存储器单元阵列和NAND型存储器(例如,2DNAND、3D NAND)和3D交叉点非易失性存储器单元阵列等非易失性存储器装置105,但存储器装置105可基于任何其它类型的非易失性存储器或存储装置,例如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫族化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、“或非”(NOR)快闪存储器,以及电可擦除可编程只读存储器(EEPROM)。

存储器子系统控制器104(或简称控制器104)可与存储器装置105通信以执行操作,例如在存储器装置105处读取数据、写入数据或擦除数据,以及其它这类操作。存储器子系统控制器104可包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器或其组合。硬件可包含具有专用(即,硬译码)逻辑的数字电路以执行本文所描述的操作。存储器子系统控制器104可为微控制器、专用逻辑电路(例如现场可编程门阵列(FPGA)、专用集成电路(ASIC)等),或其它合适的处理器。

存储器子系统控制器104可包含经配置以执行存储在本地存储器108中的指令的处理器107(例如,处理装置)。在所示出的实例中,存储器子系统控制器104的本地存储器108包含嵌入式存储器,其经配置以存储用于执行控制存储器子系统103的操作的各种进程、操作、逻辑流和例程的指令,包含处置存储器子系统103与主机系统102之间的通信。

在一些实施例中,本地存储器108可包含存储存储器指针、所获取数据等的存储器寄存器。本地存储器108还可包含用于存储例如微码的只读存储器(ROM)。虽然图1中的实例存储器子系统103已示出为包含存储器子系统控制器104,但在本公开的另一实施例中,存储器子系统103不包含存储器子系统控制器104,而是可依靠外部控制(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供)。

一般来说,存储器子系统控制器104可从主机系统102接收命令或操作,且可将命令或操作转换成指令或适当命令以实现对存储器装置105和/或存储器装置106的所要存取。存储器子系统控制器104可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作,以及与存储器装置105相关联的逻辑地址(例如,逻辑块地址(LBA)、名字空间)与物理地址(例如,物理块地址)之间的地址转译。存储器子系统控制器104还可包含主机接口电路系统,以经由物理主机接口与主机系统102通信。主机接口电路系统可将从主机系统接收的命令转换成命令指令以存取存储器装置105和/或存储器装置106,以及将与存储器装置105和/或存储器装置106相关联的响应转换成用于主机系统102的信息。

存储器子系统103还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统103可包含高速缓冲存储器或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器),其可从存储器子系统控制器104接收地址,且对地址进行解码以存取存储器装置105。

在一些实施例中,存储器子系统控制器104包含仲裁电路系统109的至少一部分。举例来说,存储器子系统控制器104可包含处理器107(处理装置),其经配置以执行存储在本地存储器108中的用于执行本文中所描述的操作的指令。在一些实施例中,仲裁电路系统109是主机系统102、应用程序或操作系统的一部分。

在一些实施例中,存储器装置105包含本地媒体控制器110,其结合存储器子系统控制器104操作以对存储器装置105的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器104)可在外部管理存储器装置105(例如,对存储器装置105执行媒体管理操作)。在一些实施例中,存储器装置105是受管理存储器装置,其为与在同一存储器装置封装内进行媒体管理的本地控制器(例如,本地控制器110)组合的原始存储器装置。受管理存储器装置的实例是受管理NAND(MNAND)装置。

存储器子系统控制器104还可包含仲裁电路系统109。如本文中所使用,仲裁电路系统109可包括ASIC,其经配置以执行本文所述的实例。图4提供仲裁电路系统109的实例。仲裁电路系统109可处置从VM接收到的命令,且将所述命令提供给处理器107。在一些实施例中,仲裁电路系统109可更改命令,对命令进行重新排序,或另外以高效分配对存储器装置105、106的带宽和存取的方式处置所述命令。VM可由主机系统102所执行的管理程序来管理。

仲裁电路系统109可提供从VM接收到的命令,使得对应于VM的SLA得以满足。在各种实例中,SLA可描述在给定时间周期内可从一或多个存储器装置105、106读取且写入到所述一或多个存储器装置的数据的量。举例来说,对应于VM的SLA可描述存储器装置105、106中的每一者可写入至多达从VM接收到的第一量的数据,且可读取至多达被提供给VM的第二量的数据。仲裁电路系统109可平衡由处理器107处理的命令,使得VM的SLA中的每一者得以满足。

仲裁电路系统109还可跟踪从对应VM接收到且由存储器子系统103接收的命令的数量。仲裁电路系统109可进一步跟踪每一VM对存储器装置105、106的存取的数量。仲裁电路系统109可进一步限制每一VM对存储器装置105、106的存取的数量。如果VM耗尽了其写入和/或读取的数据量,那么仲裁电路系统109可在一时间周期期间,制止将从VM接收到的额外命令提供给处理器107。

在各种实例中,SLA可依据每时间周期的I/O且依据每时间周期的通过量(例如MB),来定义最小和最大水平或服务。仲裁电路系统109可为运行时可编程的,且可在系统100处于运行中时,根据新要求来调整。

图2示出根据本公开的一些实施例的包含存储器子系统203的计算系统200的实例。计算系统200可包含主机202。主机202可执行管理程序222。管理程序222可管理VM 221-1到221-N,被称作VM 221。

如本文中所使用,VM 221可模仿计算系统。VM 221可模仿计算机架构,且可提供计算系统200的功能性。VM 221通常是指孤立的最终用户空间实例,其可在虚拟化环境内执行。除硬体虚拟化以外的其它技术可提供孤立的最终用户空间情形,还可被称作VM 221,例如容器。如本文中所使用,术语“VM”涵盖不同类型的VM的这些实例和组合,等等。在一些实施例中,VM使用由虚拟化软件(例如管理程序222、虚拟机监控器等)虚拟化的主机的资源,在主机上以其自身的客操作系统操作。VM 221中的每一者可存取存储器子系统203。

管理程序222可包含由主机202执行的软件。管理程序222可创建和/或代管VM221。管理程序222可管理由VM 221执行的客操作系统的执行。举例来说,管理程序222可接收来自VM 221的既定用于存储器子系统203的命令。由主机202执行的管理程序222可经由接口225将命令提供给存储器子系统203。可利用例如PCIe的总线标准来实施接口225。

管理程序222可将源自VM 221的命令提供给存储器子系统203,而不执行所述命令的额外处理。举例来说,管理程序222可通过将命令提供给存储器子系统203,来制止确定VM是否超过与SLA相关联的QoS的定义。此外,管理程序222可制止做出是否将来源于VM 221的命令提供给存储器子系统203的确定。

管理程序222可利用例如SRIOV的机制,将来自VM 221的命令提供给存储器子系统203。存储器子系统203可包括功能223-1到223-N、仲裁电路系统209和存储器装置224。存储器子系统203可经由接口225接收命令,且利用多个功能223-1到223-N,被称作功能223。功能223可包含虚拟功能(VF)和物理功能(PF)。功能223在图2中示出为虚拟功能。举例来说,功能223可为PCIe功能。接口225还可被称作物理功能。物理功能可由VM 221共享。虚拟功能223允许接口225表现为多个不同物理接口,其各自具有其自身的PCIe配置空间。

因此,虚拟功能(例如功能223)可允许从VM 221接收命令,同时允许所述命令与VM221相关联。举例来说,功能223-1可对应于VM 221-1,功能223-2可对应于VM 221-2,功能223-3可对应于VM 221-3,功能223-4可对应于VM 221-4,功能223-5可对应于VM 221-5,功能223-6可对应于VM 221-6,功能223-7可对应于VM 221-7,…,且功能223-N可对应于VM221-N。

仲裁电路系统209可接收来自功能223的命令。仲裁电路系统209可确定是将命令提供给存储器子系统203的处理器以供执行,还是制止将命令提供给存储器子系统203的处理器。响应于确定所述命令将提供给存储器子系统203的处理器,可执行所述命令,以将数据写入到存储器装置224和/或从存储器装置224读取数据。仲裁电路系统209可基于对应于VM 221中的每一者的SLA的QoS的定义,确定是否提供所述命令。

图3示出根据本公开的一些实施例的包含仲裁电路309的存储器子系统303的实例。存储器子系统303包含接口组构331、物理功能334、虚拟功能335-1到335-N、仲裁电路系统309、数据缓冲器332、处理器307和存储器装置324。虚拟功能335-1到335-N可称为虚拟功能335。

接口325可将命令提供给存储器装置303。可经由组构331来接收命令。组构331可为例如PCIe组构。组构331是实现主机与例如存储器子系统303的外围装置之间的通信的硬件组件。组构331可遵守基于直接存储器存取(DMA)的架构以及串行物理层和链路层。组构331可实现主机与存储器子系统之间经由接口325的通信。组构331实现信号通过接口325提供给虚拟功能335,而无协议转换。虚拟功能335可将表示命令的信号提供给仲裁电路系统309。如先前描述,仲裁电路系统109可包括ASIC,其经配置以执行本文所述的实例。仲裁电路系统309可基于对应于虚拟功能335的SLA的QoS的定义已被破坏还是由命令满足,来确定是否将经由虚拟功能335接收到的命令提供给处理器307。

仲裁电路系统309还可确定是否将对应于所述命令的数据提供给数据缓冲器332。举例来说,仲裁电路系统309可确定执行写入命令。响应于确定执行写入命令,仲裁电路系统309可将写入命令提供给处理器307,且可将待写入的数据提供给数据缓冲器332。处理器307可执行所述写入命令,以将存储在数据缓冲器332中的数据写入到存储器装置324。

仲裁电路系统309还可确定执行读取命令。响应于确定执行读取命令,仲裁电路系统309可将读取命令提供给处理器307。处理器307可响应于执行读取命令,从存储器装置324检索数据。读取的数据在经由仲裁电路系统309提供给主机之前,可存储在数据缓冲器332中。

图4示出根据本公开的一些实施例的仲裁电路系统409的实例。仲裁电路系统409包含低优先级功能441和高优先级功能442。仲裁电路系统409还包含定时器443、仲裁器444、配置数据库445和仲裁器446(例如优先级仲裁器)。仲裁电路系统409还可包含固件接口449。

仲裁电路系统409可经由低优先级功能441和高优先级功能442接收命令。图3的虚拟功能335和物理功能334可分成低优先级功能441和高优先级功能442。举例来说,虚拟功能335的第一部分可被定义为低优先级功能441,而虚拟功能335的第二部分可被定义为高优先级功能442。

如本文中所使用,高优先级功能442可提供管理性的命令。管理性命令可为来自VM的已表示为管理性的命令。举例来说,管理性VM可配置为特权帐户可从中执行管理性任务的安全平台。此类任务或帐户的实例包含帮助桌面帐户或原本任务是管理计算系统或存储器子系统的帐户。低优先级功能441可提供非管理性的命令和/或块数据命令。如本文中所使用,块数据命令可描述命令来存取存储在存储器子系统的存储器阵列中的数据。举例来说,低优先级功能441可提供来源于由VM托管而不是来自VM的OS的应用程序的命令。

与通过低优先级功能441提供的命令的处理相比,可以不同方式处理通过高优先级功能442提供的命令。通过高优先级功能442提供的命令可被给予比通过低优先级功能441提供的命令高的优先级。仲裁器446可在提供来自低优先级功能441的命令之前,将来自高优先级功能442的命令提供给存储器子系统的处理器。

仲裁器446可耦合到配置数据库445和仲裁器444。仲裁器444可接收对应于与低优先级功能441相关联的SLA的多个计数器和/或积分。如本文所使用,计数器、积分和积分计数器可互换使用。举例来说,仲裁器446可接收主机资源计数器、存储器装置资源计数器、写入积分计数器和/或读取积分计数器。进一步联合图5来描述主机资源计数器、存储器装置资源计数器、IO写入积分和IO读取积分。

在各种实例中,仲裁器446可确定由VM提供且与高优先级功能442相关联的命令是否满足对应SLA的QoS的定义。举例来说,如果经由高优先级功能中的一者接收到的命令满足对应SLA的QoS的定义,那么仲裁器446可将所述命令提供给存储器子系统的处理器。

举例来说,如果存储器子系统的用以处理所述命令的资源介于对应于所述资源的可测量服务水平的所定义的低阈值与高阈值之间,那么命令可满足QoS的定义。如果处理命令利用存储器子系统的所述资源,那么可将存储器子系统的资源可描述为可消耗的。举例来说,QoS可响应于接收到来自VM的读取命令,定义用于传送数据的时间周期内的最小带宽和最大带宽。举例来说,QoS可实现1MB/秒的读取最小值和/或10MB/秒的最大值。如果针对给定VM促成1MB/秒但不超过10MB/秒的累计带宽,那么命令可被给予优先级。在一些实例中,VM可将多个命令提供给存储器子系统,使得到其提供最新命令时,VM已在给定时间周期内读取了0.5MB。如果与不同VM相关联的不同功能已满足其最小读取带宽,那么可为最新命令提供高于具有相同优先级水平的其它命令(例如高优先级功能442)的优先级。然而,如果VM已经超出了一时间周期内的对应带宽,那么优先级仲裁器446可制止将对应于VM的最新命令发送到存储器子系统的处理器。

优先级仲裁器446可选择经由高优先级功能442和/或仲裁器444提供的命令。在选择经由仲裁器333提供的命令之前,可选择经由高优先级功能442提供的命令。可如经由高优先级功能442提供的命令由仲裁电路系统409接收那样选择所述命令。

可将从低优先级功能441接收到的命令提供给仲裁器444。仲裁器444可以轮循方式,选择经由低优先级功能441提供的命令。以轮循方式选择命令可包含在从所述功能中的任一者选择第二命令(例如若干第二命令)之前,从所述功能(例如低优先级功能441)中的每一者选择第一命令(例如若干第一命令),直到针对所述功能中的任一者在一时间周期内已满足最小阈值为止。在针对所述功能中的至少一者已满足最小阈值之后以轮循方式选择命令可包含在从在一时间周期内尚未满足其最小阈值的功能或已满足其最小阈值的功能中的任一者选择第二命令(例如若干第二命令)之前,从尚未满足其最小阈值的功能中的每一者选择第一命令(例如若干第一命令)。在针对所述功能中的至少一者已满足最小阈值之后以轮循方式选择命令可包含在为尚未满足其最大阈值的功能或已满足其最大阈值的功能中的任一者选择第二命令(例如若干第二命令)之前,为尚未满足其最大阈值的功能中的每一者选择第一命令(例如若干第一命令)。

功能441中的每一者可具有与其相关联的一或多个计数器。计数器450可包含存储器,其经配置以表示计数器、积分和/或权重,以及对存储器子系统和/或从低优先级功能441接收到的命令的方面(例如度量)的其它类型的描述。计数器450可存储从低优先级功能441接收到的命令的数量、所执行的命令的数量、所读取的数据量(例如读取带宽),和/或所存储的数据量(例如写入带宽)。计数器450中的每一者可耦合到定时器443,使得计数器、积分和/或权重中的每一者可在一时间周期期间复位。定时器443可耦合到用于跟踪持续时间的系统时钟线和/或不同机构。

计数器450可耦合到输入线447和输出线448。举例来说,I/O线447和448可耦合到图3所示的数据缓冲器332,且耦合到将存储器子系统103与图1所示的主机102耦合的接口。存储在计数器450中的计数、权重和/或积分可连同经由低优先级功能441接收到的命令提供给仲裁器444。由此,低优先级功能441可耦合到仲裁器444和计数器450。计数器441还可耦合到仲裁器444。

仲裁器444可耦合到配置数据库445。仲裁器444可从配置数据库445接收对应于主机资源计数器、存储器资源计数器、写入积分和/或读取积分的阈值。在接收到主机资源计数器、存储器资源计数器、写入积分、读取积分及其对应阈值后,仲裁器444可确定是否、何时和/或以什么次序将命令提供给仲裁器446。

仲裁器444可以轮循方式将命令提供给仲裁器446。轮循提供命令包含在提供来自优先级功能441中的任一者的第二命令之前,提供来自低优先级功能441中的每一者的第一命令。在提供来自针对计数器450中的任一者已达到最小阈值的低优先级功能441的命令之前,仲裁器444可提供来自针对计数器450中的任一者尚未达到最小阈值的低优先级功能441中的每一者的命令。在提供来自针对计数器450中的任一者已达到最大阈值的低优先级功能441中的任一者的命令之前,仲裁器444可提供来自针对计数器450中的任一者已达到最小阈值的低优先级功能441中的每一者的命令。

在各种实例中,仲裁器444可更新计数器450。举例来说,每当仲裁器444将经由低优先级功能441中的一者接收到的命令发送到优先级仲裁器446时,仲裁器就可更新对应于低优先级功能441中的一者的存储器资源计数器。定时器443可包含经配置以在给定时间周期内使计数器450复位的电路系统。举例来说,如果与低优先级功能441中的一者相关联的VM用来读取数据的带宽在第一时间周期内是5MB,那么在进入下一时间周期后,定时器443可即刻使计数器450复位,使得如果计数器递增,那么VM所利用的带宽就在第二时间周期内复位到0MB。举例来说,如果计数器递减,那么计数器450可复位到5MB。

在各种实例中,可利用固件接口449来更新配置数据库445。主机(例如图2中的主机202)可执行经配置以与固件接口449介接的软件。主机所执行的软件可由厂商根据主机来自定义。所述软件可利用虚拟化增强接口来向固件接口449提供可用以更新配置数据库445的指令和/或数据。

在各种情况下,可利用固件接口449来配置低优先级功能441和/或高优先级功能442。举例来说,可利用固件接口449将图3中的虚拟功能335指派给低优先级功能441和/或高优先级功能442。尽管本文仅示出两个等级的优先级,但可实施功能的两个以上等级的优先级。在一些实例中,可为每一层级的功能指派其自身的仲裁器,例如由仲裁器444和低优先级功能441所示。与功能的优先级等级相关联仲裁器中的每一者可将命令提供给集中式仲裁器,例如仲裁器446。在其它实例中,与功能的优先级等级相关联的仲裁器中的每一者可将命令提供给其它仲裁器,直到所述命令最后由集中式仲裁器(例如仲裁器446)接收为止。

在通过低优先级功能441和/或高优先级功能442接收命令之前,可填充配置数据库445。在已经由低优先级功能441和/或高优先级功能442接收到一或多个命令之后,可在运行时期间和/或实时更新配置数据库445。

作为仲裁电路系统409的功能的实例,可从低优先级功能441和高优先级功能接收命令。由低优先级功能接收到的命令可连同与低优先级功能441中的给定功能相关联的计数器450,提供给仲裁器444。仲裁器444可一次选择一个命令,以提供给仲裁器446。仲裁器446可接收仲裁器444所提供的命令,以及高优先级功能442所提供的命令。仲裁器446可选择命令,并将选定命令提供给存储器子系统的处理器以供执行。如果选定命令是读取命令,那么可经由输出线448将从存储器装置读取的数据提供给主机。如果选定命令是写入命令,那么可从主机接收待写入到存储器装置的数据,且可将其提供给存储器装置。可通过输入线447从主机接收待写入的数据,且可经由输入线447将其提供给存储器装置。可基于命令的接收、命令的执行,和/或写入到存储器装置或从存储器装置读取的数据的带宽来更新计数器450。计数器450可由仲裁器444和仲裁器446用于选择命令。仲裁器444和仲裁器446还可利用配置数据库445来选择命令。

图5示出根据本公开的一些实施例的实例数据库545。数据库545也可被称作配置数据库,例如图4中的配置数据库445。

数据库545可包括用于一或多个功能523(例如Fn0、Fn1、Fn2、…、Fn(n))的计数器。如本文中所使用,计数器可包含用以跟踪VM所提供的命令的属性的计数器、积分和/或任何其它类型的识别符。

功能523中的每一者可包含阈值及其对应计数器。功能523类似于图3中的功能335-1到335-N以及334。在各种实例中,可递增计数器,直到达到阈值为止。在其它实例中,可递减计数器,直到计数器达到例如零的阈值以及其它可能阈值为止。尽管图5中未示出,但多个阈值可与功能523中的每一者相关联。举例来说,第一阈值和第二阈值可与功能523中的每一者相关联。第一阈值和第二阈值可包含低阈值和高阈值。最低阈值和最高阈值可相对于对应计数器是递增还是递减。举例来说,如果计数器递增,那么最低阈值可小于最高阈值。如果计数器递减,那么最低阈值可大于最高阈值。

举例来说,如果计数器具有10MB/s的初始值,且计数递减,那么第一阈值可为2MB/s,且第二阈值可为0MB/s。2MB/s阈值可指示将传送的最小数据量是8MB/s。0MB/s阈值可指示将传送的最大数据量是10MB/s。如果计数器递增,且初始值是0MB/s,那么第一阈值可为8MB/s,且第二阈值可为10MB/s。8MB/s阈值可指示将传送的最小数据量是8MB/s。10MB/s阈值可指示将传送的最大数据量是10MB/s。

在其中计数器递减的实例中,可对计数器进行签名。经签名的计数器提供负平衡的可能性。计数器可在每一时间周期的开头,使初始值(例如主机资源计数器551-1的初始值、存储器资源计数器552-1的初始值、写入积分553-1的初始值和/或读取积分554-1的初始值)递增。如果使计数器的初始值递增使计数器变得大于零,那么可处理相关联VM所提供的命令。如果使计数器的初始值递增使得计数器变为小于零,那么可不处理从相关联的VM接收到的命令(例如至少直到对应计数器复位或以其它方式改变为止)。

功能523中的每一者包含主机资源计数器551-1和551-2、存储器资源计数器552-1和552-2、写入积分553-1和553-2,以及读取积分554-1和554-2。如本文所使用,积分553-1、553-2、554-1和554-2也可被称作计数器。计数器551-1、552-1、553-1和554-1可存储初始值。主机资源计数器551-1包含可从VM接收的命令的数量。存储器资源计数器552-1包含可由存储器子系统执行的命令的数量。写入积分553-1包含可利用源自VM的命令写入到存储器装置的数据的量。读取积分554-1包含可利用源自VM的命令从存储器装置读取的数据的量。写入积分553-1和553-2以及读取积分554-1和554-2可以每时间周期的数据量(例如MB/s)的形式提供。

计数器551-2、552-2、553-2和554-2可存储经更新的值(例如当前值)。计数器551-2、552-2、553-2和554-2可包括经签名的算术值(例如经签名的算术-MB/s)。可在一时间周期期间将初始值添加到当前值一次。举例来说,可将主机资源计数器551-1添加到主机资源计数器551-2,可将存储器资源计数器552-1添加到存储器资源计数器552-2,可将写入积分计数器553-1添加到写入积分553-2,且可将读取积分554-1添加到读取积分554-2,每一时间周期一次。

图6是根据本公开的一些实施例的对应于仲裁电路系统的实例方法680的流程图。方法680可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法680由图4的仲裁电路系统409执行。虽然以特定序列或次序来示出,但是除非另有指定,否则可修改进程的次序。因此,所示出的实施例应仅作为实例理解,且所示出的进程可以不同次序进行,且一些进程可并行进行。另外,在各种实施例中可省略一或多个进程。因此,在每一实施例中并非需要全部进程。其它过程流程是可能的。

在框681处,对于表示经由主机耦合到存储器装置的相应虚拟机的多个功能中的每一者,可经由存储器装置的仲裁电路系统来配置QoS的相应可配置定义。在682处,可从第一虚拟机接收第一存储器存取请求。可经由与第一虚拟机相关联的功能来接收第一存储器存取请求。在683处,可根据QoS的第一对应定义,经由仲裁电路系统提供针对第一存储器存取请求的第一QoS。可利用一或多个计数器来提供第一QoS。也就是说,所述一或多个计数器可表示用以定义第一QoS的可测量服务水平的下阈值和上阈值。在684处,可从第二虚拟机接收第二存储器存取请求。举例来说,可经由与第二虚拟机相关联的功能来接收第二存储器存取请求。在685处,可根据第二对应QoS定义,经由仲裁电路系统来提供针对第二存储器存取请求的第二QoS,其中所述第二QoS定义不同于所述第一QoS定义。第二QoS的定义可与第一QoS的定义的不同之处在于所述定义中所指定的可测量服务水平可不同。第二QoS也可不同于第一QoS,在于第二QoS与第一QoS之间共享的可测量服务水平的下阈值和上阈值可在第一QoS与第二QoS之间不同。

方法680可进一步包含将相应的可配置QoS定义存储在与存储器装置相关联的数据库中。方法680还可包含在运行时,经由仲裁电路系统重新配置相应的QoS定义。举例来说,可在仲裁电路系统已接收到存储器存取请求之后,重新配置相应的QoS定义。

方法680还可包含为第一存储器存取请求提供第一QoS,且为第二存储器存取请求提供第二QoS,而无管理存储器与第一虚拟机或第二虚拟机之间的业务的管理程序。举例来说,管理程序可提供第一QoS和第二QoS,而不管理第一QoS和/或第二QoS。管理可包含强制执行服务水平协议的QoS。可通过强制执行包含于QoS的定义中的可测量服务水平的下阈值和上阈值来强制执行QoS。仲裁电路系统可经配置以强制执行第一存储器存取请求的第一QoS。仲裁电路系统还可经配置以为第二存储器存取请求提供第二QoS。强制执行QoS可包含阻止VM使用比QoS所定义的带宽多的带宽。这与依靠管理程序来提供此类强制执行的一些常规方法形成对比。本公开的此类实施例可有利地为VM提供对存储器子系统的附近本机存取。

在一些实例中,处理装置可耦合到存储器装置,且可经配置以经由主机接口接收来自多个虚拟机的多个命令。所述处理装置还可经配置以将所述多个命令中的每一者与表示从其中接收所述多个命令中的每一者的相应虚拟机的相应功能关联。所述处理装置还可经配置以为关于存储器装置的资源的消耗的每一相应功能设置相应QoS的相应定义,其中所述处理装置包括仲裁电路系统,以根据所述定义在每功能基础上处置所述多个命令中的每一者。如本文中所使用,术语“在每功能基础上”描述了应用于命令的限制可针对对应功能来定义。

所述处理装置可进一步经配置以为低优先级功能设置相应QoS的定义。设置QoS的定义可包含存储用于存储器子系统的存储器(例如图4的数据库445)中的QoS中的可测量服务水平的下阈值和上阈值。高优先级功能和低优先级功能的QoS的定义可包含与对存储器的存取相关联的数个可测量服务水平中的任一者的QoS的不同特定定义。仲裁电路系统可包括第一仲裁器,以在将与低优先级功能相关联的命令提供给不同处理装置之前,将所述多个命令中与高优先级功能相关联的命令提供给不同处理装置。

第一仲裁器可经配置以便以接收所述多个命令中的那些命令的次序,将所述多个命令中与高优先级功能相关联的那些命令提供给不同处理装置。所述处理装置还可包括第二仲裁器,其耦合到第一仲裁器,以根据对低优先级功能的QoS的赤字轮循,将所述多个命令中与低优先级功能相关联的那些命令提供给第一仲裁器。如本文中所使用,轮循描述在处理来自所述功能中的任一者的第二命令之前,可处理来自所述功能中的每一者的第一命令。赤字轮循描述在处理来自所述功能中的任一者的第二命令之前,可处理来自所述功能中的每一者的第一命令,除非所述功能中的所述任一者已用完了其允许带宽。举例来说,响应于第一功能利用其带宽限制,在处理来自其它功能的第二命令之前,可不处理来自第一功能的第一命令。

仲裁电路系统可进一步包括数据库,以接收相应QoS的相应定义,包含所述多个命令中与低优先级功能相关联的那些命令的积分计数器的数量。仲裁电路系统还可包括定时器,以向第二仲裁器提供何时将补充积分计数器的数量的指示。第二仲裁器进一步经配置以根据输入/输出路径针对相应命令的执行的使用,使用于所述多个命令中与低优先级功能相关联的相应命令的积分计数器的数量打折扣。使积分计数器打折扣可表示存储器子系统的资源的消耗。举例来说,使积分计数器打折扣可表示存储器子系统的带宽的使用。由此,可使积分打折扣,直到没有更多积分或积分为负以反应对应于功能/VM的带宽已耗尽为止。

第二仲裁器可经进一步配置以在对应积分计数器等于或小于零的情况下,制止将所述多个命令中与低优先级功能相关联的那些命令提供给第一仲裁器。对于所述多个命令中与低优先级功能相关联的那些命令,QoS可进一步包括用于输入路径的积分计数器的第一数量和用于输出路径的积分计数器的第二数量。

第二仲裁器可经进一步配置以根据输入路径针对相应命令的执行的使用,使用于所述多个命令中与低优先级功能相关联的相应命令的积分计数器的第一数量打折扣。第二仲裁器还可经配置以根据输出路径针对相应命令的执行的使用,使用于相应命令的积分计数器的第二数量打折扣。

处理装置可经进一步配置以使块数据命令与低优先级功能关联,且使管理性命令与高优先级功能关联。如本文中所使用,管理性命令是用以对存储器子系统执行管理性功能的命令。举例来说,管理性命令可为激活存储器子系统的安全性特征的命令,以及可用以对存储器子系统执行管理性功能的命令的其它实例。处理装置还可从主机接口接收关于存储器装置的资源的消耗的每一相应功能的相应QoS的相应定义,且在数据库中设置所述相应定义。控制器可进一步从主机接口接收对相应定义的更新,且在数据库中更新所述相应定义。

图7示出计算机系统790的实例机器,在所述实例机器内,可执行用于致使机器实施本文中所论述的方法中的任何一或多种的指令集。在一些实施例中,计算机系统790可类似于图1的存储器子系统控制器104。在替代性实施例中,机器可连接(例如连网)到LAN、内联网、外联网和/或互联网中的其它机器。机器可作为对等(或分散式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器,在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。

所述机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或桥接器,或能够执行指定要由所述机器进行的动作的指令集(依序或以其它方式)的另一机器。另外,尽管说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行一(或多个)指令集以进行本文中所论述的方法中的任何一或多种。

实例计算机系统790包含处理装置792、主存储器794(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器798(例如,快闪存储器、静态随机存取存储器(SRAM)等)以及数据存储系统799,它们经由总线797彼此通信。

处理装置792,其可类似于图1中的处理器107,表示一或多个通用处理装置,例如微处理器、中央处理单元或类似者。更明确地说,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置792还可以是一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置792经配置以执行用于实施本文中所论述的操作和步骤的指令793。计算机系统790可进一步包含网络接口装置795以经由网络796通信。

数据存储系统799可包含机器可读存储媒体791(也称为计算机可读媒体),其上存储有一或多个指令集793或体现本文中所描述的方法或功能中的一或多种的软件。指令793还可在其由计算机系统790执行期间完全或至少部分地驻存在主存储器794内和/或处理装置792内,主存储器794和处理装置792也构成机器可读存储媒体。机器可读存储媒体791、数据存储系统799和/或主存储器794可对应于图1的存储器子系统103。

在一个实施例中,指令793包含实施对应于图4的仲裁电路系统409的功能性的指令。所述指令可包含与为存储器命令执行功能仲裁(例如图4中的仲裁电路系统409)相关联的命令指令789。尽管在实例实施例中将机器可读存储媒体791示出为单个媒体,但术语“机器可读存储媒体”应被认为包含存储一组或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集且致使机器执行本公开的方法中的任何一种或多种的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体以及磁性媒体。

已关于计算机存储器内的数据位的操作的算法和符号表示而呈现先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给本领域的其它技术人员的方式。算法在这里并且通常被认为是产生期望的结果的操作的自洽序列。操作是要求对物理量进行物理控制的操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操控的电或磁信号的形式。有时,主要出于通用的原因,已经证明将这些信号称为位、值、元件、符号、字符、术语、数目或类似物是方便的。

然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅仅是应用于这些量的方便标签。本公开可以指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)数量的数据为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。

本公开还涉及用于执行本文中的操作的设备。此设备可出于既定目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,所述计算机可读存储媒体例如但不限于各自耦合到计算机系统总线的包含软盘、光盘、CD-ROM和磁性光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁性卡或光学卡的磁盘类型或适合于存储电子指令的媒体类型。

本文中呈现的算法和显示器并非在本质上与特定计算机或其它设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或其可证明构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现多种这些系统的结构。另外,不参考特定编程语言来描述本公开。将了解,可使用多种编程语言来实施如本文中所描述的本公开的教示。

本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以进行根据本公开的过程的指令的机器可读介质。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器装置等。

在前述说明书中,已参考其特定实例实施例描述了本公开的实施例。应显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和图式。

相关技术
  • 存储器命令的功能仲裁和服务质量
  • 存储器子系统中用于来自多个物理功能的命令的仲裁器电路
技术分类

06120113084597