首页> 中国专利> 存储器子系统中的直接存储器存取引擎的服务质量水平

存储器子系统中的直接存储器存取引擎的服务质量水平

摘要

本申请涉及存储器子系统中的直接存储器存取引擎的服务质量水平。与多个存储器装置以操作方式耦合的处理装置被配置成接收用于将多个数据扇区从源存储器区移动到目的地存储器区的直接存储器存取DMA命令,所述DMA命令包括优先级值。所述处理装置基于所述DMA命令的所述优先级值进一步将所述DMA命令分配到多个优先级队列中的优先级队列,每一优先级队列具有对应的一组优先级值。所述处理装置还确定所述多个优先级队列中的每一优先级队列的执行速率。所述处理装置接着根据每一优先级队列的所述对应执行速率而从所述多个优先级队列执行多个DMA命令。

著录项

  • 公开/公告号CN112835827A

    专利类型发明专利

  • 公开/公告日2021-05-25

    原文格式PDF

  • 申请/专利权人 美光科技公司;

    申请/专利号CN202011335457.X

  • 发明设计人 D·巴维什;L·伊森盖尔;

    申请日2020-11-25

  • 分类号G06F13/28(20060101);G06F13/30(20060101);

  • 代理机构11287 北京律盟知识产权代理有限责任公司;

  • 代理人王龙

  • 地址 美国爱达荷州

  • 入库时间 2023-06-19 11:05:16

说明书

技术领域

本公开大体上涉及存储器子系统,且更具体地说,涉及支持存储器子系统中的直接存储器存取引擎中的服务质量水平。

背景技术

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

发明内容

在一方面,本公开涉及一种系统,其包括:多个存储器装置;处理装置,其以操作方式与所述多个存储器装置耦合以执行以下操作,包括:接收指示多个数据扇区待从源存储器区移动到目的存储器区的直接存储器存取(DMA)命令,所述DMA命令包括优先级值;基于所述DMA命令的所述优先级值而将所述DMA命令分配到多个优先级队列中的优先级队列,其中每一优先级队列具有对应一组优先级值;确定所述多个优先级队列中的每一优先级队列的执行速率;以及根据每一优先级队列的所述对应执行速率而从所述多个优先级队列执行多个DMA命令。

在另一方面,本公开涉及一种方法,其包括:接收用于将多个数据扇区从源存储器区移动到目的存储器区的DMA命令,所述DMA命令包括优先级值;基于所述DMA命令的所述优先级值而将所述DMA命令分配到多个优先级队列中的优先级队列,其中每一优先级队列具有对应一组优先级值;确定所述多个优先级队列中的每一优先级队列的执行速率;以及根据每一优先级队列的所述对应执行速率而从所述多个优先级队列执行多个DMA命令。

在又一方面,本公开涉及一种包括指令的非暂时性计算机可读存储媒体,所述指令在由处理装置执行时使所述处理装置:接收用于将多个数据扇区从源存储器区移动到目的存储器区的DMA命令;从所述DMA命令检索扇区优先级指示符,其中所述扇区优先级指示符反映与所述DMA命令的所述多个数据扇区相关联的扇区优先级值;对于所述多个数据扇区的每一数据扇区,鉴于所述扇区优先级指示符而确定所述相应数据扇区的对应扇区优先级值;基于每一数据扇区的所述对应优先级值而从所述源存储器区读取所述多个数据扇区;以及基于每一数据扇区的所述对应优先级值而将所述多个数据扇区写入到所述目的存储器区。

附图说明

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

图1说明根据本公开的一些实施例的用于支持存储器子系统中的直接存储器存取(DMA)引擎中的服务质量水平的实例计算环境。

图2说明根据本公开的一些实施例的从存储器子系统中的DMA引擎的优先级队列执行DMA命令的实例。

图3是根据本公开的一些实施例的支持用于存储器子系统中的DMA命令执行的QoS水平的实例方法的流程图。

图4是说明根据本公开的一些实施例的存储器子系统中的DMA命令的字段的实例的框图。

图5是根据本公开的一些实施例的支持用于存储器子系统中的DMA命令内的数据扇区的QoS水平的实例方法的流程图。

图6是根据本公开的一些实施例的支持用于存储器子系统中的DMA命令和DMA命令内的数据扇区的QoS水平的实例方法的流程图。

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

具体实施方式

