一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于准时(JIT)调度器的QOS业务类别等待时间模型的制作方法

2022-06-22 17:45:05 来源:中国专利 TAG:

用于准时(jit)调度器的qos业务类别等待时间模型
技术领域
1.本公开的实施例一般涉及存储器子系统,并且更具体地,涉及一种用于准时(jit)调度器的服务质量(qos)业务类别等待时间模型。


背景技术:

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


技术实现要素:

3.本公开实施例提供了一种系统,其包括:存储器装置;以及处理装置,其可操作地与所述存储器装置耦合,以执行包括以下各项的操作:接收指定存储器操作序列的工作负载简档,其中每个存储器操作与所述存储器操作的类型相关联;识别与所述存储器操作序列中的每个存储器操作相关联的业务类别;基于与所述存储器操作相关联的所述业务类别,在多个调度池中的调度池中对所述存储器操作序列中的每个存储器操作进行排队;基于服务质量(qos)策略从所述多个调度池中选择将在调度时间帧内被服务的一或多个存储器操作;以及基于等待时间简档确定所述一或多个存储器操作中的每个存储器操作的等待时间周期。
4.本公开的另一实施例提供了一种方法,其包括:接收指定存储器操作序列的工作负载简档,其中每个存储器操作与所述存储器操作的类型相关联;识别与所述存储器操作序列中的存储器操作相关联的业务类别;基于所述存储器操作的类型确定与所述存储器操作相关联的服务质量(qos)信用的数目;确定在调度时间帧内所述业务类别的可用qos信用的数目;以及响应于确定与所述存储器操作相关联的qos信用的所述数目小于所述业务类别的可用qos信用的所述数目,从所述可用qos信用中减去所述数目的qos信用以指示所述数目的qos信用不再可用于所述业务类别,以及指示所述存储器操作被服务。
5.本公开的又一实施例提供了一种非暂时性机器可读存储媒体,其包含指令,所述指令在由处理装置存取时使所述处理装置执行包括以下各项的一或多个操作:接收指定存储器操作序列的工作负载简档,其中每个存储器操作与所述存储器操作的类型相关联;识别与所述存储器操作序列中的每个存储器操作相关联的业务类别;基于与所述存储器操作相关联的所述业务类别,在多个调度池中的调度池中对所述存储器操作序列中的每个存储器操作进行排队;基于服务质量(qos)策略从所述多个调度池中选择将在调度时间帧内被服务的一或多个存储器操作;以及基于等待时间简档确定所述一或多个存储器操作中的每个存储器操作的等待时间周期。
附图说明
6.从以下给出的详细描述和从本公开的各种实施例的附图,将更全面地理解本公
开。然而,图式不应视为将本公开限制于具体实施例,而是仅用于解释和理解。
7.图1示出了根据一些实施例的包含存储器子系统的实例计算系统。
8.图2示出了根据一个实施例的准时(jit)调度组件的框图。
9.图3示出了根据实施例的调度池的二维阵列的实例。
10.图4示出了根据实施例的服务质量(qos)业务管理器的框图。
11.图5示出了根据实施例的存储器资源管理器的框图。
12.图6是根据实施例的调度存储器操作的实例方法的流程图。
13.图7是根据实施例的调度存储器操作的实例方法的流程图。
14.图8示出了根据一个实施例的等待时间模拟器的框图。
15.图9示出了根据实施例的等待时间简档。
16.图10示出了根据实施例的调度池的二维阵列的实例。
17.图11示出了根据实施例的服务质量(qos)业务管理器的框图。
18.图12是根据实施例的调度存储器操作的实例方法的流程图。
19.图13是根据实施例的调度存储器操作的实例方法的流程图。
20.图14是本公开的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
21.本公开的各方面针对一种用于存储器子系统的准时调度器。存储器子系统可以为存储装置、存储器模块,或存储装置和存储器模块的组合。下文结合图1描述存储装置和存储器模块的实例。通常,主机系统可利用包含一或多个组件的存储器子系统,例如存储数据的存储器装置。主机系统可提供数据以存储于存储器子系统处,且可请求从存储器子系统检索数据。
22.存储器子系统的存储器控制器可执行不同类型的存储器存取操作,例如主机起始的存储器存取操作和后台(存储器控制器起始的)存储器存取操作。后台操作可临时使存储器子系统不可用于主机系统。后台操作可包含媒体管理操作,例如损耗均衡操作、垃圾收集操作、检错和纠错码(ecc)操作和加密操作等。在其它情况下,对主机起始的存储器存取操作进行优先级排序可使后台存储器存取操作缺乏。在一些情况下,多个存储器操作可试图在重叠的时间段内存取相同的管芯,这可导致管芯争用。在其它情况下,多个存储器操作可将其输出引导到同一存储器缓冲器,这可导致存储器缓冲器处的队头阻塞。管芯争用和队头阻塞可有助于增加存储器命令等待时间。
23.本公开的实例存储器子系统通过实施jit调度组件来解决上述和其它缺陷,所述jit调度组件管理缓冲器分配、数据传输以及从前端(闪存转换层(ftl)固件)到存储器子系统后端(例如,存储器装置)的存储器操作提交。jit调度器可以通过光标来处理来自前端的请求。光标是指前端与后端之间的模块,其可用于跟踪待写入到nand装置的下一块或页的物理存储器地址。jit调度器可分配数据缓冲器并与主机系统通信以从主机系统检索数据。jit调度器可以使用多个调度池来确保关于与主机系统或后端资源的数据传输不发生阻塞。多个调度池可以通过将请求分类为一或多个业务类别来对请求进行优先级排序。业务分类是根据各种参数(例如业务的来源或类型)对业务进行分类的过程。一些业务类别包含主机读取、主机写入和后台操作。
24.实例存储器子系统可以包含服务质量(qos)业务管理器,所述qos业务管理器可以用于在任何给定调度时间帧内维持每个业务类别的可用qos信用的数目。qos信用是指用于qos计数机制的计数单位。例如,当存储器控制器对存储器操作进行处理时,可以使用来自对应业务类别的可用qos信用中的一或多个qos信用。qos信用可用作计数机制,以管理在任何给定调度时间帧内每个业务类别的未完成存储器操作的数目,而不缺乏较低优先级的业务类别。qos信用可表示存储器操作的时序、功率或热负载。jit调度器可以识别用于存储器操作的业务类别。jit调度器可以向qos业务管理器请求用于业务类别的qos信用。基于来自请求的响应(成功或失败),jit调度器可以确定存储器操作是否可以被发送到后端存储器装置,或者存储器操作是否应当保持在调度池中直到下一个可用调度时间帧。qos业务管理器通过确保在给定调度时间帧内将最小数目的每个业务类别发送到后端存储器装置而不缺乏较低优先级的业务类别来减少预期的主机命令等待时间。
25.实例存储器子系统可以包含后端资源管理器模块。jit调度器可以查询后端资源管理器以确定后端硬件资源(可并行硬件存储器资源)是否可用于在任何给定时间完成请求。可并行后端资源是指存储器控制器可以同时存取的存储器装置和/或处理单元。
26.用于存储器装置的存储器资源(或后端资源)可为可并行化nand单元,例如nand单元(例如nand管芯、nand平面、块或页),或存储器资源可为可并行化控制器专用资源,例如逻辑命令处理器(lcp)等。lcp可由存储器控制器实施以用于处理一或多个数据总线中的传入命令。举例来说,具有16个通道的nand装置可具有16个可用lcp,其中每一通道具有一个lcp。后端资源可以是硬件体系结构专用的。通过识别后端资源可用性,后端资源管理器可以通过减少存储器资源争用来改善最坏情况的主机命令等待时间。
27.希望知道提交给jit调度组件的各种工作负载在系统级性能上的影响。实例模拟器可以包含jit调度组件的jit调度器和qos业务管理器,以模拟不同工作负载的调度,其中工作负载包含传入命令序列。如下文进一步论述,模拟器可以模拟各种工作负载的各种请求的各种预期等待时间,以调谐qos业务管理器所使用的qos信用的各种默认值。
28.上文引用的方法和系统的各方面在下文中通过实例而非通过限制的方式进行详细描述。
29.图1示出了根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或此类的组合。
30.存储器子系统110可为存储装置、存储器模块,或存储装置和存储器模块的组合。存储装置的实例包含固态驱动器(ssd)、快闪驱动器、通用串行总线(usb)快闪驱动器、嵌入式多媒体控制器(emmc)驱动器、通用快闪存储(ufs)驱动器、安全数字(sd)卡和硬盘驱动器(hdd)。存储器模块的实例包含双列直插式存储器模块(dimm)、小型dimm(so-dimm),和各种类型的非易失性双列直插式存储器模块(nvdimm)。
31.计算系统100可以是计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、车辆(例如,飞机、无人驾驶飞机、火车、汽车或其它运输工具)、物联网(iot)使能装置、嵌入式计算机(例如,包含在车辆、工业设备或联网商业装置中的计算机),或包含存储器和处理装置的此类计算装置。
32.计算系统100可包含主机系统120,所述主机系统耦合到一或多个存储器子系统
110。在一些实施例中,主机系统120耦合到不同类型的多个存储器子系统110。图1示出了耦合到一个存储器子系统110的主机系统120的一个实例。如本文所使用的,“耦合到”或“与
……
耦合”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有介入组件),无论是有线的还是无线的,包含例如电的、光的、磁的等连接。
33.主机系统120可以包含处理器芯片组和由处理器芯片组执行的软件栈。处理器芯片组可包含一或多个核心、一或多个高速缓存器、存储器控制器(例如,nvdimm控制器),和存储协议控制器(例如,pcie控制器、sata控制器)。主机系统120使用存储器子系统110,例如,将数据写入到存储器子系统110以及从存储器子系统110读取数据。
34.主机系统120可通过物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附接(sata)接口、外围组件互连快速(pcie)接口、通用串行总线(usb)接口、光纤通道、串行附接scsi(sas)、双数据速率(ddr)存储器总线、小型计算机系统接口(scsi)、双列直插式存储器模块(dimm)接口(例如,支持双数据速率(ddr)的dimm插槽接口)等。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过物理主机接口(例如,pcie总线)与主机系统120耦合时,主机系统120可以进一步利用nvm express(nvme)接口来存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据和其它信号的接口。图1作为实例示出了存储器子系统110。一般来说,主机系统120可经由同一通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子系统。
35.存储器装置130、140可包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可以是但不限于随机存取存储器(ram),例如动态随机存取存储器(dram)和同步动态随机存取存储器(sdram)。
36.非易失性存储器装置(例如,存储器装置130)的一些实例包含与非(nand)型闪速存储器及就地写入存储器,例如三维交叉点(“3d交叉点”)存储器装置,其为非易失性存储器单元的交叉点阵列。非易失性存储器单元的交叉点阵列可以结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来执行位存储。另外,与许多基于闪存的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。nand型闪速存储器包含(例如)二维nand(2d nand)和三维nand(3d nand)。
37.存储器装置130中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如,单级单元(slc)可每单元存储一个位。其它类型的存储器单元(例如多级单元(mlc)、三级单元(tlc)、四级单元(qlc)和五级单元(plc))可每单元存储多个位。在一些实施例中,存储器装置130中的每一个可包含一或多个存储器单元阵列,例如slc、mlc、tlc、qlc、plc或这些的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的slc部分,以及mlc部分、tlc部分、qlc部分或plc部分。存储器装置130的存储器单元可分组为页,所述页可指用于存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,nand),页可进行分组以形成块。
38.尽管描述了非易失性存储器组件,例如非易失性存储器单元的3d交叉点阵列和nand型闪速存储器(例如,2d nand、3d nand),但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(rom)、相变存储器(pcm)、自选择存储器、其它基于硫属化
物的存储器、铁电晶体管随机存取存储器(fetram)、铁电随机存取存储器(feram)、磁电机随机存取存储器(mram)、自旋转移力矩(stt)-mram、导电桥接ram(cbram)、电阻式随机存取存储器(rram)、基于氧化物的rram(oxram)、负或(nor)闪速存储器或电可擦除可编程只读存储器(eeprom)。
39.存储器子系统控制器115(为简单起见,控制器115)可与存储器装置130通信以进行操作,例如在存储器装置130处读取数据、写入数据或擦除数据和其它此类操作。存储器子系统控制器115可以包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器或其组合。硬件可包含具有专用(即,硬译码)逻辑的数字电路以执行本文所描述的操作。存储器子系统控制器115可以是微控制器、专用逻辑电路(例如,现场可编程门阵列(fpga)、专用集成电路(asic)等)或其它合适的处理器。
40.存储器子系统控制器115可以包含处理装置,所述处理装置包含被配置成执行存储在本地存储器119中的指令的一或多个处理器(例如,处理器117)。在所示的实例中,存储器子系统控制器115的本地存储器119包含嵌入式存储器,其被配置成存储用于执行各种过程、操作、逻辑流程及例程的指令,所述指令控制存储器子系统110的操作,包含处理存储器子系统110与主机系统120之间的通信。
41.在一些实施例中,本地存储器119可包含存储存储器指针、被取出的数据等的存储器寄存器。本地存储器119还可包含用于存储微代码的只读存储器(rom)。虽然图1中的实例存储器子系统110已被示出为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,且可替代地依赖于外部控制(例如,由外部主机或由与存储器子系统分离的处理器或控制器提供)。
42.通常,存储器子系统控制器115可从主机系统120接收命令或操作,并且可将所述命令或操作转换成指令或适当命令以实现对存储器装置130的期望存取。存储器子系统控制器115可以负责其它操作,例如损耗均衡操作、垃圾收集操作、检错和纠错码(ecc)操作、加密操作、高速缓存操作,以及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(lba)、名字空间)和物理地址(例如,物理mu地址、物理块地址)之间的地址转换。存储器子系统控制器115可进一步包含通过物理主机接口与主机系统120通信的主机接口电路。主机接口电路系统可以将从主机系统接收到的命令转换成存取存储器装置130的命令指令,以及将与存储器装置130相关联的响应转换成用于主机系统120的信息。
43.存储器子系统110还可包含未示出的额外电路或组件。在一些实施例中,存储器子系统110可以包含高速缓存或缓冲器(例如,dram)和地址电路系统(例如,行解码器和列解码器),其可从存储器子系统控制器115接收地址且对地址进行解码以存取存储器装置130。
44.存储器子系统110可以包含jit调度组件113,其可以管理由闪存转换层(ftl)固件提交给后端存储器装置的缓冲器分配、数据传输和后端存储器操作。ftl固件是指将主机侧的逻辑块地址映射到存储器装置的物理地址的模块。在一些实施例中,存储器子系统控制器115包含jit调度组件113的至少一部分。在一些实施例中,jit调度组件113是主机系统110、应用程序或操作系统的一部分。在其它实施例中,本地媒体控制器135包含jit调度组件113的至少一部分,并被配置成执行本文所述的功能。下面描述关于jit调度组件113的操作的进一步细节。
45.图2示出了根据一个实施例的jit调度组件113的框图。jit调度组件113可包含jit
调度器210、qos业务管理器207、存储器资源管理器209和响应路由器211。模块207-211中的每一个可以由软件、硬件或它们的组合来实施。
46.jit调度器210可在当前调度时间帧内检索传入请求并按业务类别调度所述传入请求,所述当前调度时间帧可为存储器子系统的一或多个时钟周期。在一个实施例中,传入请求被存储在调度池中。在其它实施方案中,传入请求可被存储在先入先出(fifo)队列、先入后出(filo)队列或其组合中。fifo/filo描述了存取请求的顺序。对于fifo队列,当接收到请求时,将所述请求添加到队列的尾部。然后从队列的头部取出要处理的请求。
47.在一个实施例中,传入请求可被存储在链接列表池(单链接列表或双链接列表)中,其中每个池具有一个传入请求链接列表。在一个实施例中,参考图3,jit调度器210将请求存储在调度池300的二维阵列中,其中阵列300中的每个池302用于特定业务类别和特定后端资源。当从读取/写入/擦除邮箱201-203接收到请求时,jit调度器可以尝试从空闲池301中检索任何可用节点,用适当的信息(存储器操作、业务类别、存储器操作类型等)填充所述请求,并根据业务类别和对应于所述请求的后端资源将节点放置在阵列300中的池中。邮箱是前端200放置请求的缓冲器,并且jit调度器210将最终检索这些请求。这里,节点链接到阵列300中的链接列表,并且节点可以存储用于请求的信息。链接列表可以存储一或多个节点,其中每个节点包含对列表中的下一节点的引用。jit调度器210可以遍历阵列300中的每个池,例如池[1]1.…
池[m][n],以确定特定池是否具有任何请求,以及是否可以处理所述请求。在一个实施例中,jit调度器210通过循环法遍历每个池。循环法是以预定顺序从所有池中顺序地选择请求的安排。预定顺序定义了业务类别的优先级。例如,业务类别主机读取可以具有比主机写入更高的优先级,并且主机写入可以具有比后台操作更高的优先级。因此,所述预定顺序可以使主机读取优先于主机写入,且主机写入优先于后台操作。在另一个实施例中,旋转是加权循环法。除了根据与每个池相关联的权重来选择请求之外,加权循环法与循环法类似。如果可处理池中的请求(即,如果qos信用和nand资源可用,如下文进一步论述),那么从所述池中移除用于所述请求的节点,将其转发到后端(例如,存储器装置),并且将所述节点放回到空闲池301中。总之,阵列300可用于确保当存在业务类别和后端资源的不同组合的请求时,从不同的业务类别/资源组合中选择(或根据加权循环法中的权重来选择)请求提交。
[0048]
qos业务管理器207可以为请求池实施服务质量(qos)策略。在一个实施例中,所实施的qos策略可根据请求的业务类别并使用基于信用的方案来管理调度时间帧内的请求,以避免缺乏较低优先级的请求池。例如,在初始化时,基于信用的方案可以为每个业务类别指定预配置数目的可用qos信用。jit调度器210然后在将请求转发到后端之前消耗来自特定业务类别的qos信用。只有当存在用于提交请求的必要数目的可用qos信用时,才可以提交所述请求,然后使可用qos信用的数目递减以反映提交。这样,当存在不同业务类别的请求时,在给定调度时间帧内,通过业务类别的所述数目的可用qos信用来管理来自不同业务类别的请求提交。如图4所示,在一个实施例中,qos业务管理器207可以包含如重置信用模块401、获取信用模块403、添加信用模块405、业务类别信用表407和存储器操作类型表409的模块。表407-409可以由qos业务管理器207初始化,并且可以存储在本地存储器119中。业务类别信用表407可以指定各种业务类别、预先配置数目的信用(默认信用),以及用于相应业务类别的可用信用。在一个实施例中,业务类别可以包含主机读取(jit_host_read)、主
机写入(jit_host_write)和后台请求(jit_background_request)。相应业务类别的默认信用列可以分别是default_host_read_credits、default_host_write_credits和default_background_request_credits。默认信用是可用信用(a1、a2和a3)可以在每个新调度时间帧的开始时设置的信用。可用信用列可以存储用于业务类别的可用信用的计数。重置信用模块401、获取信用模块403和添加信用模块405中的每一个可以从可用信用列中修改(分别重置、减去和添加)信用。
[0049]
存储器操作类型表409可以指定多个存储器操作类型和其对应的信用要求。举例来说,存储器操作类型可包含用于不同类型的存储器单元的不同操作(读取或写入)。一些实例类型是:单级单元(slc)读取(slc_read)、slc写入(slc_write)、qlclp写入(qlc_lp_write)、qlc upxp写入(qlc_upxp_write)、qlc tp写入(qlc_tp_write)。注意,四级单元(qlc)可具有四个页,被称为较低页(lp)、较高页(up)、额外页(xp)和顶页(tp)。不同存储器操作类型可表示存取slc的页或qlc存储器单元的页的不同操作。参考图4,完成这些操作所需的信用的实例可被预设:分别为b1、b2、b3、b4和b4。不同的存储器操作类型可以具有不同的处理要求:时序要求、功率要求、热负载或其组合。尽管仅示出了三个业务类别和五个存储器操作类型,但是qos业务管理器207可以指定任何数目的业务类别和存储器操作类型。
[0050]
例如,在调度时间帧的开始或响应于加电事件,qos业务管理器207可将表407的可用信用列设置为等于表407的默认信用列(通过重置信用模块401)。当jit调度器210向后端提交与特定业务类别相关联的存储器操作请求时(通过获取信用模块403),所述jit调度器可以从该业务类别的可用信用中减少一些信用。qos业务管理器207然后使用表407的可用信用列来确定有多少信用可用于业务类别,并且如果剩余足够的可用信用来服务请求,则准许请求提交,或者如果可用信用的数目小于服务请求所需的信用,则拒绝请求提交。如果存储器操作随后由于其它原因而失败(例如,后端资源繁忙等),则添加信用模块405可以将授予的信用添加回业务类别的可用信用。
[0051]
后端资源管理器209可以管理传入请求的后端资源的可用性。如前所述,后端资源可以是在任何给定时间可由存储器控制器存取的软件或硬件可并行化单元。后端资源的实例包含nand电路管芯、平面、块、页或逻辑命令处理器(lcp)等。可基于后端存储器装置或存储器控制器的架构来指定后端资源。例如,如果后端存储器装置可由存储器控制器在并行通道中存取,则后端资源可被指定为lcp。
[0052]
参考图5,在一个实施例中,后端资源管理器209包含获取可用性模块501、存储器操作完成模块503和飞行中存储器操作表505。这些模块可以实施为基于软件或基于硬件的模块。获取可用性模块501跟踪后端资源的可用性,并且可以确定特定后端资源是否可用。存储器操作完成模块503跟踪存储器操作的完成状态,并且可以确定先前提交的存储器操作是否已经完成。后端资源管理器209可以在飞行中存储器操作表505处存储先前提交的尚未完成的存储器操作请求的列表。飞行中存储器操作表505可以被存储为图1的本地存储器119的一部分。
[0053]
在一个实施例中,jit调度器210请求给定后端资源和存储器操作类型的可用性(通过获取可用性模块501)。后端资源管理器209可以将所请求的后端资源与飞行中的存储器操作的后端资源进行比较,以确定所请求的后端资源的可用性。根据可用性,后端资源管理器209可以返回通过/失败状态码。举例来说,如果所请求的后端资源是块的特定页,则后
端资源管理器209可以将其与飞行中存储器操作的页进行比较,以确定特定页当前是否正被存取。
[0054]
在另一实例中,如果所请求的后端资源是特定lcp,则后端资源管理器209可比较飞行中存储器操作所使用的lcp,以确定特定lcp是否可用。在另一实例中,如果每一lcp的未完成存储器操作的数目降到预定阈值以下,那么lcp可用。因此,后端资源管理器209可以以不会损害存储器子系统性能的方式管理后端资源的可用性。
[0055]
在另一实施例中,后端资源管理器209实施预测模型以预测lcp是否可用。预测模型可以使预测基于最后的存储器操作的一或多个参数(例如提交时间和类型)。例如,如果最后的存储器操作在t纳秒之前提交,并且是期望在t纳秒内完成的存储器操作类型,则最后的存储器操作被视为完成。因此,当前存储器操作请求可以在最后的存储器操作完成由后端资源管理器209通过响应路由器211确认之前提交。因此,该预测模型可用于保持后端的管线更有效地加载。
[0056]
参考图2,示出了根据一个实施例的实例调度过程流程的操作1-10。
[0057]
操作1。jit调度器210从nand光标205接收读取/写入/擦除请求。所述请求可以是从前端200接收的主机读取、主机写入或后台存储器操作。后台存储器操作可以是后台读取、后台写入或后台擦除操作。后台操作可表示由存储器控制器起始以将存储器装置的预定义数据状态度量维持在指定范围内的媒体管理操作。nand光标205可以从读取邮箱201、写入邮箱202或擦除邮箱203接收这些请求。在另一个实施例中,jit调度器210可以直接从邮箱201-203接收存储器操作请求。所请求的存储器操作可以利用逻辑或物理地址。对于利用逻辑地址的命令,jit调度器210可请求nand光标205使用来自数据快闪管理器204的逻辑到物理转换表来将逻辑地址转换为对应的物理地址。然后,nand光标205将物理地址发送回jit调度器210。邮箱201-203可以是存储所请求的命令操作的存储器缓冲器。
[0058]
操作2。jit调度器210管理来自nand光标205的传入请求。例如,jit调度器210可以根据对应于传入请求的业务类别和后端资源将传入请求存储在调度池的二维(m
×
n)阵列中,如图3所示。每个池对应于业务类别和后端资源的特定组合。jit调度器210可以使用循环法或加权循环法来从调度池中选择一轮请求以提交给后端230。例如,对于一个调度时间帧,jit调度器210可以按预定顺序遍历调度池的m
×
n阵列(例如,首先按指定维度遍历所述池)。
[0059]
操作3。对于传入请求,jit调度器210可从qos业务管理器207检索信用。例如,根据所请求的业务类别和存储器操作类型,jit调度器210确定是否有足够的信用来服务所述请求。qos业务管理器207基于该确定返回成功或失败状态。在接收到故障状态时,将传入请求放回到调度池中,以在将来的调度时间帧中提交。对于成功状态,jit调度器210继续检查后端是否可用于请求。
[0060]
操作4。jit调度器210可向后端资源管理器209发送请求,以检查用于服务所述请求的后端资源可用性。例如,后端资源管理器209可以确定是否有任何未完成的请求正在使用所请求的后端资源。这里,后端资源管理器209可以跟踪未完成的(或飞行中的)请求并将未完成的请求与当前请求进行比较。如果比较导致匹配,例如对应于未完成请求的后端资源是被请求的后端资源,则可以认为所请求的后端资源不可用。在一个实施例中,对于作为后端资源的lcp,后端资源管理器209可以将对应于未完成请求的fpa与对应于当前请求的
fpa进行比较,以寻找重叠。如果没有重叠,则后端资源管理器209可以确定后端资源可用。在另一实施例中,如果对lcp的未完成请求的数目低于某一阈值,则后端资源管理器209将后端资源视为可用。在另一实施例中,后端资源管理器209通过分析所提交的最后请求来预测后端资源是否可用。后端资源管理器209返回反映指定资源的可用性的状态码。
[0061]
如果指定的后端资源不可用,则jit调度器210将信用返回到qos业务管理器207(通过添加信用模块405),并将请求附加回调度池以在将来的时间进行处理。否则(即,如果指定的后端资源可用),后端资源管理器209将所述请求存储到飞行中存储器操作表(例如,图5的表505)中,并将所述请求标记为飞行中请求。
[0062]
操作5。如果请求是主机写入,则jit调度器210为所述请求分配数据缓冲器,并等待主机数据传输引擎220提供数据。其它请求类型进行到操作8。
[0063]
操作6。对于主机写入请求,jit调度器210可以通过主机数据传输引擎220从前端200请求数据。数据请求可以是异步的,从而jit调度器210可以在处理当前请求的同时处理下一个请求。
[0064]
操作7。主机数据传输引擎220可将所请求的数据存储到jit调度器210内的所分配的数据缓冲器,并将传输完成响应发送到jit调度器210。
[0065]
操作8。一旦请求准备好提交,就将其提交给后端230。
[0066]
操作9。响应路由器211从后端230接收操作完成响应。
[0067]
操作10。响应路由器211将响应路由到后端资源管理器209和/或前端200,以向它们通知操作完成。
[0068]
图6是根据本公开的一些实施例的调度存储器操作请求的实例方法650的流程图。方法650可由可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合的处理逻辑来执行。在一些实施例中,方法650由图1的jit调度组件113或图2的jit调度器210执行。尽管以特定顺序或次序示出,但是除非另有说明,否则可以修改过程的次序。因此,所示出的实施例应仅被理解为实例,且所示出的过程可以不同次序执行,且一些过程可并行执行。此外,在各种实施例中可以省略一或多个过程。因此,不是在每个实施例中都需要所有过程。其它过程流程也是可能的。
[0069]
在操作651处,处理逻辑接收使用与存储器装置相关联的硬件资源执行存储器操作的请求。在一个实施例中,处理逻辑在入站队列中对请求进行排队。入站队列可以由(m
×
n)调度池阵列表示。(m
×
n)调度池阵列中的每个调度池对应于特定硬件资源和特定业务类别。调度池可以实施为链接列表(单链接列或双链接列表),其中请求的信息可以存储在链接列表中的节点中。在调度时间帧期间,处理逻辑可以通过循环法或加权循环法从调度池中选择一或多轮请求,以用于根据预定顺序进行处理。
[0070]
在操作653处,处理逻辑识别对应于存储器操作的业务类别。例如,业务类别可以是以下之一:主机读取、主机写入和后台操作。
[0071]
在操作655处,处理逻辑确定在当前调度时间帧期间业务类别的可用服务质量(qos)信用的数目。在调度时间帧的开始,或者当存储器子系统加电时,存储业务类别的可用信用的数据缓冲器(或表)被分配与它们的默认信用相等的信用。每个业务类别具有预定数目的默认信用。当处理逻辑从可用qos信用中获取用于存储器操作的多个qos信用时,可
用qos信用递减。
[0072]
在操作657处,处理逻辑确定与存储器操作的类型相关联的qos信用的数目。每个存储器操作对应于存储器操作类型。每个存储器操作类型与预定数目的信用相关联以完成所述类型的存储器操作。一些实例类型可以是:slc读取、slc写入、qlc lp写入、qlc upxp写入和qlc tp写入。这里,四级单元(qlc)可具有四个页,被称为较低页(lp)和较高页(up、xp和tp)。不同的存储器操作类型可以具有不同的处理要求:时序等待时间、功率要求、热负载或其组合。qos信用可表示这些处理要求。因此,不同的存储器操作类型可以与不同的qos信用相关联。
[0073]
在操作659处,响应于确定与存储器操作的类型相关联的qos信用的数目小于可用qos信用的数目,处理逻辑在当前调度时间帧期间提交将在存储器装置处进行处理的存储器操作,且使可用qos信用递减与存储器操作相关联的qos信用的数目。如果与存储器操作相关联的qos信用的数目大于可用qos信用,则处理逻辑将请求放回到调度池(例如,队列)中以供在稍后的调度时间帧处对请求进行处理。也就是说,处理逻辑可以管理在调度时间帧内提交的业务类别的存储器操作的数目。可用qos信用对在调度时间帧内可以提交多少业务类别的存储器操作进行了限制,以避免缺乏较低优先级请求。
[0074]
处理逻辑可进一步在向存储器装置提交请求之前确定硬件资源的可用性。处理逻辑可以使用先前提交但尚未完成的飞行中(未完成的)存储器操作的信息来确定硬件资源可用性。在一个实施例中,基于统计模型,使用用于飞行中请求的信息,处理逻辑可以确定硬件资源的未完成请求的计数。如果所述计数低于预定阈值,则处理逻辑确定所述硬件资源可用,并且处理逻辑向存储器装置提交请求。注意,硬件资源可以是nand管芯、nand平面、nand块、nand页、lcp等。
[0075]
处理逻辑还可以使用预测模型来确定硬件资源的可用性。预测模型可以基于与硬件资源相关联的最后提交的请求的信息来预测最后提交的请求何时完成。最后提交的请求的信息可以包含:最后提交的内存操作类型和最后提交的提交时间戳。基于这些信息,处理逻辑可以预测存储器操作何时完成。
[0076]
图7是根据本公开的一些实施例的调度存储器操作请求的实例方法700的流程图。方法700可由可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合的处理逻辑来执行。在一些实施例中,方法700由图1的jit调度组件113或图2的jit调度器210执行。尽管以特定顺序或次序示出,但是除非另有说明,否则可以修改过程的次序。因此,所示出的实施例应仅被理解为实例,且所示出的过程可以不同次序执行,且一些过程可并行执行。此外,在各种实施例中可以省略一或多个过程。因此,不是在每个实施例中都需要所有过程。其它过程流程也是可能的。
[0077]
在操作701处,处理逻辑接收使用与存储器装置相关联的硬件资源执行存储器操作的请求。在操作703处,处理逻辑识别对应于存储器操作的业务类别。一些实例业务类别可以是:主机读取、主机写入和后台操作。在操作705处,处理逻辑确定对应于存储器操作的存储器操作的类型。一些实例类型可以是:slc读取、slc写入、qlc lp写入、qlc upxp写入和qlc tp写入。
[0078]
在操作707处,处理逻辑基于业务类别和存储器操作的类型来确定在当前调度时
间帧期间是否将处理存储器操作。例如,处理逻辑确定业务类别的可用qos信用和完成对存储器操作类型的请求所需的qos信用。如果有比所需qos信用更多的可用qos信用,则将在当前调度时间帧期间处理存储器操作,并且处理逻辑使可用qos信用递减。否则,存储器操作被排队以在将来的调度时间帧被处理。在操作709处,响应于确定在当前调度时间帧期间将处理存储器操作,处理逻辑提交将在存储器装置处进行处理的存储器操作。
[0079]
可以在部署之前模拟存储器操作的调度。例如,等待时间模拟器可以通过模拟每个业务类别和存储器操作类型的存储器操作的预期等待时间来模拟提交给jit调度器的各种工作负载的系统级性能。根据存储器操作的业务类别和存储器操作类型的存储器操作的预期等待时间的信息可用于模拟jit调度器的性能。该模拟器可估计可能因使用不同nand类型和后台操作算法而引起的系统级性能影响。因此,每个业务类别的可用qos信用的量和完成某些存储器操作所需的qos信用可由操作者针对各种工作负载的所需调度等待时间来进一步调整。
[0080]
图8示出了根据一个实施例的等待时间模拟器的框图。等待时间模拟器800可以模拟jit调度器的等待时间模型。模拟器800可以包含输入模块801、jit调度器810、qos业务管理器807和响应路由器/输出811。模块801-811中的每一个可以是等待时间模拟器的基于硬件或基于软件的模块。
[0081]
输入模块801可(例如)通过输入/输出(i/o)接口或图形用户接口(gui)接收预期等待时间简档。如图9的简档809所示的预期等待时间简档表示根据各种业务类别的存储器操作类型来处理各种业务类别的存储器操作的预期时间段。预期等待时间简档可反映特定nand装置的特性和存储器操作需要多少时间来在nand装置上执行所述类型的存储器操作。预期等待时间简档可以是二进制元数据文件、文本文件或电子表格的形式。
[0082]
输入模块801可以接收工作负载列表,所述工作负载列表可以指定可以在不同时间转发到jit调度器810以测试jit调度器810的性能的各种业务类别的存储器操作的列表。实例工作负载列表可以包含将在调度时间帧1处提交的10个slc读取存储器操作;将在调度时间帧2处提交的20个slc写入存储器操作,等等。工作负载简档可以指定某些存储器操作的重复,或者可以在每个调度时间帧内具有唯一的存储器操作集合。工作负载列表可以是由操作者生成的二进制元数据文件、文本文件或电子表格的形式。
[0083]
在一个实施例中,输入模块801包含用于jit调度器810的读取/写入/擦除缓冲器(未示出),其中各种类型的存储器操作(读取、写入、擦除)存储在缓冲器中。然后,jit调度器810可以从读取/写入/擦除缓冲器中检索存储器操作以供处理。读取/写入/擦除缓冲器实施图2的读取/写入/擦除邮箱的功能。
[0084]
jit调度器810可以在由工作负载列表指定的各种调度时间帧处调度存储器操作。在一些实施例中,类似于图2的jit调度器210的操作,jit调度器810可使用先入先出(fifo)队列、先入后出(filo)、池或其组合来调度存储器操作。在一个实施例中,可以在调度池1000中调度存储器操作,如图10所示。调度池1000可以包含一或多个链接列表(单链接列表或双链接列表)。在一个实施例中,类似于图3的调度池300,池1000是调度池的二维阵列,其中池1000中的每个池1002旨在用于特定业务类别和特定模拟后端资源,例如业务类别1

