增加用于命令调度的带宽的存储器子系统的制作方法

文档序号:25181699发布日期:2021-05-25 14:56阅读:71来源:国知局
增加用于命令调度的带宽的存储器子系统的制作方法

优先权申请

本申请案主张2018年8月24日申请的美国申请案序列号16/111,974的优先权益,所述美国申请案以全文引用的方式并入本文中。

本公开的实施例大体上涉及存储器子系统,且更具体来说,涉及增加用于命令调度策略的带宽的存储器控制器架构,例如具有读取优先级的先就绪、先出现、先服务(“frfcfs”)命令调度策略。



背景技术:

存储器子系统可以是存储系统,如固态驱动器(ssd),且可包含存储数据的一或多个存储器组件。存储器组件可为例如非易失性存储器组件和易失性存储器组件。一般来说,主机系统可以利用存储器子系统以在存储器组件处存储数据且从存储器组件检索数据。

附图说明

根据下文提供的具体实施方式和本公开的各种实施例的附图将更加充分地理解本公开。

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

图2是根据本公开的一些实施例的增加用于命令调度的带宽的实例方法的流程图。

图3是根据本公开的一些实施例的在增加用于命令调度的带宽的方法中执行初始化(图2中的操作202)的实例方法的流程图。

图4是根据本公开的一些实施例的在增加用于命令调度的带宽的方法中调度并发出命令给存储器组件(图2中的操作203)的实例方法的流程图。

图5是根据本公开的一些实施例的在增加用于命令调度的带宽的方法中执行命令选择过程(图4中的操作403)的实例方法的流程图。

图6是根据本公开的一些实施例的在增加用于命令调度的带宽的方法中处理用于读取事务的提升命令或读取命令(图4中的操作409)的实例方法的流程图。

图7是根据本公开的一些实施例的在增加用于命令调度的带宽的方法中处理用于读取-修改-写入(rmw)事务的读取命令(图4中的操作411)的实例方法的流程图。

图8是根据本公开的一些实施例的在增加用于命令调度的带宽的方法中处理写入命令或rmw命令的写入命令(图4中的操作412)的实例方法的流程图。

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

具体实施方式

本公开的方面针对于增加用于命令调度的带宽的存储器子系统。存储器子系统在下文也称为“存储器装置”。存储器子系统的实例是存储系统,如固态驱动器(ssd)。在一些实施例中,存储器子系统是混合式存储器/存储子系统。一般来说,主机系统可利用包含一或多个存储器组件的存储器子系统。主机系统可提供数据以存储于存储器子系统处,且可请求从存储器子系统检索数据。

存储器子系统可包含可存储来自主机系统的数据的多个存储器组件。在努力减少主机系统经历的时延中,所述存储器子系统可实施命令调度策略以将某些命令进行优先级排序。命令调度策略的一个实例是具有读取优先级的先就绪、先出现、先服务(frfcfs)策略为实施具有读取优先级的基础frfcfs策略,存储器子系统将发到敞开行的读取命令插入到最高优先级队列(例如,队列0)中,将发到经关闭行的命令读取插入到第二高的优先级队列(例如,队列-1)中,将发到敞开行的写入命令插入到第三高的优先级队列(例如,队列-2)中,将发到经关闭行的写入命令插入到第四高的优先级队列(例如,队列-3)中。存储器子系统将在第一高的优先级队列和第二高的优先级队列(例如,队列0、队列-1)中搜索就绪命令并且选择发出找到的第一就绪命令。如果在第一高的优先级队列和第二高的优先级队列(例如,队列0、队列-1)中不存在命令,那么存储器子系统在第三高的优先级队列和第四高的优先级队列(例如,队列-2、队列-3)中搜索就绪命令并且选择发出找到的第一就绪命令。

严格强制执行具有读取优先级的frfcfs策略的常规存储器子系统通常产生显著减小总带宽的后果。通常,具有读取优先级的frfcfs策略的严格实施将致使常规存储器子系统清空全部读取命令的命令队列,仅留下命令队列中的写入命令。当稍后的读取命令进入命令队列时,常规存储器子系统将停止发出写入命令以发出读取命令并且接着返回到发出写入命令。从发出写入命令切换到发出读取命令且反之亦然被称为“总线周转”并且存在与总线周转相关联的损失。因此,每当常规存储器子系统单独发出读取命令时,总线周转损失将发生两次,这会减小带宽。类似地,实施具有读取优先级的严格frfcfs策略,常规存储器子系统未能将读取-修改-写入(rmw)的读取命令定址,且因此归因于总线周转损失引起带宽问题。