本公开的各方面涉及在处理存储器子系统中的直接存储器存取(DMA)命令时支持服务质量(QoS)水平。存储器子系统可为存储装置、存储器模块,或存储装置与存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含存储数据的一或多个存储器装置的存储器子系统。主机系统可提供数据以存储在存储器子系统处并且可请求从存储器子系统检索数据。

常规DMA引擎通过将数据从源地址空间移动到目的地地址空间来处理DMA命令,所述地址空间用于存储器子系统内的相同或不同存储器装置。DMA命令包含源地址、目的地地址和从源地址移动到目的地地址的多个字节。DMA引擎是被配置成执行从源存储器区到目的地存储器区的直接存储器传送的存储器子系统的基于硬件的组件。常规DMA引擎假定将相同水平的QoS提供到每一DMA命令。因此,按DMA命令到达DMA引擎的次序来处理DMA命令(例如,先来先服务)。类似地,将由于执行DMA命令而移动的数据扇区从源存储器地址空间读取并且同时进入目的地地址空间中,假设用于处理多个数据扇区的QoS水平相同。

服务器架构的演进和多核处理器的可用性已鼓励对服务器设计进行显著改变。最值得注意的是,运行单个操作系统(OS)的服务器已经被多租户服务器替代,其中许多“拥有者”(例如,在虚拟机(VM)、容器或微服务中运行的客操作系统)共享相同的物理服务器平台及其所有资源(包含存储器子系统),而不知晓彼此的存在。在许多情况下,每一VM可具有定义某一服务水平的服务水平协议(SLA),包含待提供的质量、可用性、职责等。在某些情况下,当预期每一VM接收相同水平的服务质量(QoS)时,符合存储器子系统的SLA可具有挑战性。类似地,存储器子系统的每一存储器装置可具有其自身的SLA,其可需要与存储器子系统的其它存储器装置不同的QoS水平。因此,用于将QoS水平引入到DMA命令且处理每一DMA命令内的数据扇区的解决方案可为合乎需要的,以便改进以高水平QoS处理来自存储器装置或VM的DMA命令的时延。

本公开的各方面通过具有提供机制使得DMA命令以及DMA命令内的数据扇区可在不同服务质量(QoS)水平被服务的存储器子系统来解决以上和其它不足,使得可满足DMA命令发起者的系统服务水平协议(SLA)的条件。在实施方案中,DMA命令发起者可将预定的一组优先级值中的一个分配到每一DMA命令。优先级值可确定发起DMA命令的存储器装置的QoS水平,使得高优先级值指示较高QoS水平。类似地,低优先级值指示发起DMA命令的装置或组件的较低QoS水平。

在一个实施例中,当DMA命令由DMA引擎接收时,DMA引擎可根据DMA命令的优先级值将DMA命令分配到优先级队列。在实施方案中,DMA引擎可具有用于存储在DMA引擎处接收的DMA命令以供执行的多个优先级队列。每一优先级队列可具有与优先级队列相关联的优先级值的范围,使得如果DMA命令优先级值处于与优先级队列相关联的优先级值的范围内,则DMA命令可被分配到优先级队列。在某些实施方案中,每一优先级队列可具有执行速率,确定在切换到DMA引擎的下一优先级队列之前可被选择用于从优先级队列执行的DMA命令数目。

当执行DMA命令时,DMA引擎可基于每一优先级队列的执行速率而检索用于从DMA引擎的多个优先级队列中的一个执行的DMA命令。在实施方案中,DMA引擎可利用加权轮循选择方案从多个优先级队列选择DMA命令。加权轮循选择允许为一个优先级队列分配比另一优先级队列更大的带宽量,使得每当访问具有高执行速率的优先级队列时可执行两个或更多个DMA命令的群组。例如,DMA引擎可在以二的执行速率切换到第二优先级队列之前以十的执行速率从第一优先级队列执行十个DMA命令,且接着在切换回到第一优先级队列之前从第二优先级队列执行两个DMA命令,等等。

在实施方案中,DMA引擎可修改优先级队列的执行速率以使得能够从优先级队列执行更多或更少的DMA命令。例如,如果归因于优先级队列的低执行速率而在某一时间段内尚未服务与低优先级值相关联的优先级队列,则DMA引擎可增加优先级队列的执行速率以允许从优先级队列执行更多DMA命令。增加执行速率使得从优先级队列执行更多DMA命令,从而阻止发起优先级队列中的DMA命令的存储器装置的过度时延。

