在具有高延迟后备存储的存储器子系统中管理存储器命令的处理的制作方法

文档序号:28736269发布日期:2022-02-07 19:03阅读:74来源:国知局
在具有高延迟后备存储的存储器子系统中管理存储器命令的处理的制作方法

1.本公开总体上涉及管理存储器命令的处理,并且更具体地,涉及在具有高延迟后备存储的存储器子系统中管理存储器命令的处理。


背景技术:

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


技术实现要素:

3.一方面,本技术提供了一种方法,其包括:由存储器子系统的高速缓存控制器接收对应于所述存储器子系统的一组存储器装置的第一存储器命令;由所述高速缓存控制器将所述第一存储器命令添加到高速缓存控制器命令队列,使得所述高速缓存控制器命令队列存储包含所述第一存储器命令的第一组存储器命令;以及基于(1)所述第一存储器命令是第一类型还是第二类型以及(2)所述第一存储器命令的来源,由所述高速缓存控制器将所述高速缓存控制器命令队列中的所述第一存储器命令的优先级设置为高优先级或低优先级。
4.另一方面,本技术提供了一种包括指令的非暂时性计算机可读存储媒体,所述指令在由处理装置执行时使所述处理装置:接收对应于存储器子系统的一组存储器装置的第一存储器命令;将所述第一存储器命令添加到高速缓存控制器命令队列,使得所述高速缓存控制器命令队列存储包含所述第一存储器命令的第一组存储器命令;以及基于(1)所述第一存储器命令是第一类型还是第二类型以及(2)所述第一存储器命令的来源,将所述高速缓存控制器命令队列中的所述第一存储器命令的优先级设置为高优先级或低优先级。
5.另一方面,本技术提供了一种系统,其包括:存储器装置;以及处理装置,其可操作地与所述存储器装置耦合,以:接收对应于所述存储器装置的第一存储器命令;将所述第一存储器命令添加到高速缓存控制器命令队列,使得所述高速缓存控制器命令队列存储包含所述第一存储器命令的第一组存储器命令;基于(1)所述第一存储器命令是第一类型还是第二类型以及(2)所述第一存储器命令的来源中的一或多个,将所述高速缓存控制器命令队列中的所述第一存储器命令的优先级设置为高优先级或低优先级;确定所述第一存储器命令对存储在所述高速缓存控制器命令队列中的所述第一组存储器命令中的一或多个存储器命令的依赖性;以及基于确定的与所述第一存储器命令的依赖性调整所述一或多个存储器命令的优先级,其中基于确定的依赖性调整所述一或多个存储器命令的优先级包含当所述第一存储器命令具有高优先级时,将所述一或多个存储器命令中的每个存储器命令的优先级设置为高优先级。
附图说明
6.从以下给出的详细描述和从本公开的各种实施例的附图,将更全面地理解本公开。然而,附图不应被视为将本公开限于特定实施例,而是仅用于解释和理解。
7.图1图示了根据本公开的一些实施例的包含存储器子系统的实例计算系统。
8.图2是根据本公开的一些实施例的用于管理存储器命令的发出和履行的实例方法的流程图。
9.图3是根据本公开的一些实施例的实例存储器配置。
10.图4是根据本公开的一些实施例的在基于依赖性更新优先级指示之后的实例存储器配置。
11.图5是根据本公开的一些实施例的在向动态随机存取存储器(dram)控制器发出低优先级存储器命令之后的实例存储器配置。
12.图6是根据本公开的一些实施例的在向dram控制器发出高优先级存储器命令之后的实例存储器配置。
13.图7是根据本公开的其它实施例的用于管理存储器命令的发出和履行的另一实例方法的流程图。
14.图8是本公开的实施例可以在其中操作的实例计算机系统的框图。
具体实施方式
15.本公开的各方面涉及用于存储器操作的有效加扰和编码,包含存储器子系统中的回写过程。存储器子系统可以是存储装置、存储器模块或存储装置和存储器模块的混合。下面结合图1描述存储装置和存储器模块的实例。通常,主机系统可以利用包含一或多个组件(诸如存储数据的存储器装置)的存储器子系统。主机系统可以提供待存储在存储器子系统处的数据,并且可以请求从存储器子系统检索数据。
16.存储器装置可以是非易失性存储器装置。非易失性存储器装置是一或多个裸片的封装。非易失性存储器装置的一个实例是负与(nand)存储器装置。下面结合图1描述非易失性存储器装置的其它实例。可将封装中的裸片分配给一或多个信道,用于与存储器子系统控制器进行通信。每个管芯可以由一或多个平面组成。平面可以被分组为逻辑单元(lun)。对于某些类型的非易失性存储器装置(例如,nand存储器装置),每个平面由一组物理块组成,这些物理块是存储数据的存储器单元组。单元是存储信息的电子电路。
17.根据单元类型,单元可以存储一或多个位的二进制信息,并且具有与正存储的位数相关的各种逻辑状态。逻辑状态可以由二进制值(诸如“0”和“1”)或此类值的组合来表示。存在各种类型的单元,诸如单级单元(slc)、多级单元(mlc)、三级单元(tlc)和四级单元(qlc)。例如,slc可以存储一位信息并且具有两种逻辑状态。
18.存储器子系统提供主机系统对数据的存取。具体地,主机系统可以请求从一组存储器装置读取数据或向其写入数据。此后,存储器子系统处理这些请求,并且响应于读取存储器请求(有时称为读取命令或读取存储器命令),将所请求的数据提供给主机系统,或者响应于写入存储器请求(有时称为写入命令或写入存储器命令),将所提供的数据写入存储器装置。为了有效地处理来自主机系统的请求,存储器子系统可以依赖于一组高速缓存。具体地,指定或当前存储在一组高延迟存储器装置(有时称为后备存储)中的数据可以存储在
低延迟高速缓存存储中。因此,存储器子系统可以从高速缓存存储存取数据(例如,从高速缓存存储读取数据或将数据写入到高速缓存存储,其将最终被刷新到存储器装置),而不是直接从高延迟存储器装置存取数据。由于与存储器装置相比,高速缓存存储提供较低的延迟(例如,较低的读取和/或写入时间),因此存储器子系统可以通过依赖于高速缓存存储以高效的方式处理主机系统请求。此外,为了保持存储器操作的并发性,存储器子系统可以高速缓存请求,直到存储器子系统有机会发出和履行请求。
19.上述与使用高速缓存有关的效率的某些部分对于主机系统将是显而易见的,而某些部分将不是显而易见的。即,主机系统将直接受益于相对于源自主机系统的读取请求的提高的效率,因为与直接从高延迟存储器装置存取数据相比,当使用低延迟高速缓存存储时,存储器子系统将以减少的延迟提供响应于这些读取请求的数据。这种响应于源自主机系统的读取请求的提高的速度允许主机系统因此提高依赖于所请求的数据的处理速度。虽然与源自主机系统的读取请求相关联的更高的读取效率为主机系统提供了效率改进,但是更高的写入效率对于主机系统通常并不明显,因为写入请求通常不影响对主机系统的处理。即,当存储器子系统履行写入请求时,主机系统上的处理活动通常不会受到影响,因为存储器子系统在进一步进行处理活动之前不等待写入请求的履行。此外,对处理源自存储器子系统内的读取或写入请求(例如,作为从高速缓存存储到存储器装置的驱逐和清除的结果的读取请求或作为预取的结果的填充)的效率改进对于主机系统通常将不明显,因为这些请求对于主机系统是透明的。
20.一些存储器子系统可以以存储器子系统接收这些请求的次序将存储器请求存储在高速缓存存储命令队列中。存储器子系统可以考虑请求之间的依赖性,使得相关请求(例如,存取来自存储器装置或高速缓存的相同扇区、行或其它存取单元的请求)一起或相继发出。然而,即使考虑到依赖性,基于接收次序发出请求也不能为主机系统提供显著的性能改进,包含改进的qos。即,这些技术对每种类型的存储器请求(例如,读取请求和写入请求)进行相同的处理,而不考虑其来源,从而不会优先考虑改进主机系统的qos。
21.本公开的各方面通过对源自主机系统的读取请求进行优先级排序来解决上述和其它缺陷,以向主机系统提供更大的处理改进(例如,减少源自主机系统的读取请求的处理)。具体地,代替以存储器子系统接收或生成请求的次序来处理存储器请求,存储器子系统可以在处理源自主机系统的读取请求时优先于处理其它未决的存储器请求(例如,来自主机系统的写入请求和来自其它源的读取和写入请求),同时仍然遵循存储器请求依赖性。具体地,当存储器子系统的高速缓存控制器接收到存储器请求时,高速缓存控制器将存储器请求添加到高速缓存控制器命令队列中。高速缓存控制器命令队列将存储器请求与优先级指示一起存储,优先级指示指示存储器请求是高优先级还是低优先级请求。如果(1)存储器请求是从主机系统接收的读取请求或(2)高优先级请求依赖于新接收到的请求(例如,从存储器装置或高速缓存存取相同扇区、行或其它存取单元的请求),则高速缓存控制器将新接收到的请求设置为高优先级。考虑到存储器请求的优先级,高速缓存控制器可以周期性地迭代高速缓存控制器命令队列以选择用于向动态随机存取存储器(dram)控制器发出的存储器命令。dram控制器可以基于高优先级标志(即,当设置高优先级标志时,dram控制器对高优先级命令进行优先级排序),通过对高优先级请求(包含从主机系统接收的读取请求)进行有选择的优先级排序来发出和履行接收到的存储器请求。为了确保存储器子系统
不忽略低优先级请求,当两种类型的请求均可用时,高速缓存控制器可以交替地向dram控制器发出低优先级请求和高优先级请求(以相等或不相等的方式轮流发出)。然而,通过设置在dram控制器中可能未完成的低优先级存储器请求的最大数目,高速缓存控制器可以确保低优先级请求不会在dram控制器中被过度表示。如果满足dram控制器中可能未完成的低优先级存储器请求的最大数目,则高速缓存控制器将不会发出低优先级请求,直到履行低优先级请求并因此从dram控制器中移除。
22.以上概述的存储器请求策略通过以下方式来减少主机读取请求的延迟:(1)较早地发出主机读取请求和主机读取命令所依赖的请求,而不是根据年龄发出它们,(2)通过使用最大低优先级值(即,在dram控制器中可能未完成的低优先级存储器请求的最大数目),在dram控制器始终存在高优先级请求(例如,来自主机系统的读取请求)的可用性,以及(3)经由高优先级标志选择性地启用dram控制器中的优先级逻辑。下面将更详细地描述的该设计可以在源自主机系统的读取请求的平均延迟方面提供多达77.5%的改进。
23.图1图示了根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可以包含媒体,诸如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或此类媒体的组合。
24.存储器子系统110可以是存储装置、存储器模块或存储装置和存储器模块的混合。存储装置的实例包含固态驱动器(ssd)、闪存驱动器、通用串行总线(usb)闪存驱动器、嵌入式多媒体控制器(emmc)驱动器、通用闪存(ufs)驱动器、安全数字(sd)卡和硬盘驱动器(hdd)。存储器模块的实例包含双列直插存储器模块(dimm)、小外形dimm(so-dimm)和各种类型的非易失性双列直插存储器模块(nvdimm)。
25.计算系统100可以是计算装置,诸如台式计算机、膝上型计算机、网络服务器、移动装置、车辆(例如,飞机、无人驾驶飞机、火车、汽车或其它运输工具)、物联网(iot)启用装置、嵌入式计算机(例如,包括在车辆、工业设备或联网商业装置中的计算机),或包含存储器和处理装置的此类计算装置。
26.计算系统100可以包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1图示了耦合到一个存储器子系统110的主机系统120的一个实例。如本文所使用的,“耦合到”或“与
……
耦合”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有介入组件),无论是有线的还是无线的,包含诸如电的、光的、磁的等连接。
27.主机系统120可以包含处理器芯片组和由处理器芯片组执行的软件栈。处理器芯片组可以包含一或多个核、一或多个高速缓存、存储器控制器(例如,nvdimm控制器)和存储协议控制器(例如,pcie控制器、sata控制器)。主机系统120使用存储器子系统110(例如)将数据写入到存储器子系统110并从存储器子系统110读取数据。
28.主机系统120可以经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附接(sata)接口、高速外围组件互连(pcie)接口、通用串行总线(usb)接口、光纤通道、串行附接scsi(sas)、小型计算机系统接口(scsi)、双倍数据速率(ddr)存储器总线、双列直插存储器模块(dimm)接口(例如,支持双倍数据速率(ddr)的dimm插槽接口)、开放nand闪存接口(onfi)、双倍数据速率(ddr)、低功率双倍数据速率(lpddr)或任何其它接口。物理主机接口可用于在主机系统120与存储器子系统110之间传
输数据。当存储器子系统110通过pcie接口与主机系统120耦合时,主机系统120还可以利用非易失性存储器主机控制器接口规范(nvme)接口来存取组件(例如,存储器装置130)。物理主机接口可以提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据和其它信号的接口。图1图示了作为实例的存储器子系统110。通常,主机系统120可以经由同一通信连接、多个单独的通信连接和/或通信连接的组合来存取多个存储器子系统。
29.存储器装置130、140可以包括不同类型的非易失性存储器装置和/或易失性存储器装置的任意组合。易失性存储器装置(例如,存储器装置140)可为(但不限于)随机存取存储器(ram),诸如动态随机存取存储器(dram)和同步动态随机存取存储器(sdram)。
30.非易失性存储器装置(例如,存储器装置130)的一些实例包含与非(nand)型快闪存储器和原位写入存储器,诸如三维交叉点(“3d交叉点”)存储器装置,其为非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的变化来执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可执行原位写入操作,其中可在不预先擦除非易失性存储器单元的情况下编程非易失性存储器单元。nand型快闪存储器包含(例如)二维nand(2d nand)和三维nand(3d nand)。
31.尽管描述了非易失性存储器装置,诸如nand型存储器(例如,2d nand、3dnand)和非易失性存储器单元的3d交叉点阵列,但存储器装置130可以基于任何其它类型的非易失性存储器,诸如只读存储器(rom)、相变存储器(pcm)、自选择存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(fetram)、铁电随机存取存储器(feram)、磁随机存取存储器(mram)、自旋转移力矩(stt)-mram、导电桥接ram(cbram)、电阻式随机存取存储器(rram)、基于氧化物的rram(oxram)、负或(nor)快闪存储器和电可擦除可编程只读存储器(eeprom)
32.存储器子系统控制器115(或为简单起见,控制器115)可以与存储器装置130通信以执行诸如在存储器装置130处读取数据、写入数据或擦除数据的操作和其它此类操作(例如,响应于由控制器115在命令总线上调度的命令)。存储器子系统控制器115可以包含硬件,诸如一或多个集成电路和/或分立组件、缓冲存储器或其组合。硬件可以包含具有专用(即,硬编码)逻辑的数字电路以执行本文描述的操作。存储器子系统控制器115可以是微控制器、专用逻辑电路(例如,现场可编程门阵列(fpga)、专用集成电路(asic)等)或另一合适的处理器。
33.存储器子系统控制器115可以包含经配置以执行存储在本地存储器119中的指令的处理装置117(处理器)。在所图示的实例中,存储器子系统控制器115的本地存储器119包含嵌入式存储器,其经配置以存储用于执行控制存储器子系统110的操作的各种过程、操作、逻辑流程和例行程序的指令,包含处理存储器子系统110与主机系统120之间的通信。
34.在一些实施例中,本地存储器119可以包含存储存储器指针、获取数据等的存储器寄存器。本地存储器119还可以包含用于存储微代码的只读存储器(rom)。虽然图1中的实例存储器子系统110被图示为包含存储器子系统控制器115,但是在本公开的另一实施例中,存储器子系统110不包括存储器子系统控制器115,而是可以依赖于外部控制(例如,由外部主机提供,或者由与存储器子系统分离的处理器或控制器提供)。
35.通常,存储器子系统控制器115可以从主机系统120接收命令或操作,并且可以将
命令或操作转换成指令或适当的命令,以实现对存储器装置130和/或存储器装置140的所需存取。存储器子系统控制器115可以负责其它操作,诸如损耗均衡操作、垃圾收集操作、错误检测及错误校正码(ecc)操作、加密操作、高速缓存操作,以及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(lba)、名称空间)与物理地址(例如,物理块地址)之间的地址转换。存储器子系统控制器115可以进一步包含主机接口电路以经由物理主机接口与主机系统120通信。主机接口电路可以将从主机系统接收的命令转换成命令指令以存取存储器装置130和/或存储器装置140,以及将与存储器装置130和/或存储器装置140相关联的响应转换成用于主机系统120的信息。
36.存储器子系统110还可以包含未示出的附加电路或组件。在一些实施例中,存储器子系统110可以包含高速缓存或缓冲器(例如,dram)和地址电路(例如,行解码器和列解码器),其可以从存储器子系统控制器115接收地址并解码地址以存取存储器装置130。
37.在一些实施例中,存储器装置130包含本地媒体控制器135,其与存储器子系统控制器115一起操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可以在外部管理存储器装置130(例如,在存储器装置130上执行媒体管理操作)。在一些实施例中,存储器装置130是受管存储器装置,其是与本地控制器(例如,本地控制器135)组合的原始存储器装置,用于在同一存储器装置封装内进行媒体管理。受管存储器装置的实例是受管nand(mnand)装置。
38.存储器子系统110包含高速缓存控制器142和dram控制器144(例如,低延迟存储器控制器),其可以选择性地发出和履行从主机系统120发出的读取请求/命令,以提高对主机系统120的服务质量(qos)(例如,减少与完成源自主机系统120的读取请求相关的延迟)。在一些实施例中,控制器115包含高速缓存控制器142和/或dram控制器144的至少一部分。例如,控制器115可以包含处理器117(处理装置),其经配置以执行存储在本地存储器119中的指令,以执行本文描述的操作。在一些实施例中,高速缓存控制器142和/或dram控制器144是主机系统110、应用程序或操作系统的一部分。
39.高速缓存控制器142和/或dram控制器144可以选择性地发出并履行从主机系统120发出的读取请求,以提高对主机系统120的qos。下文描述关于高速缓存控制器142和/或dram控制器144的操作的进一步细节。
40.图2是根据本公开的一些实施例的用于管理存储器命令的发出和履行的实例方法200的流程图。方法200可以由处理逻辑执行,处理逻辑可以包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法200由图1的高速缓存控制器142和/或dram控制器144执行。尽管以特定的顺序或次序示出,但是除非另有说明,可以修改过程/操作的次序。因此,所图示的实施例应仅理解为实例,且所图示的过程/操作可以以不同次序执行,且一些过程/操作可以并行执行。另外,在各种实施例中可以省略一或多个过程/操作。因此,并非每个实施例都需要所有的过程/操作。其它流程也是可能的。
41.将结合包含图3的存储器配置300的若干其它支持附图来描述图2的方法200。然而,方法200不限于这些支持附图中所示的实施例,而是这些支持附图用于说明的目的。
42.尽管使用dram控制器进行了描述,但是存储器配置300和计算系统100通常包含高延迟存储器和低延迟存储器(即,关于执行读取和写入,高延迟存储器具有比低延迟存储器
更高的延迟)。在存储器配置300中,存储器装置130和/或140(例如,后备存储308)是高延迟存储器,而高速缓存存储302是低延迟存储器。因此,特定存储器类型(例如,dram)的使用是出于说明性目的。
43.如图2所示,方法200可以在操作202处开始。在操作202处,处理装置确定是否已接收或以其它方式检测到存储器命令(有时称为存储器请求、命令或请求)。例如,在图3的存储器配置300中,处理装置可以确定存储器命令312是否已由高速缓存控制器142接收。存储器命令312可以为内部生成的命令(例如,存储器命令312由存储器子系统110生成)或外部生成的命令(例如,从主机系统120接收存储器命令312)。例如,关于内部生成的命令,存储器子系统110可以触发(1)填充操作,其中来自后备存储308(例如,存储器装置130/140)的数据被添加到高速缓存存储302,和/或(2)驱逐或清除操作,其中高速缓存存储302中的脏数据被从高速缓存存储302驱逐到后备存储308。在一个实施例中,高速缓存控制器142可以触发(1)直接存储器存取(dma)填充引擎304来执行填充操作,包含将写入存储器命令312传递到高速缓存控制器142,使得来自后备存储308的数据可以被写入/填充到高速缓存存储302中,和/或(2)dma驱逐/清除引擎306来执行驱逐或清除操作,包含将读取命令传递到高速缓存控制器142,使得来自高速缓存存储302的数据被读取并可被驱逐和写入到后备存储308。就外部生成的存储器命令312而言,主机系统120可以传输(1)读取存储器命令312以从后备存储308请求数据,数据也可以由存储器子系统110高速缓存(例如,在高速缓存存储302中)和/或(2)写入存储器命令312以请求将数据写入后备存储308,数据也可以在写入后备存储308之前由存储器子系统110高速缓存。响应于处理装置在操作202处确定接收到存储器命令312,方法200进行到操作204。
44.在操作204处,处理装置将新接收到的存储器命令312添加到高速缓存控制器命令队列310。具体地,高速缓存控制器命令队列310存储尚未发出/履行的存储器命令312,并且处理装置以存储器命令312被高速缓存控制器142接收的次序将新接收到的存储器命令312添加到高速缓存控制器命令队列310。因此,高速缓存控制器命令队列310以接收存储器命令312的次序包含接收到的存储器命令312,其尚未发出给dram控制器144以供履行。例如,在图3的实例中,高速缓存控制器142在命令c5之前接收命令c4,在命令c6之前接收命令c5,并且在命令c7之前接收命令c6。出于说明的目的,命令c7是处理装置在操作202处确定接收的且处理装置在操作204处添加到高速缓存控制器命令队列310的新接收到的存储器命令312。
45.除了以其被接收的次序来存储存储器命令312之外,高速缓存控制器命令队列310还跟踪未决/未完成的存储器命令312的优先级。具体地,高速缓存控制器命令队列310包含优先级指示314,其指示相关联的存储器命令312是高优先级(h)还是低优先级(l)。如下文将更详细论述,通常在低优先级存储器命令312之前选择高优先级存储器命令312以用于向dram控制器144发出/履行。在一个实施例中,当在操作204处将存储器命令312添加到高速缓存控制器命令队列310时,存储器命令312最初被分配低优先级。然而,如下所述,在其它实施例中,处理装置可以在稍后时间设置新接收到的存储器命令312的优先级。
46.在操作206处,处理装置基于新接收到的存储器命令312更新依赖性跟踪器316。具体地,依赖性跟踪器316跟踪所有未决/未完成的存储器命令312(即,尚未发出和履行的存储器命令312)的相互依赖性。在一个实施例中,当命令以高速缓存存储302或后备存储308
的相同扇区、行或其它存取单元为目标时,处理装置检测命令之间的依赖性。响应于依赖性跟踪器316确定新接收到的存储器命令312依赖于先前接收到的存储器命令312,依赖性跟踪器316记录该依赖性。例如,如图3所示,存储器命令c4、c5、c6和c7是未决存储器命令312,并且如上所述,存储器命令c7是新接收的。在该实例中,存储器命令c5不与任何其它存储器命令312共享相互依赖性(即,存储器命令c5不依赖于另一存储器命令312且另一存储器命令312不依赖于存储器命令c5)。相反,存储器命令c4、c6和c7是相互依赖的。在一个实施例中,依赖性跟踪器316可以基于与存储器命令312相关联的(1)高速缓存存储302或(2)后备存储308的区域或部分来确定依赖性。例如,高速缓存存储302可以是多路关联高速缓存。在该实例中,虽然存储器命令c4和存储器命令c6可以不参考相同地址(不同逻辑和/或物理地址),但这两个存储器命令312可以与高速缓存存储302的相同区域(有时称为扇区或存取单元)相关联(例如,存储器命令c4和c6所参考的地址与高速缓存存储302的至少部分重叠区域相关联)。例如,高速缓存存储302的该共享区域可以是一或多个高速缓存行。依赖性跟踪器316基于该关联/相似性指示存储器命令c6依赖于存储器命令c4。同样,在依赖性跟踪器316确定存储器命令c7与高速缓存存储302的与存储器命令c4和/或c6相同的区域相关联时,依赖性跟踪器316指示存储器命令c7与存储器命令c4和/或c6相互依赖。例如,如图3所示,存储器命令c7依赖于存储器命令c6,而存储器命令c6依赖于存储器命令c4。
47.在操作208处,处理装置确定新接收到的存储器命令312是否为已从主机系统120接收的读取存储器命令312。如上所述,新接收到的存储器命令312可以是多种类型的并且来自多个源。例如,新接收到的存储器命令312可以是读取存储器命令或写入存储器命令。此外,新接收到的存储器命令312可以从主机系统120接收或可以由存储器子系统110内部生成(例如,作为填充、驱逐或清除操作的一部分)。响应于处理装置确定新接收到的存储器命令312不是来自主机系统120的读取存储器命令312(例如,是写入存储器命令312或内部生成的读取存储器命令312),方法200进行到操作210。
48.在操作210处,处理装置将新接收到的存储器命令312的优先级设置为低优先级。具体地,在操作210处,处理装置将高速缓存控制器命令队列310中新接收到的存储器命令312的优先级指示314设置为低优先级。例如,图3示出了当该存储器命令312不是来自主机系统120的读取存储器命令312且因此处理装置在操作210处将存储器命令c7的优先级设置为低优先级(即,处理装置将存储器命令c7的优先级指示314设置为低优先级(l))时新接收的存储器命令c7。如下文将描述,该低优先级可以基于稍后接收到的依赖于存储器命令c7的高优先级存储器命令312的依赖性而改变。
49.返回到操作208,响应于处理装置确定新接收到的存储器命令312是来自主机系统120的读取存储器命令312,方法200进行到操作212。在操作212处,处理装置将新接收到的存储器命令312的优先级设置为高优先级。具体地,在操作212处,处理装置将高速缓存控制器命令队列310中新接收到的存储器命令312的优先级指示314设置为高优先级(h)。该高优先级将有助于确保来自主机系统120的读取存储器命令312通常优先于较低优先级存储器命令312,其通过减少用于履行源自主机系统120的读取存储器命令312的延迟来提高相对于主机系统120的性能。
50.在操作214处,处理装置将高速缓存控制器命令队列310中的新接收到的存储器命令312(在操作212处被设置为高优先级)所依赖的未决/未完成的存储器命令312也设置为
高优先级。具体地,在操作214处,处理装置(例如,高优先级启用逻辑328)将高速缓存控制器命令队列310中的新接收到的存储器命令312所依赖的未决存储器命令312的优先级指示314设置为高优先级(h)。例如,当新接收到的存储器命令312是存储器命令c7,并且存储器命令c7是来自主机系统120的读取存储器命令312时,使得处理装置在操作212处将存储器命令c7的优先级指示314设置为高优先级,处理装置在操作214将存储器命令c4和c6的优先级指示314也设置为高优先级,如图4所示。
51.在操作214、操作210之后,或者在处理装置确定在操作202处未接收到存储器命令312之后,方法200进行到操作216。在操作216处,处理装置确定触发事件是否已经发生,这将指示需要从高速缓存控制器142向dram控制器144发出存储器命令312。例如,触发事件可以是某个时间段的流逝,使得高速缓存控制器142以规定的间隔向dram控制器144发出存储器命令312。在另一实施例中,触发事件可以是dram控制器命令队列318的状态,其在从高速缓存控制器142发出它们之后但在履行存储器命令312之前(即,在具有读取优先级的命令选择逻辑324根据对应的存储器命令312从高速缓存存储302读取数据或向其写入数据之前)存储存储器命令312。例如,检测触发事件可以包含处理装置检测dram控制器命令队列318具有用于额外存储器命令312的可用条目/空间。
52.尽管上述操作216发生在操作202、210和214中的一个完成之后或作为其完成的结果,但是可以独立于操作202至214(包含操作202、210和/或214)执行操作216和一或多个后续操作218至226。以这种方式,独立地执行操作202至214与操作216至226,包含在可能至少部分重叠的时间段内执行,这将在下面进一步描述。
53.响应于处理装置在操作216处确定未发生触发事件,方法200返回到操作202以确定是否已接收到存储器命令312。相反,响应于处理装置在操作216处确定触发事件已经发生,方法200进行到操作218。
54.在操作218处,处理装置确定由高速缓存控制器142向dram控制器144发出的最后一或多个存储器命令312是否为高优先级存储器命令312。例如,高速缓存控制器142可连同由高速缓存控制器142向dram控制器144发出的一或多个存储器命令312中的每一个一起存储并保持优先级指示314。例如,优先级指示存储器可以包含单个位,其被设置为一个值/状态(例如,设置或值“1”)以指示由高速缓存控制器142向dram控制器144发出的最后存储器命令312是高优先级存储器命令312,或被设置为另一值/状态(例如,未设置或值“0”)以指示由高速缓存控制器142向dram控制器144发出的最后存储器命令312是低优先级存储器命令312。该检查允许处理装置在适当时轮流发出高优先级和低优先级存储器命令312。响应于处理装置确定由高速缓存控制器142向dram控制器144发出的最后存储器命令312是高优先级存储器命令312,方法200进行到操作220。
55.在操作220处,处理装置确定dram控制器命令队列318中的低优先级存储器命令312的数目是否满足阈值(例如,等于未完成的低优先级存储器命令的最大数目320)。具体地,未完成的低优先级命令的最大数目320指示在任何时间点dram控制器命令队列318中所允许的低优先级存储器命令312的最大数目。如图3和图4所示,dram控制器命令队列318是类似于高速缓存控制器命令队列310的队列。具体地,dram控制器命令队列318包含以它们被高速缓存控制器142接收的次序存储的存储器命令312和优先级指示314。如下文将描述,当存储器命令312由高速缓存控制器142的具有优先级的命令选择逻辑322向dram控制器
144发出时,存储器命令312从高速缓存控制器命令队列310添加到dram控制器命令队列318,包含相关联的优先级指示314。使用未完成的低优先级存储器命令的最大数目320作为阈值确保尽管存在大量先前的低优先级存储器命令312,但高优先级存储器命令312的最小数目仍可进入或以其它方式处于dram控制器命令队列318内。例如,基于图3所示的实例或图4所示的实例,当未完成的低优先级存储器命令的最大数目320被设置为三时,处理装置在操作220处确定dram控制器命令队列318中的低优先级存储器命令312的数目不等于未完成的低优先级存储器命令的最大数目320。然而,当未完成的低优先级存储器命令的最大数目320被设置为二时,处理装置在操作220处确定dram控制器命令队列318中的低优先级存储器命令312的数目等于未完成的低优先级存储器命令的最大数目320。
56.响应于处理装置确定dram控制器命令队列318中的低优先级存储器命令312的数目不满足阈值,例如,不等于未完成的低优先级命令的最大数目320,方法200进行到操作222。在操作222处,处理装置从高速缓存控制器142的高速缓存控制器命令队列310向dram控制器144的dram控制器命令队列318发出最早的低优先级存储器命令312。例如,在图4的实例中,在操作222处,具有优先级的命令选择逻辑322向dram控制器命令队列318发出存储器命令c5,如图5所示。
57.响应于处理装置确定(1)dram控制器命令队列318中的低优先级存储器命令312的数目满足阈值(例如,等于未完成的低优先级命令的最大数目320),或(2)由高速缓存控制器142向dram控制器144发出的最后存储器命令312不是高优先级存储器命令312(即,由高速缓存控制器142向dram控制器144发出的最后存储器命令312是低优先级存储器命令312),方法200进行到操作224。在操作224处,处理装置从高速缓存控制器142的高速缓存控制器命令队列310向dram控制器144的dram控制器命令队列318发出最早的高优先级存储器命令312。例如,在图4的实例中,在操作224处,具有优先级的命令选择逻辑322向dram控制器命令队列318发出存储器命令c4,如图6所示。
58.在操作222处发出低优先级存储器命令312或在操作224处发出高优先级存储器命令312之后,方法200进行到操作226。在操作226处,处理装置从dram控制器命令队列318发出/履行命令312,其中对高优先级存储器命令312进行优先级排序。具体地,具有读取优先级的命令选择324从dram控制器命令队列318发出存储器命令312,其中对dram控制器命令队列318中具有指示存储器命令312是高优先级存储器命令312的优先级指示314的命令312进行优先级排序。从dram控制器命令队列318发出命令可以包含(1)从高速缓存存储302读取数据,使得数据可以返回到对应的读取存储器命令312的请求方(例如,主机系统120或dma驱逐/清除引擎306)或(2)将数据写入到高速缓存存储302以履行写入存储器命令312(例如,来自主机系统120或dma填充引擎304的写入存储器命令312)。在一个实施例中,读取优先级启用逻辑326选择性地启用和禁用具有读取优先级的命令选择324中的读取优先级。具体地,读取优先级启用逻辑326可以启用具有读取优先级的命令选择324,以使dram控制器144中的高优先级存储器命令312优先于低优先级存储器命令312,或禁用该特征,使得具有读取优先级的命令选择324以从高速缓存控制器142接收存储器命令312的次序或存储器命令312的总年龄(即,存储器命令312由高速缓存控制器142接收的次序)发出存储器命令312。在一个实施例中,基于每个接收到的存储器命令312选择性地启用读取优先级启用逻辑326。例如,高速缓存控制器142可以设置传递到dram控制器144的每一存储器命令312中
的一或多个位/字段,以指示对于存储器命令312是启用还是禁用读取优先级启用逻辑326。
59.以上概述的存储器请求策略通过以下方式来减少源自主机系统120的读取存储器命令312的延迟:(1)较早地发出源自主机系统120的读取存储器命令312和这些主机读取存储器命令312所依赖的存储器命令312,而不是根据年龄发出它们,(2)通过使用最大低优先级值(即,在dram控制器144中可能未完成的低优先级存储器请求的最大数目),在dram控制器144始终存在高优先级存储器命令312(例如,来自主机系统120的读取存储器命令312)的可用性,以及(3)经由高优先级标志选择性地启用dram控制器144中的优先级逻辑。如上所述,该设计可以在源自主机系统120的读取存储器命令312的平均延迟方面提供多达77.5%的改进。
60.转到图7,该图示出了根据本公开的其它实施例的用于管理存储器命令的发出和履行的实例方法700的流程图。方法700可以由处理逻辑执行,处理逻辑可以包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法700由图1的高速缓存控制器142和/或dram控制器144执行。尽管以特定的顺序或次序示出,但是除非另有说明,可以修改过程/操作的次序。因此,所图示的实施例应仅理解为实例,且所图示的过程/操作可以以不同次序执行,且一些过程/操作可以并行执行。另外,在各种实施例中可以省略一或多个过程/操作。因此,并非每个实施例都需要所有的过程/操作。其它流程也是可能的。
61.如图7中所示,方法700可以在操作702处开始,其中处理装置接收对应于存储器子系统110的一组存储器装置130/140的存储器命令312。例如,高速缓存控制器142可以接收对应于存储器子系统110的后备存储308(例如,存储器装置130/140)的存储器命令c7。存储器命令312可为内部生成的存储器命令(例如,存储器命令312由存储器子系统110生成)或外部生成的命令(例如,存储器命令312从主机系统120接收)。因此,存储器命令312可以具有不同的来源,包含主机系统120和存储器子系统110。此外,存储器命令312可以是各种类型,包含读取存储器命令类型和写入存储器命令类型。
62.在操作704处,处理装置将在操作702处接收到的存储器命令312(即,接收到的存储器命令312)添加到高速缓存控制器命令队列310,使得高速缓存控制器命令队列310存储一组存储器命令312,包含接收到的存储器命令312。例如,高速缓存控制器142可以将存储器命令c7添加到高速缓存控制器命令队列310,使得高速缓存控制器命令队列310存储命令c4、c5、c6和c7,如图3所示。
63.在操作706处,基于(1)接收到的存储器命令312是读取存储器命令类型还是写入存储器命令类型以及(2)接收到的存储器命令312的来源,处理装置将高速缓存控制器命令队列310中的接收到的存储器命令312的优先级设置为高优先级或低优先级。例如,当接收到的存储器命令312是读取存储器命令312并且源自主机系统120时,在操作706处,高速缓存控制器142可以将接收到的存储器命令312的优先级指示314设置为高优先级(h)。
64.图8示出了计算机系统800的实例机器,其中可以执行用于使机器执行本文所讨论的任何一或多个方法的一组指令。在一些实施例中,计算机系统800可以对应于主机系统(例如,图1的主机系统120),其包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1的高速缓存控制器142和/或dram控制器144的操作)。在替代实施例中,机器可以连接(例如,联网)到lan、内
联网、外联网和/或因特网中的其它机器。机器可以在客户机-服务器网络环境中以服务器或客户机的身份、作为对等(或分布式)网络环境中的对等机,或者作为云计算基础设施或环境中的服务器或客户机运行。
65.机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、web设备、服务器、网络路由器、交换机或网桥、或者能够执行指定所述机器要采取的动作的一组指令(顺序或以其它方式)的任何机器。此外,尽管图示了单个机器,但是术语“机器”还应被视为包含单独或联合执行一组(或多组)指令以执行本文所讨论的任何一或多个方法的机器的任何集合。
66.实例计算机系统800包含处理装置802、主存储器804(例如,只读存储器(rom)、快闪存储器、动态随机存取存储器(dram)(诸如同步dram(sdram)或rambus dram(rdram)等))、静态存储器806(例如,闪速存储器、静态随机存取存储器(sram)等),以及经由总线830彼此通信的数据存储系统818。
67.处理装置802表示一或多个通用处理装置,诸如微处理器、中央处理单元等。更具体地,处理装置可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器、或实现其它指令集的处理器,或实现指令集组合的处理器。处理装置802还可为一或多个专用处理装置,诸如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等。处理装置802经配置以执行用于执行本文讨论的操作和步骤的指令826。计算机系统800还可以包含通过网络820通信的网络接口装置808。
68.数据存储系统818可以包含机器可读存储媒体824(也被称为计算机可读媒体),其上存储了体现本文描述的任何一或多个方法或功能的一组或多组指令826或软件。在计算机系统800执行指令826期间,指令也可以完全或至少部分地驻留在主存储器804内和/或处理装置802内,主存储器804和处理装置802也构成机器可读存储媒体。机器可读存储媒体824、数据存储系统818和/或主存储器804可以对应于图1的存储器子系统110。
69.在一个实施例中,指令826包含用于实现对应于高速缓存控制器和/或dram控制器(例如,图1的高速缓存控制器142和/或dram控制器144)的功能的指令。虽然机器可读存储媒体824在实例实施例中被示为单个媒体,但是术语“机器可读存储媒体”应当被视为包含存储一组或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应当被视为包含能够存储或编码用于由机器执行的一组指令并且使机器执行本公开的任何一或多种方法的任何媒体。因此,术语“机器可读存储媒体”应被视为包含但不限于固态存储器、光学媒体和磁性媒体。
70.根据对计算机存储器内的数据位的操作的算法和符号表示来呈现前面详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用来最有效地将他们工作的实质传达给本领域的其它技术人员的方式。算法在这里通常被认为是导致所需结果的自相一致的操作序列。操作是需要物理量的物理操纵的那些操作。通常,尽管不是必须的,这些量采用能够被存储、组合、比较和以其它方式操纵的电或磁信号的形式。主要出于通用的原因,将这些信号称为位、值、元素、符号、字符、项、数字等有时被证明是方便的。
71.然而,应当记住,所有这些和类似的术语将与适当的物理量相关联,并且仅仅是应用于这些量的方便标签。本公开可以涉及计算机系统或类似的电子计算装置的动作和过
程,其将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操纵和转换为类似地表示为计算机系统存储器或寄存器或其它此类信息存储系统内的物理量的其它数据。
72.本公开还涉及一种用于执行本文的操作的设备。该设备可以被专门构造用于预期目的,或者它可以包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。例如,计算机系统或诸如控制器115等其它数据处理系统可以响应于其处理器执行包含在存储器或其它非暂时性机器可读存储媒体中的计算机程序(例如,指令序列)而执行计算机实现的方法200和700。此计算机程序可以存储在计算机可读存储媒体中,例如但不限于,包含软盘、光盘、cd-rom和磁光盘的任何类型的盘、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡,或适于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。
73.本文呈现的算法和显示与任何特定的计算机或其它设备没有本质的关系。各种通用系统可以与根据本文的教导的程序一起使用,或者可以证明构造更专用的设备来执行该方法是方便的。各种这些系统的结构将在下面的描述中阐述。另外,不参考任何特定编程语言来描述本公开。应当理解,可以使用多种编程语言来实现如本文所述的本公开的教导。
74.本公开可以提供为计算机程序产品或软件,其可以包含其上存储有指令的机器可读媒体,指令可用于对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,诸如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储媒体、光存储媒体、快闪存储器组件等。
75.在前述说明书中,已参考本公开的特定实例实施例描述本公开的实施例。显然,在不脱离如以下权利要求中阐述的本公开的实施例的更宽精神和范围的情况下,可以对其进行各种修改。因此,说明书和附图被认为是说明性的而不是限制性的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1