此外,在实施具有读取优先级的严格frfcfs策略时,当存在与读取命令存取同一库但处于不同行的多个未完成写入命令时,常规存储器子系统必须关闭写入命令的行以敞开与读取命令相关联的行。一旦读取命令完成,常规存储器子系统接着必须关闭与读取命令相关联的行并且重新敞开写入命令的行以继续发出写入命令。与附加行命令相关联的损失会进一步减小总带宽。

另外,实施具有读取优先级的严格frfcfs策略的常规存储器子系统通过将就绪写入命令按其到达命令队列的次序进行优先级排序而不考虑正在存取存储器组件或队列中的其它命令就绪,以此方式发出写入命令。这在如下存取存储器组件时可引起极差总带宽:在写入命令与发到同一分区或库(例如,存储器组件中的存储逻辑单元)的另一命令之间需要很长的持续时间。

本公开的方面通过如下存储器子系统来解决以上和其它缺陷:基于库存取数目对命令进行优先级排序并且实施参数以允许权衡时延与带宽。

当发出就绪写入命令时,存储器子系统考虑在命令队列中的其它命令就绪时发出写入命令以改进带宽的效应。存储器子系统按发到给定库的未完成命令的数目来对发到所述给定库的写入命令进行优先级排序。发到给定库的写入命令的优先级随着发到所述给定库的未完成命令的数目而增加。类似地,存储器子系统也可按发到给定库的未完成命令的数目对与发到所述给定库的rmw命令相关联的读取命令进行优先级排序。与发到给定库的rmw命令相关联的读取命令的优先级随着发到所述给定库的未完成命令的数目而增加。

图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算环境100。存储器子系统110可包含媒体,如存储器组件112a到112n。存储器组件112a到112n可以是易失性存储器组件、非易失性存储器组件或此类组件的组合。在一些实施例中,存储器子系统是存储系统。存储系统的实例是ssd。在一些实施例中,存储器子系统110是混合式存储器/存储装置子系统。一般来说,计算环境100可包含使用存储器子系统110的主机系统120。举例来说,主机系统120可将数据写入到存储器子系统110以及从存储器子系统110读取数据。

主机系统120可以是计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置或包含存储器和处理装置的此类计算装置。主机系统120可包含或耦合到存储器子系统110,使得主机系统120可从存储器子系统110读取数据或将数据写入到存储器子系统110。主机系统120可经由物理主机接口耦合到存储器子系统110。如本文所使用,“耦合到”或“与……耦合”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如,没有中间组件),无论是有线还是无线的,包含例如电连接、光学连接、磁连接等的连接。物理主机接口的实例包含但不限于串行高级技术附件(sata)接口、外围组件互连高速(pcie)接口、通用串行总线(usb)接口、光纤通道、串行连接的scsi(sas)等。物理主机接口可用于在主机系统120与存储器子系统110之间发射数据。当存储器子系统110通过pcie接口与主机系统120耦合时,主机系统120还可利用nvm高速(nvme)接口来存取存储器组件112a到112n。物理主机接口可提供用于在存储器子系统110与主机系统120之间传送控制、地址、数据和其它信号的接口。

存储器组件112a到112n可以包含不同类型的非易失性存储器组件和/或易失性存储器组件的任何组合。非易失性存储器组件的实例包含与非(negative-and;nand)类型快闪存储器。存储器组件112a到112n中的每一个可包含一或多个存储器单元阵列,如单层级单元(slc)或多层级单元(mlc)(例如,三层级单元(tlc)或四层级单元(qlc))。在一些实施例中,特定存储器组件可以包含存储器单元的slc部分和mlc部分两者。存储器单元中的每一个可存储供主机系统120使用的一或多个数据位(例如,数据块)。虽然描述如nand类型快闪存储器的非易失性存储器组件,但存储器组件112a到112n可基于任何其它类型的存储器,如易失性存储器。在一些实施例中,存储器组件112a到112n可以是(但不限于)随机存取存储器(ram)、只读存储器(rom)、动态随机存取存储器(dram)、同步动态随机存取存储器(sdram)、相变存储器(pcm)、磁随机存取存储器(mram)、或非(negative-or;nor)快闪存储器、电可擦除可编程只读存储器(eeprom)以及非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列而基于体电阻的改变来进行位存储。另外,与许多基于闪存的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。此外,存储器组件112a到112n的存储器单元可分组为存储器页或数据块,其可指代用于存储数据的存储器组件的单元。