此外,可将另一QoS水平分配到DMA命令内的数据扇区,使得可在相同DMA命令的其它数据扇区之前从源存储器区读取某些数据扇区并将某些数据扇区写入到目的地存储器区。在实施方案中,DMA命令发起者可将扇区优先级值分配到DMA命令的数据扇区的每一数据扇区。扇区优先级值可为可被分配到相同DMA命令的数据扇区的相对值,使得当另一数据扇区具有较低优先级值时,可在相同DMA命令的另一数据扇区之前从源存储器区读取具有较高扇区优先级值的数据扇区并将具有较高扇区优先级值的数据扇区写入到目的地存储器区。在实施方案中,DMA命令发起者可产生数据扇区优先级映图并将映图添加到DMA命令。在其它实施方案中,DMA命令可含有数据扇区的范围列表以及数据扇区的每一范围的对应扇区优先级值。当DMA引擎处理包含各种扇区优先级值的数据扇区的DMA命令时,DMA引擎可将具有最高优先级值的数据扇区从存储器源读取到DMA缓冲器中,接着将具有第二最高优先级值的数据扇区从存储器源读取到DMA缓冲器中,等等。当所有数据扇区都已被读取到DMA缓冲器中时,DMA引擎可根据相同标准将数据扇区写入到目的地存储器区中(例如,具有最高优先级值的数据扇区首先写入到目的地存储器,接着写入具有第二最高优先级值的数据扇区等等,直到所有数据扇区都写入到目的地存储器区)。

根据DMA命令发起者的QoS水平,支持本文中所描述的DMA引擎命令技术中的QoS水平允许存储器子系统比其它系统更快地执行某些DMA命令。此能力使得存储器子系统能够支持存储器装置的各种QoS水平,满足存储器装置的SLA要求。优先化执行DMA命令的能力进一步允许针对发起DMA命令的每一存储器装置的更可预测的QoS,这是因为具有高QoS的存储器装置无需等待来自具有较低QoS水平的存储器装置的DMA命令首先被执行。例如,来自存储器子系统的主机的DMA命令可具有高优先级值,而存储器子系统内部的DMA命令可具有低优先级值。这可引起改进来自主机系统的存储器存取请求的总体时延,以及向由主机系统发起的DMA命令提供更可预测的处理时间。此外,在某些情况下,DMA命令发起者可要求DMA命令的某些数据扇区比其它数据扇区更早地从源存储器空间移动。例如,可要求某些数据扇区尽可能快地从主存储器移动到高速缓冲存储器以支持快速的高速缓冲存储器处理时间。支持DMA命令的数据扇区当中的扇区优先级等级的本文所描述技术通过使得DMA引擎能够比DMA命令的其它数据扇区更早地处理标记的数据扇区而满足此要求。

图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或此类装置的组合的媒体。

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

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

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

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

主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行连接的SCSI(SAS)、双列直插式存储器模块(DIMM)接口(例如,支持双数据速率(DDR)的DIMM套接字接口)等。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。主机系统120可进一步利用NVM高速(NVMe)接口以在存储器子系统110通过PCIe接口耦合到主机系统120时存取存储器组件(例如,存储器装置130)。物理主机接口可提供接口用于在存储器子系统110与主机系统120之间传送控制、地址、数据以及其它信号。

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

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

存储器装置130中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如单层单元(SLC)可每单元存储一个位。其它类型的存储器单元,例如多层单元(MLC)、三层单元(TLC)和四层单元(QCC)可每单元存储多个位。在一些实施例中,存储器装置130中的每一个可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC或这些的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分,以及MLC部分、TLC部分或QLC部分。存储器装置130的存储器单元可分组为可指代用以存储数据的存储器装置的逻辑单元的页。在一些类型的存储器(例如,NAND)的情况下,可将页分组以形成块。

尽管描述了例如3D交叉点类型和NAND类型快闪存储器的非易失性存储器组件,但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它硫属化合物类存储器、铁电随机存取存储器(FeRAM)、磁性随机存取存储器(MRAM)、或非(NOR)快闪存储器、电可擦可编程只读存储器(EEPROM)。

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

存储器子系统控制器115可包含被配置成执行存储于本地存储器119中的指令的处理器(处理装置)117。在所说明的实例中,存储器子系统控制器115的本地存储器119包含嵌入式存储器,所述嵌入式存储器被配置成存储用于执行控制存储器子系统110的操作的各种过程、操作、逻辑流和例程的指令,包含处置存储器子系统110与主机系统120之间的通信。

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

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

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

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