m和模拟后端资源1

n。在一个实施例中,模拟后端资源1

n被模拟为始终可用。
[0085]
在一个实例中,当从输入模块801接收到存储器操作时,jit调度器810可从空闲池
1003中检索节点,将来自存储器操作的适当信息添加到节点中,且根据对应于存储器操作的业务类别和模拟后端资源将节点放置到池1000中的一者中。jit调度器810可以遍历池1000中的每个池,例如池[1]1.…
池[m][n],以确定特定池是否具有任何存储器操作,并且确定是否可处理所述存储器操作。在一个实施例中,jit调度器810以预定顺序通过循环法遍历每个池。在另一实施例中,jit调度器810以预定顺序通过加权循环法遍历每个池。预定顺序可以定义各种业务类别的优先级。例如,主机读取的业务类别可以具有比主机写入更高的优先级,等等。如果可以处理池中的存储器操作(即,如果qos信用可用),则从池中移除用于存储器操作的节点,将其转发到响应路由器811,并且将所述节点放回到空闲池1001中。因此,池1000可用于确保根据可用qos信用的部分在不同业务类别中选择(或根据基于加权循环算法的权重来选择)存储器操作。在一些实施例中,假定模拟后端资源可用。
[0086]
参考图8,类似于图2的qos业务管理器207,qos业务管理器807可以实施用于调度池的服务质量(qos)策略。在一个实施例中,所实施的qos策略可以使用基于qos信用的方案来避免缺乏较低优先级的请求池,根据存储器操作的业务类别来管理调度时间帧内的存储器操作。例如,在初始化时,基于信用的方案可以为每个业务类别指定预配置数目的可用qos信用。jit调度器810然后在将存储器操作转发到响应路由器811之前消耗来自特定业务类别的qos信用。只有当存在用于提交存储器操作的必要数目的可用qos信用时,才可以提交所述存储器操作,然后使可用信用的数目递减以反映提交。这样,当存在不同业务类别的存储器操作时,在给定调度时间帧内,通过业务类别的所述数目的可用信用来管理来自不同业务类别的存储器操作提交。如图11所示,在一个实施例中,qos业务管理器807可以包含如重置信用模块401、获取信用模块403、存储器操作类型表409和业务类别信用表1101的模块。表409和1101可以由qos业务管理器807初始化,并且可以存储在存储器中。业务类别信用表1101可以指定各种业务类别、预先配置数目的信用(默认信用),以及用于相应业务类别的可用信用。在一个实施例中,业务类别可以包含主机读取(jit_host_read)、主机写入(jit_host_write)和后台存储器操作(jit_background_read、jit_background_write和jit_background_erase)。相应业务类别的默认信用列可以分别是default_host_read_credits、default_host_write_credits、default_background_read_credits、default_background_write_credits和default_background_erase_credits。默认信用是可用qos信用(a1、a2、a3

)可以在每个新调度时间帧的开始时设置的信用。可用信用列可以存储业务类别的可用qos信用的计数。重置信用模块401和获取信用模块403中的每一个可以从可用信用列中修改(分别重置和减去)信用。
[0087]
存储器操作类型表409可以指定多个存储器操作类型和其对应的qos信用要求。举例来说,存储器操作类型可包含用于不同类型的存储器单元的不同操作(读取、写入或擦除)。一些实例类型是:单级单元(slc)读取(slc_read)、slc写入(slc_write)、qlclp写入(qlc_lp_write)、qlc upxp写入(qlc_upxp_write)、qlc tp写入(qlc_tp_write)。注意,四级单元(qlc)可具有四个页,被称为较低页(lp)、较高页(up)、额外页(xp)和顶页(tp)。不同存储器操作类型可表示存取slc的页或qlc存储器单元的页的不同操作。完成这些操作所需的信用的实例可以预设为数值:分别为b1、b2、b3、b4和b4。不同的存储器操作类型可以具有不同的处理要求:时序要求、功率要求、热负载或其组合。尽管仅示出了三个业务类别和五个存储器操作类型,但是qos业务管理器807可以指定任何数目的业务类别和存储器操作类
型。
[0088]
例如,在调度时间帧的开始,qos业务管理器807可将表1101的可用信用列设置为等于表1101的默认信用列(通过重置信用模块401)。当jit调度器810向响应路由器811提交与特定业务类别相关联的存储器操作时(通过获取信用模块403),所述jit调度器可以从该业务类别的可用信用中减少一些信用。qos业务管理器807然后使用表1101的可用信用列来确定有多少信用可用于业务类别,并且如果剩余足够的可用信用来服务存储器操作,则准许存储器操作提交,或者如果可用信用的数目小于服务存储器操作所需的信用,则拒绝存储器操作提交。
[0089]
响应路由器/输出811可以模拟用于从jit调度器810提交的存储器操作提交的接收器。响应路由器/输出811可基于存储器操作的业务类别和存储器操作类型来检索存储器操作的预期等待时间。响应路由器/输出811可以通过将存储器操作完成通知返回到jit调度810,在提交后已过去了等于预期等待时间的时间之后将存储器操作指示为已被服务。响应路由器/输出811可以输出指定jit调度器的性能的一些统计信息的文件。输出可包含调度时间帧的最坏情况等待时间,多少调度时间帧用于工作负载等。输出文件还可包含可用于分析调度时间帧中的潜在瓶颈、管芯争用的图。
[0090]
参考图8,示出了根据一个实施例的实例模拟的操作11-15。
[0091]
操作11。jit调度器810在不同时间检索从输入模块801模拟的读取/写入/擦除存储器操作。存储器操作可以是主机读取、主机写入或后台存储器操作业务类别。后台存储器操作可以是后台读取、后台写入或后台擦除操作。存储器操作可以包含相关联的业务类别数据和/或模拟后端资源数据。存储器操作可以是从操作者提供给输入模块801的工作负载的简档(例如,工作负载简档)的一部分,其中工作负载简档可以包含在各种调度时间帧的各种读/写/擦除存储器操作,以模拟由jit调度器处理的工作负载。
[0092]
操作12。jit调度器810管理来自输入模块801的传入存储器操作。例如,jit调度器810可以根据业务类别和模拟后端资源将传入存储器操作存储在二维(m
×
n)调度池中。jit调度器210可以使用循环法或加权循环法来从调度池中选择存储器操作。例如,在给定的调度时间帧期间,jit调度器810可以遍历m
×
n个调度池一或多次,以从这些池中检索存储器操作。
[0093]
操作13。为了处理由传入请求指定的存储器操作,jit调度器810可从qos业务管理器807检索可用qos信用。例如,从所请求的业务类别和所需的qos信用来完成存储器操作类型。jit调度器210可以确定是否有足够的信用来服务所述请求,例如,如果可用的qos信用大于所需的qos信用,则有足够的信用。
[0094]
操作14。qos业务管理器807基于该确定返回成功或失败状态。在接收到故障状态时,将所模拟的请求放回到调度池中,以在将来的调度时间帧中提交。对于成功状态,jit调度器810进行到操作15。
[0095]
操作15。jit调度器810可以向响应路由器811提交存储器操作。响应路由器811可以在已过去了存储器操作的预期等待时间之后返回模拟存储器操作完成状态。
[0096]
通过模拟不同存储器操作的工作负载的时序,输出811可生成指示工作负载的性能的等待时间统计信息的输出。输出可以包含调度时间帧的最坏情况等待时间周期,以及需要多少调度时间帧来完成特定工作负载等。例如,输出811可以通过计算每个业务类别的
等待时间来计算调度时间帧的最坏情况等待时间。对于根据业务类别的存储器操作,输出811可以通过将存储器操作等待时间加在一起来计算业务类别的业务类别等待时间。然后,输出811可以将最大函数应用于不同的业务类别等待时间,发现哪个业务类别在调度时间帧内具有最差的等待时间。在另一实施例中,输出811通过以下操作计算调度时间帧的最坏情况等待时间:确定业务类别中的存储器操作的平均等待时间,以及通过将所述平均等待时间乘以所述调度时间帧内所述业务类别的存储器操作的数目来计算最坏情况等待时间。
[0097]
在一个实施例中,用于工作负载的帧的数目可以根据完成工作负载简档中的存储器操作所需的调度时间帧的数目计算出来。在另一实施例中,用于工作负载的调度时间帧的数目是根据工作负载中的存储器操作的数目估计的。
[0098]
模拟不同的工作负载允许分析jit调度器的等待时间,对于各种类型的存储器操作具有变化的可用qos信用和所需的qos信用。分析可以提供各种工作负载的最坏情况等待时间。
[0099]
图12是根据实施例的调度存储器操作的实例方法的流程图。方法1200可由可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合的处理逻辑来执行。在一些实施例中,方法1200由图8的模拟器800执行。尽管以特定顺序或次序示出,但是除非另有说明,否则可以修改过程的次序。因此,所示出的实施例应仅被理解为实例,且所示出的过程可以不同次序执行,且一些过程可并行执行。此外,在各种实施例中可以省略一或多个过程。因此,不是在每个实施例中都需要所有过程。其它过程流程也是可能的。
[0100]
在操作1201处,处理逻辑接收指定存储器操作序列的工作负载简档,其中每个存储器操作与所述存储器操作的类型相关联。实例存储器操作可以是slc读取地址p1。存储器操作与业务类别(例如主机读取)相关联,并且属于存储器操作类型(例如slc读取)。
[0101]
在操作1203处,处理逻辑识别与所述存储器操作序列中的每个存储器操作相关联的业务类别。所述业务类别可以包含以下中的至少一者:主机读取、主机写入、后台读取和后台写入以及后台擦除。
[0102]
在操作1205处,处理逻辑基于与存储器操作相关联的业务类别,在多个调度池中的调度池中对所述存储器操作序列中的每个存储器操作进行排队。调度池可以是二维池阵列,其中每个池包含链接列表,并且链接列表中的每个链接表示存储器操作请求。
[0103]
在操作1207处,处理逻辑基于服务质量(qos)策略从多个调度池中选择将在调度时间帧内被服务的一或多个存储器操作。选择可以进一步包含确定在调度时间帧内业务类别的可用服务质量(qos)信用的数目;基于所述存储器操作的存储器操作类型确定与所述存储器操作相关联的qos信用的数目;以及响应于确定与所述存储器操作相关联的qos信用的数目小于所述业务类别的可用qos信用的数目,从所述可用qos信用中减去所述数目的qos信用以及指示所述存储器操作被服务。所述存储器操作类型可以包含以下中的至少一者:单级单元(slc)读取、slc写入、四级单元(qlc)较低页(lp)写入、qlc较高页(up)写入、qlc额外页(xp)写入和qlc顶页(tp)写入。
[0104]
在操作1209处,处理逻辑基于等待时间简档确定所述一或多个存储器操作中的每个存储器操作的等待时间周期。在一个实施例中,处理逻辑进一步基于等待时间简档确定一或多个存储器操作中的每一个的存储器操作等待时间周期。处理逻辑通过对与业务类别
的存储器操作相对应的存储器操作等待时间周期求和来确定业务类别等待时间间隔。处理逻辑通过在多个业务类别的业务类别等待时间周期中选择最大的业务类别等待时间周期来确定调度时间帧的等待时间周期。等待时间简档可以包含多个等待时间周期,其中多个等待时间周期中的每个等待时间周期对应于业务类别和存储器操作类型。
[0105]
在一个实施例中,处理逻辑进一步确定服务存储器操作序列所需的调度时间帧的数目。处理逻辑确定所述数目的调度时间帧确定总等待时间周期。例如,总等待时间周期可以等于调度时间帧的等待时间周期乘以调度时间帧的数目。
[0106]
图13是根据实施例的调度存储器操作的实例方法的流程图。方法1300可由可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合的处理逻辑来执行。在一些实施例中,方法1300由图8的模拟器800执行。尽管以特定顺序或次序示出,但是除非另有说明,否则可以修改过程的次序。因此,所示出的实施例应仅被理解为实例,且所示出的过程可以不同次序执行,且一些过程可并行执行。此外,在各种实施例中可以省略一或多个过程。因此,不是在每个实施例中都需要所有过程。其它过程流程也是可能的。
[0107]
在操作1301处,处理逻辑接收将模拟的存储器操作。实例存储器操作可以是slc读取地址p1。存储器操作与业务类别(例如主机读取)相关联,并且属于存储器操作类型(例如slc读取)。
[0108]
在操作1303处,处理逻辑确定对应于存储器操作的业务类别。所述业务类别包含以下中的至少一者:主机读取、主机写入、后台读取和后台写入以及后台擦除。
[0109]
在操作1305处,处理逻辑基于存储器操作的存储器操作类型确定与存储器操作相关联的服务质量(qos)信用的数目。所述存储器操作类型包含以下中的至少一者:单级单元(slc)读取、slc写入、四级单元(qlc)较低页(lp)写入、qlc较高页(up)写入、qlc额外页(xp)写入和qlc顶页(tp)写入。
[0110]
在操作1307处,处理逻辑确定在调度时间帧内业务类别的可用qos信用的数目。
[0111]
在操作1309处,响应于确定与存储器操作相关联的qos信用的数目小于业务类别的可用qos信用的数目,处理逻辑从可用qos信用中减去所述数目的qos信用以指示所述数目的qos信用不再可用于业务类别。在操作1311处,处理逻辑指示存储器操作被服务。
[0112]
在一个实施例中,处理逻辑基于等待时间简档确定存储器操作的等待时间周期,并在所述存储器操作的所述等待时间周期已过去之后将存储器操作标记为被服务。在另一实施例中,处理逻辑基于所述等待时间简档确定一或多个存储器操作中的每一个的存储器操作等待时间周期。处理逻辑通过对与业务类别的存储器操作相对应的存储器操作等待时间求和来确定业务类别等待时间周期。处理逻辑通过为多个业务类别选择最大的业务类别等待时间周期来确定调度时间帧的等待时间周期。等待时间简档包含多个等待时间周期,其中多个等待时间周期中的每个等待时间周期对应于业务类别和存储器操作类型。
[0113]
在一个实施例中,处理逻辑基于存储器操作的业务类别在多个调度池中的一个中对存储器操作进行排队,并且处理逻辑在调度时间帧内通过循环法或加权循环法从多个调度池中选择存储器操作。在一个实施例中,处理逻辑确定服务多个存储器操作所需的调度时间帧的数目。处理逻辑基于等待时间简档确定所述数目的调度时间帧的总等待时间周期。
[0114]
图14示出了计算机系统600的实例机器,在所述计算机系统内可执行一组指令,用于使机器执行在本文讨论的方法中的任何一或多者。在一些实施例中,计算机系统600可对应于主机系统(例如,图1的主机系统120),其包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110),或可用于执行控制器的操作(例如,以执行操作系统从而执行对应于图1的jit调度组件113或图8的模拟器800的操作)。在替代性实施例中,机器可连接(例如联网)到lan、内联网、外联网和/或因特网中的其它机器。所述机器可以在客户机-服务器网络环境中作为服务器或客户机、作为对等(或分布式)网络环境中的对等机器、或作为云计算基础设施或环境中的服务器或客户机来操作。
[0115]
所述机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、web设备、服务器、网络路由器、交换机或网桥或者能够执行指定所述机器要采取的动作的一组指令(顺序或以其它方式)的任何机器。进一步地,尽管说明了单个机器,但术语“机器”还应当被理解为包含单独地或联合地执行指令的集合(或多个集合)以执行本文所讨论的方法中的任何一或多者的机器的任何集合。
[0116]
实例计算机系统600包含处理装置602、主存储器604(例如,只读存储器(rom)、闪速存储器、动态随机存取存储器(dram)(例如同步dram(sdram)或rdram等))、静态存储器606(例如,闪速存储器、静态随机存取存储器(sram)等),以及经由总线630彼此通信的数据存储系统618。
[0117]
处理装置602表示一或多个通用处理装置,诸如微处理器、中央处理单元等。更特定来说,处理装置可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置602也可以是一或多个专用处理装置,例如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器或类似物。处理装置602被配置成执行用于执行这里讨论的操作和步骤的指令626。计算机系统600可进一步包含网络接口装置608以通过网络620进行通信。
[0118]
数据存储系统618可包含机器可读存储媒体624(也称为计算机可读媒体),在所述可读存储媒体上存储有一或多个指令626集或体现在本文中描述的方法或功能中的任一或多个的软件。在计算机系统600执行指令626期间,指令也可以完全或至少部分地驻留在主存储器604内和/或处理装置602内,主存储器604和处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储系统618和/或主存储器604可对应于图1的存储器子系统110。
[0119]
在一个实施例中,指令626包含实施对应于块选择组件(例如,图1的jit调度组件113或图8的模拟器800)的功能的指令。尽管在实例实施例中机器可读存储媒体624展示为单个媒体,但是应认为术语“机器可读存储媒体”包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还应当被理解为包含能够存储或编码用于由机器执行的并且使得机器执行本公开的任何一或多个方法的任何媒体。因此,术语“机器可读存储媒体”应理解为包含但不限于固态存储器、光学媒体和磁性媒体。
[0120]
根据对计算机存储器内的数据位的操作的算法和符号表示来呈现前面详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用来最有效地将他们工作的实质传达给本领域的其它技术人员的方式。算法在这里通常被认为是导致期望结果的自相
一致的操作序列。操作是需要物理量的物理操纵的那些操作。通常,尽管不是必须的,这些量采取能够被存储、组合、比较和以其它方式操纵的电或磁信号的形式。主要出于通用的原因,将这些信号称为位、值、元素、符号、字符、项、数字等有时被证明是方便的。
[0121]
然而,应当记住,所有这些和类似的术语将与适当物理量相关联,并且仅仅是应用于这些量的方便标记。本公开可以涉及计算机系统或类似的电子计算装置的动作和过程,所述计算机系统或类似的电子计算装置将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操纵和转换为类似地表示为计算机系统存储器或寄存器或其它这样的信息存储系统内的物理量的其它数据。
[0122]
本公开还涉及一种用于执行这里的操作的设备。该设备可以被专门构造用于预期目的,或者它可以包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这样的计算机程序可以存储在计算机可读存储媒体中,例如但不限于,包含软盘、光盘、cd-rom和磁光盘的任何类型的盘、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡,或适于存储电子指令的任何类型的媒体,每个都耦合到计算机系统总线。
[0123]
这里给出的算法和显示并不固有地涉及任何特定的计算机或其它设备。各种通用系统可以与根据这里的教导的程序一起使用,或者可以证明构造更专用的设备来执行该方法是方便的。各种这些系统的结构将在下面的描述中阐述。此外,不参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示内容。
[0124]
本公开可提供为计算机程序产品或软件,其可包含其上存储有指令的机器可读媒体,所述指令可用于对计算机系统(或其它电子装置)编程以执行根据本公开的过程。机器可读媒体包含用于以机器(例如计算机)可读的形式存储信息的任何机制。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储媒体、光存储媒体、闪速存储器组件等。
[0125]
在前述说明书中,已参考本公开的特定实例实施例描述本公开的实施例。显然,在不脱离如以下权利要求中阐述的本公开的实施例的更宽精神和范围的情况下,可以对其进行各种修改。因此,说明书和附图被认为是说明性的而不是限制性的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献