存储器系统控制器115(下文称为“控制器”)可与存储器组件112a到112n通信以执行操作,例如在存储器组件112a到112n处读取数据、写入数据或擦除数据,以及其它此类操作。控制器115可包含硬件,如一或多个集成电路和/或离散组件、缓冲存储器或其组合。控制器115可以是微控制器、专用逻辑电路(例如,现场可编程门阵列(fpga)、专用集成电路(asic)等)或其它合适的处理器。控制器115可包含被配置成执行存储在本地存储器119中的指令的处理器(处理装置)117。在所说明的实例中,控制器115的本地存储器119包含被配置成存储指令以用于执行控制存储器子系统110的操作(包含处置存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程以及例程的嵌入式存储器。在一些实施例中,本地存储器119可以包含存储器寄存器,其存储存储器指针、提取的数据等。本地存储器119还可以包含用于存储微码的只读存储器(rom)。虽然图1中的实例存储器子系统110已说明为包含控制器115,但在本公开的另一实施例中,存储器子系统110可能不包含控制器115,且可改为依靠(例如由外部主机或由与存储器子系统分离的处理器或控制器提供的)外部控制。

一般来说,控制器115可从主机系统120接收命令或操作且可将所述命令或操作转换成指令或适合的命令以实现对存储器组件112a到112n的所需存取。控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、差错检测和差错校正码(ecc)操作、加密操作、高速缓存操作和在与存储器组件112a到112n相关联的逻辑块地址与物理块地址之间的地址转译。控制器115可另外包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路可将从主机系统接收到的命令转换成命令指令以存取存储器组件112a到112n,以及将与存储器组件112a到112n相关联的响应转换成用于主机系统120的信息。

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

存储器子系统110包含命令控制器113,其可用以基于对应使用率阈值将数据存储于特定存储器组件处。在一些实施例中,控制器115包含命令控制器113的至少一部分。举例来说,控制器115可包含处理器117(处理装置),其被配置成执行存储于本地存储器119中的指令以用于执行本文中所描述的操作。在一些实施例中,命令控制器113是主机系统110、应用程序或操作系统的部分。

命令控制器113可从主机系统120接收命令并且基于命令类型(例如,读取命令、写入命令、与rmw命令相关联的读取命令、与rmw命令相关联的写入等)和对与所述命令相关联的库的库存取的数目来调度所述命令。命令控制器113使用阈值参数进一步调度命令,所述阈值参数允许基于应用需要来权衡时延和带宽。命令控制器113可将阈值参数存储于存储装置(例如,本地存储器119)中。阈值参数包含(i)“最大读取命令老化程度”,其为如下阈值参数:规定读取命令在阻挡存取同一库的全部其它命令之前可保持于命令队列中的时间量;和(ii)“硬性最大读取命令老化程度”,其为如下阈值参数:确立对读取命令置于命令队列中的时间量并且防止在同一通道上发出任何其它命令的硬性限制。阈值参数还包含(iii)“周转之前的最少读取”,其为如下阈值参数:设置在命令控制器113可执行写入到读取周转之前需要处于命令队列中的读取命令最小数目。阈值参数还可包含(iv)“用于读取-修改-写入的最大读取缓冲空间”,其为如下阈值参数:设置可用于读取-修改-写入的读取响应缓冲空间的量。下文描述关于命令控制器113的操作的另外细节。

图2是根据本公开的一些实施例的增加用于命令调度的带宽的实例方法200的流程图。方法200可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法200是由图1的存储器命令控制器113执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,应理解所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,可在各种实施例中省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。

在操作201处,处理装置从主机系统接收命令队列中的命令。所述命令可为例如读取命令、与读取-修改-写入(rmw)命令相关联的读取命令、写入命令、或与rmw命令相关联的写入命令。rmw命令是对于一些存储器组件或系统配置为修改存储器的部分单元所需的命令序列。所需的读取和写入命令序列被称为“读取-修改-写入”(rmw)。在操作202处,处理装置基于所述命令执行初始化。在操作303处,处理装置调度并发出命令队列中的命令。

图3是根据本公开的一些实施例的在增加用于命令调度的带宽的方法中执行初始化(图2中的操作202)的实例方法300的流程图。方法300可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法300是由图1的存储器命令控制器113执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,应理解所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,可在各种实施例中省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。

为执行初始化,在操作301处,处理装置接收命令队列处的命令。在操作302处,处理装置记录命令的进入时间。命令的进入时间是命令进入命令队列的时间。处理装置可基于包含在存储器子系统中的系统定时器记录命令的进入时间。

在操作303处,处理装置确定所述命令是否是读取命令。如果所述命令是读取命令,那么在操作304处,处理装置使未完成读取的数目递增。处理装置可将未完成读取的数目存储于存储器子系统中。一旦在操作304处使未完成读取的数目递增或如果在操作303处,所述命令并非读取命令,那么处理装置更新库触摸计数列表,所述触摸计数列表包含正被命令队列中的命令存取的库的列表以及列表中的库中的每一个的库触摸计数,所述库触摸计数分别识别存取所述库中的每一个的命令的数目。处理装置可将库触摸计数列表存储于存储器子系统中。为更新库触摸计数列表,处理装置在操作305处确定命令的目标库是否处于库触摸计数列表中。所述目标库是正被所述命令存取的库。如果所述目标库不在库触摸计数列表中,那么处理装置在操作306处将目标库插入到库触摸计数列表中的库列表中。在操作306处,处理装置还将目标库的库触摸计数设置为0。在操作307处,处理装置使目标库的库触摸计数增加一。

在操作308处,处理装置将库优先级排名指配给库列表中的库中的每一个。库优先级排名是基于库中的每一个的库触摸计数。较高库优先级排名可指配给具有较高库触摸计数的库。

在一个实施例中,处理装置按发到给定库的未完成命令的数目对发到所述给定库的写入命令进行优先级排序。如果bt库具有未完成命令,其中bt是接触的库数目,那么具有最多未完成命令的库具有p=0且具有最少未完成命令的库具有p=bt-1。发到给定库的写入命令(w)的优先级随着发到所述给定库(b)的未完成命令(c)的数目而增加(即,具有最多未完成命令的库将具有最高优先级p,且具有最少未完成命令的库将具有最低优先级p,其中p是库的优先级值)。在一个实施例中,存储器子系统产生针对被命令队列中的命令接触或存取的每一库的两个优先级队列以及两个额外优先级队列,即第一高的优先级队列和第二高的优先级队列(例如,队列0、队列-1)。触摸的每一库的两个优先级队列包含用于存取敞开行的命令的较高优先级队列和用于存取经关闭行的命令的较低优先级队列。处理装置为读取命令和提升命令预留第一高的优先级队列和第二高的优先级队列(例如,队列0、队列-1)。提升命令是由于延迟其发出将必然延迟读取命令发出而被提升的命令。举例来说,当较旧写入命令与较新读取命令发生页冲突时,使较旧写入命令成为提升命令并且进行发布,以使得读取可继续。处理装置接着预留剩余的优先级队列(2*bt,其中bt是所触摸的库的数目)以用于对写入命令优先级排序。在此实施例中,处理装置确定等于2*bt+2的优先级队列的总数目,其中bt是所触摸的库的数目。在一个实施例中,当在以上实例中调度写入命令(w)时,如果与写入命令(w)相关联的命令行敞开,那么处理装置将写入命令(w)插入于优先级队列(-2*p)-2中(其中p是库的优先级值),且如果与写入命令(w)相关联的命令行关闭,那么处理装置将写入命令(w)插入于优先级队列(-2*p)-3中(其中p是库的优先级值)。

在一个实施例中,处理装置可使用数据结构以便例如跟踪目前处于命令队列中的存取bt所存取库中的每一个的命令的数目。对于库触摸计数列表中的给定库(b),库触摸计数列表中的库(b)的索引可指示写入命令相对于其它写入命令的优先级。在一个实施例中,库触摸计数列表另外包含库触摸映射,且库触摸计数列表中的每一条目在库触摸映射中具有对应条目。当插入或从命令队列移除命令时,处理装置更新库触摸计数列表。在一个实施例中,库触摸计数列表中的库列表是列表数据结构。列表数据结构包含按具有最高数目的库触摸计数的库到具有最低库触摸计数的库的次序的库列表。

在一个实施例中,为了减少读取事务的时延而且还避免必须补偿与总线周转相关联的损失,与写入命令相比,处理装置为与rmw相关联的读取命令指配较高优先级,但相比于与读取事务相关联的读取命令,为与rmw相关联的读取命令指配较低优先级。

在一个实施例中,处理装置按发到给定库的未完成命令的数目对与发到所述给定库的rmw命令相关联的读取命令进行优先级排序。与发到给定库的rmw命令相关联的读取命令的优先级随着发到所述给定库的未完成命令的数目而增加。在一个实施例中,除了用于读取命令和提升命令的第一高的优先级队列和第二高的优先级队列(例如,队列0、队列-1)和用于对写入命令进行优先级排序的优先级队列(2*bt,其中bt是所触摸的库的数目)之外,处理装置还进一步产生用于对与rmw命令相关联的读取命令进行优先级排序的优先级队列。在此实施例中,处理装置针对被用于与rmw命令相关联的读取命令的命令队列(2*bt)中的命令触摸或存取的每一库产生两个优先级队列。触摸的每一库的两个优先级队列包含用于存取敞开行的命令的较高优先级队列和用于存取关闭行的命令的较低优先级队列。在此实施例中,处理装置产生总数目等于2*(2*bt)+2的优先级队列,其中bt是所触摸的库的数目。在此实施例中,用于与rmw命令相关联的读取命令的优先级队列与用于写入命令和与rmw命令相关联的写入命令的优先级队列相比具有较高优先级。

图4是根据本公开的一些实施例的在增加用于命令调度的带宽的方法中调度并发出命令给存储器组件(图2中的操作203)的实例方法400的流程图。方法400可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法400是由图1的存储器命令控制器113执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,应理解所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,可在各种实施例中省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。

在操作401处,处理装置将与命令队列中的命令相关联的索引重置为0。在操作402处,处理装置确定是否已考虑和/或调度命令中的每一个。处理装置可通过将所述索引与命令队列中的命令总数目进行比较,进行操作402处的此确定。如果所述索引等于命令队列中的命令总数目,那么已考虑和/或调度命令中的每一个。

如果所述索引等于命令队列中的命令总数目,那么在操作403处,处理装置执行命令选择过程。下文关于图5描述关于处理装置执行命令选择过程的另外细节。

如果所述索引不等于命令队列中的命令总数目,那么在操作404处,处理装置确定命令是否被标记为不可发出。如果所述命令被标记为不可发出,那么在操作405处,处理装置使索引递增并且转回到操作402。

如果命令未被标记为可发出可发出,那么在操作406处,处理装置确定命令是否是提升命令或读取命令(即,用于读取事务的读取命令)。

如果所述命令是读取命令或提升命令,那么在操作407处,处理装置基于命令队列中的命令进入时间来确定命令的老化程度并且确定命令的老化程度是否超过第一阈值。在一个实施例中,第一阈值可为“硬性最大读取命令老化程度(age)”,其为如下阈值参数:确立对读取命令置于命令队列中的时间量的硬性限制并且防止在同一通道上发出任何其它命令。

当命令的老化程度超过第一阈值时,在操作408处,处理装置选择命令,且在操作403处,执行命令选择过程。当命令的老化程度不超过第一阈值时,在操作409处,处理装置处理提升命令或用于读取事务的读取命令。下文关于图6描述关于处理提升命令或用于读取事务的读取命令的处理装置的另外细节。

如果在操作406处,命令并非提升命令或用于读取事务的读取命令,那么处理装置在操作410处,确定命令是否是用于rmw命令的读取命令。如果命令是用于rmw命令的读取命令,那么处理装置处理用于rmw命令的读取命令。下文关于图7描述关于处理用于rmw命令的读取命令的处理装置的另外细节。

如果命令并非用于rmw命令的读取命令,那么命令是写入命令或rmw命令的写入命令,且处理装置在操作412处处理写入命令或用于rmw命令的写入命令。下文关于图8描述关于处理写入命令或用于rmw命令的写入命令的处理装置的另外细节。

图5是根据本公开的一些实施例的在增加用于命令调度的带宽的方法中执行命令选择过程(图4中的操作403)的实例方法500的流程图。方法500可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法500是由图1的存储器命令控制器113执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,应理解所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,可在各种实施例中省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。

为执行命令选择过程,在操作501处,处理装置确定命令是否是列命令。在一个实施例中,列命令是与使用基于列的寻址的存储器组件相关联的命令。

如果命令并非列命令,那么在操作506处,处理装置将命令发到存储器组件。如果命令是列命令,那么在操作502处,处理装置使与命令所存取的库(例如,目标库)相关联的库触摸计数递减。在操作503处,处理装置确定命令是否是读取命令。如果命令是读取命令,那么在操作504处,处理装置使未完成读取命令的数目递减。在操作505处,处理装置从存储器子系统擦除命令进入时间,且在操作506处,处理装置将命令发到存储器组件。

图6是根据本公开的一些实施例的在增加用于命令调度的带宽的方法中处理用于读取事务的提升命令或读取命令(图4中的操作409)的实例方法600的流程图。方法600可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法600是由图1的存储器命令控制器113执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,应理解所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,可在各种实施例中省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。

在操作601处,处理装置确定命令的老化程度是否超过第二阈值。第二阈值可为“最大读取命令老化程度”,其可为如下阈值参数:规定读取命令在阻挡存取同一库的全部其它命令之前可保持于命令队列中的时间量。

当命令的老化程度超过第二阈值时,在操作607处,处理装置将存取同一库的所有其它命令标记为不可发出。处理装置接着转到操作604。

在操作604处,处理装置确定命令是否存取敞开行。在一个实施例中,命令是与使用基于行的寻址的存储器组件相关联。如果命令存取敞开行,那么在操作605处,处理装置将命令插入于最高优先级队列(例如,队列0或第一高的优先级队列)中。如果命令存取经关闭行,那么在操作606处,处理装置将命令插入于第二高的优先级队列(例如,队列-1)中。

当命令的老化程度不超过第二阈值时,在操作602处,处理装置确定(i)命令是否是与写入命令相关联的提升命令或(ii)未完成读取命令的数目是否大于第三阈值。第三阈值可为“周转之前的最少读取”,其为如下阈值参数:设置需要在命令控制器113可执行写入到读取周转之前处于命令队列中的最少读取命令数目。“周转之前最少读取”阈值参数避免归因于与总线周转相关联的大损失以及发出个别读取的行的关闭和敞开而减小带宽带来的过量开销。

如上文所论述,如果处理装置确定(i)命令是与写入命令相关联的提升命令或(ii)未完成读取命令的数目大于第三阈值,那么处理装置转到操作604。

如果处理装置确定(i)命令并非与写入命令相关联的提升命令且(ii)未完成读取命令的数目不大于第三阈值,那么在操作603处,处理装置将命令标记为不可发出。

图7是根据本公开的一些实施例的在增加用于命令调度的带宽的方法中处理用于读取-修改-写入(rmw)事务的读取命令(图4中的操作411)的实例方法700的流程图。方法700可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法700是由图1的存储器命令控制器113执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,应理解所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,可在各种实施例中省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。

为处理与rmw命令相关联的读取命令,在操作701处,处理装置确定命令所需的缓冲空间与命令队列中的rmw命令目前占用的缓冲空间的总和是否小于第四阈值。第四阈值可为“用于读取-修改-写入的最大读取缓冲空间”,其为如下阈值参数:设置可用于读取-修改-写入的读取响应缓冲空间的量。在一个实施例中,读取响应缓冲器是在将来自存储器组件的数据返回到存储器组件之前,处理装置保持所述数据所使用的存储装置。rmw命令需要缓冲空间来暂时存储在修改期间并且在将数据写回到存储器组件之前由读取命令读取的数据。在一个实施例中,处理装置使用读取响应缓冲器作为用于rmw命令的缓冲空间。“用于读取-修改-写入的最大读取缓冲空间”阈值参数确保rmw命令不使用读取响应缓冲器的大部分,且因此阻挡传入读取命令预留读取响应缓冲器中的空间。在无法预留读取响应缓冲器中的空间的情况下,归因于不具有存储从存储器组件返回的数据的缓冲空间而阻止发出读取命令。

当所述总和不小于第四阈值时,在操作702处,处理装置将命令标记为不可发出。当确定所述总和小于第四阈值时,在操作703处,处理装置获得正被来自库触摸计数列表的命令存取的库(例如,目标库)的库优先级排名。

在操作704处,处理装置确定命令是否正在存取敞开行。如果命令正在存取敞开行,那么在操作705处,处理装置将命令插入到与库优先级排名相关联的优先级队列中。优先级队列还是指配给正被命令存取的库的高优先级队列。如果命令正在存取经关闭行,那么在操作706处,处理装置将命令插入到与库优先级排名相关联的优先级队列中。优先级队列还是指配给正被命令存取的库的低优先级队列。

在一个实施例中,处理装置将库优先级排名(p)更新为2*p,指配给正被命令存取的库的高优先级队列是队列p且指配给正被命令存取的库的低优先级队列是队列p-1。

图8是根据本公开的一些实施例的在增加用于命令调度的带宽的方法中处理写入命令或rmw命令的写入命令(图4中的操作412)的实例方法的流程图。方法800可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法800是由图1的存储器命令控制器113执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,应理解所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,可在各种实施例中省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。

为处理写入命令或rmw命令的写入命令,在操作801处,处理装置从库触摸计数列表获得正被命令存取的库(例如,目标库)的库优先级排名。

在操作802处,处理装置确定命令是否正在存取敞开行。如果命令正在存取敞开行,那么在操作803处,处理装置将命令插入到与库优先级排名相关联的优先级队列中。优先级队列还是指配给正被命令存取的库的高优先级队列。如果命令正在存取经关闭行,那么在操作804处,处理装置将命令插入到与库优先级排名相关联的优先级队列中。优先级队列还是指配给正被命令存取的库的低优先级队列。

在一个实施例中,处理装置将库优先级排名(p)更新为2*(p-bt),其中bt是正被存取的库的数目。在此实施例中,指配给正被命令存取的库的高优先级队列是队列p且指配给正被命令存取的库的低优先级队列是队列p-1。

图9说明计算机系统900的实例机器,可执行所述计算机系统900内的用于致使所述机器执行本文中所论述的方法中的任一种或多种方法的指令集。在一些实施例中,计算机系统900可对应于主机系统(例如,图1的主机系统120),所述主机系统包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110),或者可用于执行控制器的操作(例如,用于执行操作系统以执行对应于图1的命令控制器113的操作)。在替代性实施例中,机器可连接(例如联网)到lan、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端-服务器网络环境中的服务器或客户端机器的容量进行操作。

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