存储器子系统110包含DMA引擎QoS组件113,所述DMA引擎QoS组件113可用于支持用于执行DMA命令且用于移动在DMA引擎QoS组件113处接收的DMA命令内的数据扇区的不同QoS水平。在实施方案中,DMA引擎可为存储器子系统控制器115的组件。在某些实施方案中,存储器装置130到140的DMA命令发起者可将优先级值分配到每一DMA命令。优先级值可确定发起DMA命令的存储器装置的QoS水平,使得高优先级值指示较高QoS水平。类似地,低优先级值指示发起DMA命令的存储器装置的较低QoS水平。例如,具有高优先级值的DMA命令可在具有较低优先级值的另一DMA命令之前被处理。

当DMA命令在DMA引擎处接收时,DMA引擎QoS组件113可从DMA命令检索优先级值且根据DMA命令的优先级值将DMA命令分配到优先级队列。在实施方案中,DMA引擎QoS组件113可具有用于存储在DMA引擎处接收的DMA命令以供执行的多个优先级队列。在实例中,每一优先级队列可具有与优先级队列相关联的优先级值的范围,使得如果DMA命令优先级值处于与优先级队列相关联的优先级值的范围内,则DMA命令可被分配到优先级队列。在另一实例中,优先级队列可具有与优先级队列相关联的单个优先级值,且如果DMA命令优先级值匹配于与优先级队列相关联的优先级值,则DMA命令可被分配到优先级队列。在实施方案中,每一优先级队列可具有执行速率,确定在切换到DMA引擎的下一优先级队列之前可被选择用于从优先级队列执行的DMA命令数目。例如,在具有两个优先级队列的系统中,与高优先级值相关联的一个优先级队列的执行速率可为十,而与低优先级值相关联的另一优先级队列的执行速率可为一。在此情况下,DMA引擎可从第一优先级队列执行十个DMA命令,随后从第二优先级队列执行一个DMA命令,随后从第一优先级队列执行十个DMA命令等等。

当执行DMA命令时,DMA引擎QoS组件113可基于每一优先级队列的执行速率而检索用于从DMA引擎的多个优先级队列中的一个执行的DMA命令。例如,DMA引擎可开始加权轮循选择方案以从多个优先级队列选择DMA命令。普遍选择方案包含轮循和加权轮循。在轮循选择中,DMA引擎按顺次序访问每一优先级队列,在每次访问时从所述队列执行单个DMA命令(尽管可跳过空的队列)。例如,如果存在两个优先级队列,则DMA引擎可从第一队列执行一个DMA命令,接着从第二队列执行一个DMA命令,接着再次从第一队列执行一个DMA命令,等等。通过加权轮循选择,可为一个优先级队列分配比另一优先级队列更大的带宽量,使得每当访问具有高执行速率的优先级队列时可执行两个或更多个DMA命令的群组。

在实施方案中,为了允许改进存储器子系统的总体时延,DMA引擎QoS组件113可修改优先级队列的执行速率以使得能够从优先级队列执行更多或更少的DMA命令。例如,如果与低优先级值相关联的优先级队列由于优先级队列的低执行速率而累积了许多DMA命令,则DMA引擎QoS组件113可增加优先级队列的执行速率。在此情况下,DMA引擎QoS组件113可由于优先级队列的较高执行速率而从优先级队列执行较多DMA命令,从而增加针对此优先级队列执行DMA命令并解决DMA命令累积问题的频率。

DMA引擎QoS组件113可进一步支持用于处理DMA命令内的数据扇区的另一QoS水平,使得可在相同DMA命令的其它数据扇区之前从源存储器区读取某些数据扇区并将某些数据扇区写入到目的地存储器区。数据扇区可指代可由单个存储器地址(例如,64字节)参考的已知固定大小的存储器块。在实施方案中,DMA命令发起者可将扇区优先级值分配到DMA命令的数据扇区的每一数据扇区。扇区优先级值可为可被分配到相同DMA命令的数据扇区的相对值,使得具有高扇区优先级值的数据扇区可在具有低扇区优先级值的另一数据扇区之前从源存储器区移动到目的地存储器区。在实施方案中,DMA命令发起者可产生数据扇区优先级映图并将映图添加到DMA命令。数据扇区优先级映图可为含有DMA命令的数据扇区的扇区优先级值的数据结构。优先级映图可被包含为DMA命令中的字段。在此情况下,DMA命令的每一数据扇区可具有优先级映图数据结构中的对应扇区优先级值。在其它实施方案中,DMA命令可含有数据扇区的范围列表以及数据扇区的每一范围的对应扇区优先级值。例如,对于用于将10个相邻数据扇区从源存储器区移动到目的地存储器区的DMA命令,所述DMA命令可含有指示数据扇区0到3各自的扇区优先级值为1、数据扇区4到6各自的扇区优先级值为2,以及数据扇区7到9各自的扇区优先级值为1的字段。在此情况下,由于数据扇区4、5和6各自具有相对于DMA命令的其它数据扇区的高优先级值,因此可在DMA命令的其它数据扇区之前从源存储器区读取数据扇区4、5和6并接着将数据扇区4、5和6写入到目的地存储器区。

当DMA引擎QoS组件113处理包含各种扇区优先级值的数据扇区的DMA命令时,DMA引擎QoS组件113可从DMA命令(例如,扇区优先级映图、扇区优先级范围等)检索扇区优先级数据结构。基于扇区优先级数据结构,DMA引擎QoS组件113可首先将具有最高优先级值的数据扇区从存储器源读取到DMA缓冲器中,接着将具有第二最高优先级值的数据扇区从存储器源读取到DMA缓冲器中,等等。当所有数据扇区都已被读取到DMA缓冲器中时,DMA引擎QoS组件113可以相同次序将数据扇区写入到目的地存储器区中(例如,首先写入具有最高优先级值的数据扇区,接着写入具有第二最高优先级值的数据扇区等等,直到所有数据扇区都写入到目的地存储器区)。

图2是说明根据本公开的一些实施例的用于从存储器子系统110中的DMA引擎的优先级队列执行DMA命令的实例方法200的图。在此实例中,DMA引擎210可具有针对具有高优先级值的DMA命令的优先级队列220和针对具有低优先级值的DMA命令的优先级队列230。优先级队列220的执行速率可为三,且优先级队列230的执行速率可为一。DMA命令221A到221C具有高优先级值且因此被分配到优先级队列220。DMA命令231A到231C具有低优先级值且因此被分配到优先级队列230。

在实施方案中,DMA引擎210可根据每一优先级队列的执行速率而从优先级队列220和230执行DMA命令。DMA引擎210可利用加权轮循选择机制从每一优先级队列选择DMA命令以供执行。例如,加权轮循机制可允许DMA引擎210在以二的执行速率切换到另一优先级队列之前以10的执行速率从优先级队列执行十个DMA命令,且接着在切换回到第一优先级队列之前从第二优先级队列执行两个DMA命令,等等。在此实例中,DMA引擎210可从优先级队列220执行执行速率为三的三个DMA命令,接着从优先级队列230执行执行速率为一的一个DMA命令,等等。在实施方案中,DMA引擎210可将每一DMA命令的数据扇区从源存储器区234读取到DMA缓冲器中,接着将DMA命令的数据扇区从DMA缓冲器写入到目的地存储器区264中,随后进行到执行下一DMA命令。DMA引擎210可跟踪先前执行的DMA命令,使得当选择下一DMA命令执行时可强制执行每一优先级队列的执行速率,如本文中更详细地解释。

在操作242A处,DMA引擎210可从可选自优先级队列220的三个DMA命令中执行第一DMA命令(例如,DMA命令221A)。DMA引擎可将DMA命令221A的数据扇区从源存储器区234读取到DMA缓冲器(未示出)中。在操作242B处,DMA引擎210可将DMA命令212A的数据扇区从DMA缓冲器写入到目的地存储器区264中,由此完成执行DMA命令221A。

在操作243A处,DMA引擎210可检测到待执行的下一DMA命令可选自优先级队列220,因为仅执行了一个DMA命令(出自分配用于优先级队列220的三个DMA命令中)。DMA引擎210接着可选择DMA命令221B以供执行,且可将DMA命令221B的数据扇区从源存储器区234读取到DMA缓冲器中。在操作243B处,DMA引擎210可将DMA命令221B的数据扇区从DMA缓冲器写入到目的地存储器区264中,由此完成执行DMA命令221B。

类似地,在操作244A处,DMA引擎210可检测到待执行的下一DMA命令仍可选自优先级队列220,因为仅从优先级队列220执行了两个DMA命令。DMA引擎210接着可选择DMA命令221C以供执行,且可将DMA命令221C的数据扇区从源存储器区234读取到DMA缓冲器中。在操作244B处,DMA引擎210可将DMA命令221C的数据扇区从DMA缓冲器写入到目的地存储器区264中,由此完成执行DMA命令221C。