实例计算机系统900包含处理装置902、主存储器904(例如,只读存储器(rom)、闪存存储器、动态随机存取存储器(dram)例如同步dram(sdram)或rambusdram(rdram)等)、静态存储器906(例如,闪存存储器、静态随机存取存储器(sram)等),以及数据存储系统918,其经由总线930彼此通信。

处理装置902表示一个或多个通用处理装置,例如微处理器、中央处理单元等等。更特定来说,处理装置可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置902也可为一或多个专用处理装置,例如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等。处理装置902被配置成执行指令926以用于执行本文中所论述的操作和步骤。计算机系统900可另外包含网络接口装置908以在网络920上通信。

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

在一个实施例中,指令926包含实施对应于增加用于命令调度的带宽的命令控制器(例如,图1的命令控制器113)的功能性的指令。尽管在实例实施例中机器可读存储媒体924展示为单个媒体,但应认为术语“机器可读存储媒体”包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集合且致使机器执行本公开的方法中的任何一种或多种的任何媒体。术语“机器可读存储媒体”因此应被视为包含但不限于固态存储器、光学媒体和磁性媒体。

已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。在本文中,且一般将算法构想为产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操纵的操作。通常(但未必),这些量采用能够存储、组合、比较以及以其它方式操纵的电或磁信号的形式。已经证实,主要出于常用的原因,将这些信号称为位、值、元素、符号、字符、项、编号等等有时是便利的。

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

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

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

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

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

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1