在操作245A处,DMA引擎210可检测到分配给优先级队列220的所有三个DMA命令都已经执行,且接着可继续从优先级队列230选择待执行的下一DMA命令。DMA引擎210接着可选择DMA命令231A以供执行,且可将DMA命令231A的数据扇区从源存储器区234读取到DMA缓冲器中。在操作245B处,DMA引擎210可将DMA命令231A的数据扇区从DMA缓冲器写入到目的地存储器区264中,由此完成执行DMA命令231A。由于优先级队列230的执行速率仅为一,因此在DMA命令的下一执行循环期间,DMA引擎210可检测到下一DMA命令可选自优先级队列220。在实施方案中,如果具有高优先级DMA命令的优先级队列220没有DMA命令,则DMA引擎210可决定从具有下一最高优先级的另一优先级队列执行下一DMA命令,所述另一优先级队列具有任何DMA命令(例如,在此情况下为优先级队列230)。

图3是根据本公开的一些实施例的支持用于存储器子系统中的DMA命令执行的QoS水平的实例方法的流程图。方法300可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法300由图1的DMA引擎QoS组件113执行。虽然以特定顺序或次序展示,但除非另外指定,否则可修改所述过程的次序。因此,所说明的实施例应仅作为实例理解,且所说明的过程可以不同次序执行,并且一些过程可并行执行。另外,在各种实施例中可省略一或多个过程。因此,在每一实施例中并非需要全部过程。其它过程流程是可能的。

在操作310处,处理逻辑接收用于将数据扇区的群组从源存储器区移动到目的地存储器区的DMA命令。在实施方案中,DMA命令可从支持多个QoS水平的存储器子系统中的DMA命令发起者发送到DMA引擎。此外,DMA命令可包含指示DMA命令发起者的QoS水平的优先级值。优先级值可用于通过DMA引擎确定执行DMA命令的次序,如上文更详细地解释。

在操作315处,处理逻辑基于DMA命令的优先级值将DMA命令分配到DMA引擎的优先级队列的群组中的一个。在实施方案中,每一优先级队列可具有与其相关联的一组优先级值。DMA命令被分配到优先级队列,所述优先级队列具有匹配DMA命令的优先级值的优先级值。在其它实施方案中,优先级队列可与单个优先级值相关联,且具有等于优先级队列的优先级值的优先级值的DMA命令将被分配到优先级队列。

在操作320处,处理逻辑可确定DMA引擎的每一优先级队列的执行速率。优先级队列的执行速率确定在切换到DMA引擎的下一优先级队列之前可被选择用于从优先级队列执行的DMA命令数目。与高优先级值相关联的优先级队列可被分配到高执行速率(例如,可从优先级队列执行更多DMA命令)。另一方面,与低优先级值相关联的另一优先级队列可被分配到低执行速率(例如,可从优先级队列执行较少DMA命令)。

在操作330处,处理逻辑根据每一优先级队列的对应执行速率而从优先级队列执行DMA命令。在实施方案中,处理逻辑可开始加权轮循选择方案以基于优先级队列的执行速率而从多个优先级队列选择DMA命令,如上文更详细地解释。

图4是说明根据本公开的一些实施例的存储器子系统中的DMA命令的字段的实例的框图。DMA命令400可含有数据字段,包含源值440、目的地值460、数据扇区数目480和数据扇区优先级映图490。在实施方案中,DMA命令可发送到DMA引擎以将数据扇区从由源值440识别的存储器区移动到由目的地值460识别的另一存储器区。扇区数目字段480可指示由于DMA命令而待从由源值440识别的源存储器地址移动到由目的地值460识别的目的地存储器地址的数据扇区数目。数据扇区优先级映图490可包含待通过执行DMA命令而移动的每一数据扇区的扇区优先级值的指示。扇区优先级值可确定移动数据扇区的次序,使得可在相同DMA命令的其它数据扇区之前读取、写入或读取并写入某些数据扇区。

在实施方案中,数据扇区优先级映图490可为含有DMA命令400的数据扇区的扇区优先级值的数据结构。在此情况下,DMA命令的每一数据扇区可具有优先级映图数据结构中的对应扇区优先级值。例如,如果DMA命令400具有待移动的四个相邻数据扇区,则扇区优先级映图490可具有四个扇区优先级字段464到467,每一扇区优先级字段可含有用于DMA命令400的对应数据扇区的扇区优先级值。在此实例中,扇区优先级464可指示DMA命令400的第一数据扇区具有低扇区优先级值,扇区优先级465可指示DMA命令400的第二数据扇区具有低扇区优先级值,扇区优先级466可指示DMA命令400的第三数据扇区具有高扇区优先级值,且扇区优先级467可指示DMA命令400的第四数据扇区具有低扇区优先级值。在另一实例中,如果DMA命令的数据扇区是非相邻的,则数据扇区优先级映图490的每一扇区优先级字段还可包含对应于扇区优先级字段的扇区优先级值的数据扇区的标识符。

在一个实施方案中,DMA引擎QoS组件113可首先读取具有最高扇区优先级值的数据扇区,接着读取具有第二最高优先级值的数据扇区等等。在此情况下,DMA引擎QoS组件113可将第三数据扇区识别为具有最高扇区优先级值的数据扇区。DMA引擎QoS组件113接着可将第三数据扇区从由源值440识别的源存储器地址读取到DMA缓冲器中。DMA引擎QoS组件113接着可将具有低扇区优先级值的三个数据扇区从由源值440识别的源存储器地址读取到DMA缓冲器中。当DMA命令400的所有数据扇区都已从源存储器读取时,DMA引擎QoS组件113可将数据扇区从DMA缓冲器写入到由目的地值460识别的目的地存储器地址中。例如,DMA引擎QoS组件113可将第三数据扇区写入到目的地存储器地址中,接着将具有低扇区优先级值的三个数据扇区从DMA缓冲器写入到由目的地值460识别的目的地存储器地址中。

图5是根据本公开的一些实施例的支持用于存储器子系统中的DMA命令内的数据扇区的QoS水平的实例方法的流程图。方法500可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法500由图1的DMA引擎QoS组件113执行。虽然以特定顺序或次序展示,但除非另外指定,否则可修改所述过程的次序。因此,所说明的实施例应仅作为实例理解,且所说明的过程可以不同次序执行,并且一些过程可并行执行。另外,在各种实施例中可省略一或多个过程。因此,在每一实施例中并非需要全部过程。其它过程流程是可能的。

在操作510处,处理逻辑接收用于将数据扇区从源存储器地址移动到目的地存储器地址的DMA命令。在实施方案中,DMA命令可包含指示待由DMA命令移动的数据扇区的扇区优先级的数据结构,如本文中更详细地解释。

在操作520处,处理逻辑从DMA命令检索扇区优先级指示符。扇区优先级指示符使得处理逻辑能够确定DMA命令的数据扇区的扇区优先级值。在实施方案中,扇区优先级指示符可为含有用于DMA命令的每一数据扇区的扇区优先级值的数据扇区优先级映图。在其它实施方案中,扇区优先级指示符可为含有数据扇区的范围列表和数据扇区的每一范围的对应扇区优先级值的数据结构,如本文中更详细地解释。

在操作530处,处理逻辑可确定待由DMA命令移动的每一数据扇区的扇区优先级值。处理逻辑可使用扇区优先级指示符来进行此类确定。例如,通过解析与扇区优先级指示符中的优先级值相关联的数据扇区的范围并将优先级值分配到所述范围内的每一数据扇区。

在操作540处,处理逻辑基于每一数据扇区的对应优先级值从源存储器区读取DMA命令的数据扇区。在实施方案中,处理逻辑可将具有高优先级值的数据扇区从源存储器读取到DMA缓冲器中,接着将具有低优先级值的数据扇区从源存储器读取到DMA缓冲器中,如本文中详细解释。

在操作550处,处理逻辑基于每一数据扇区的对应优先级值将数据扇区写入到目的地存储器区。例如,处理逻辑可将具有高优先级值的数据扇区从DMA缓冲器写入到目的地存储器中,接着将具有低优先级值的数据扇区从DMA缓冲器写入到目的地存储器中。

图6是根据本公开的一些实施例的支持用于存储器子系统中的DMA命令和DMA命令内的数据扇区的QoS水平的实例方法的流程图。方法600可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法600由图1的DMA引擎QoS组件113执行。虽然以特定顺序或次序展示,但除非另外指定,否则可修改所述过程的次序。因此,所说明的实施例应仅作为实例理解,且所说明的过程可以不同次序执行,并且一些过程可并行执行。另外,在各种实施例中可省略一或多个过程。因此,在每一实施例中并非需要全部过程。其它过程流程是可能的。

在操作610处,处理逻辑从DMA引擎的优先级队列接收DMA命令以供处理。在实施方案中,基于匹配于与优先级队列相关联的另一优先级值的DMA命令的优先级值而将DMA命令分配到优先级队列。在实施方案中,可根据优先级队列的执行速率选择DMA命令以供执行,如上文更详细地解释。

在操作615处,处理逻辑从DMA命令检索指示DMA命令的数据扇区的扇区优先级值的数据(在本文中被称作扇区优先级指示符)。在实例中,扇区优先级指示符可为含有数据扇区的范围列表和数据扇区的每一范围的对应扇区优先级值的数据结构。例如,对于被发起以将十个相邻数据扇区从源存储器区移动到目的地存储器区的DMA命令,扇区优先级数据结构可含有指示数据扇区0到3各自的扇区优先级值为1、数据扇区4到6各自的扇区优先级值为2,以及数据扇区7到9各自的扇区优先级值为1的数据项。在此情况下,由于数据扇区4、5和6各自具有相对于DMA命令的其它数据扇区的高优先级值,因此可在DMA命令的其它数据扇区之前从源存储器区读取数据扇区4、5和6并接着将数据扇区4、5和6写入到目的地存储器区。

在操作635处,处理逻辑可确定DMA命令的任何数据扇区是否具有比相同DMA命令的其它数据扇区高的优先级值。例如,处理逻辑可解析数据扇区的范围和扇区优先级指示符的相关联优先级值以确定一些数据扇区是否具有比其它数据扇区高的优先级值。

在操作640处,当处理逻辑确定一些数据扇区具有比其它数据扇区高的优先级值时,处理逻辑继续将具有高优先级值的数据扇区从源存储器地址读取到DMA引擎的DMA缓冲器。读取高优先级数据扇区使得处理逻辑能够释放由那些数据扇区占据的源存储器区,使得其可比由较低优先级数据扇区占据的存储器区更早地进行擦除、再使用等。在操作650处,处理逻辑将DMA命令的剩余数据扇区从源存储器地址读取到DMA引擎的DMA缓冲器。

在操作660处,如果另一方面处理逻辑确定所有数据扇区都具有相同优先级值,则处理逻辑确定可在相同服务质量水平下处理所有数据扇区。处理逻辑接着继续将DMA命令的所有数据扇区从源存储器地址读取到DMA缓冲器。

图7说明计算机系统700的实例机器,在所述机器内可执行用于致使机器执行本文中所论述的方法中的任何一或多个的一组指令。在一些实施例中,计算机系统700可对应于主机系统(例如,图1的主机系统120),所述系统包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1的DMA引擎QoS组件113的操作)。在替代实施例中,机器可连接(例如,联网)到LAN、企业内部网、外联网和/或因特网中的其它机器。机器可作为对等(或分散式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。

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

实例计算机系统700包含处理装置702、主存储器704(例如,只读存储器(ROM)、快闪存储器、例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等的动态随机存取存储器(DRAM))、静态存储器706(例如,快闪存储器、静态随机存取存储器(SRAM)等),以及经由总线730彼此通信的数据存储系统718。

处理装置702表示一或多个通用处理装置,例如微处理器、中央处理单元等。更特定地说,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置702也可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置702被配置成执行用于执行本文中所论述的操作和步骤的指令726。计算机系统700可进一步包含网络接口装置708以经由网络720进行通信。

数据存储系统718可包含机器可读存储媒体724(也被称作计算机可读媒体),在所述机器可读存储媒体上存储一或多组指令726或体现本文中所描述的方法或功能中的任何一或多个的软件。指令726还可在由计算机系统700执行所述指令期间完全或至少部分地驻留在主存储器704内和/或处理装置702内,主存储器704和处理装置702还构成机器可读存储媒体。机器可读存储媒体724、数据存储系统718和/或主存储器704可对应于图1的存储器子系统110。

在一个实施例中,指令726包含用以实施对应于图1的DMA引擎QoS组件113的功能性的指令。尽管在实例实施例中将机器可读存储媒体724展示为单个媒体,但术语“机器可读存储媒体”应被认为包含存储所述一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码用于由机器执行的一组指令并且使得机器执行本公开的方法中的任何一或多种的任何媒体。因此,术语“机器可读存储媒体”应被认为包含但不限于固态存储器、光学媒体和磁性媒体。

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

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

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

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

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

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

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号