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

通过PCIeTLP合并的有效PCIe利用的制作方法

2022-05-21 10:21:40 来源:中国专利 TAG:

通过pcie tlp合并的有效pcie利用
1.相关申请的交叉引用
2.本技术要求2020年11月20日提交的美国临时专利申请序列号63/116,459的权益,该美国临时专利申请以引用方式并入本文。


背景技术:
技术领域
3.本公开的实施方案整体涉及有效传输层数据包(tlp)利用。
4.相关领域的描述
5.数据存储设备诸如固态驱动器通常通过非易失性存储器express(nvme)接口连接到主计算机。在此类系统中,主计算机通过准备包含要传输到存储设备或从存储设备传输的数据的数据缓冲器来发起数据传输。在nvme中,数据缓冲器的物理存储器位置由物理区域页(prp)条目或分散聚合表(sgl)指示。使用prp或sgl,主计算机将物理存储器位置的指针传输到存储设备,作为主机命令指针。主计算机发送至少与用于存储数据以进行传输的物理存储器位置一样多的指针。
6.当通过pcie与nvme一起工作时,主计算机可以发送指向连续逻辑地址的指针。然而,当传输与指针相关联的数据时,数据存储设备在利用物理(pcie)总线方面可能效率低下。低效利用可导致性能劣化。例如,通过pcie总线传输的每个数据包(即,传输层数据包(tlp))可具有约24字节的开销。当数据的有效载荷大小为约256字节时,开销占据总有效载荷大小的约10%。此外,当来自连续逻辑地址的数据大于最大tlp时,数据存储设备可将数据分成若干较小的tlp。较小tlp中的每一个包括开销,这可增加延迟并且需要更多带宽。
7.因此,本领域需要优化延迟和带宽的改进的tlp利用。


技术实现要素:

8.本公开整体涉及有效传输层数据包(tlp)利用。当数据存储设备的控制器生成用于向或从存储设备传输数据的请求时,该请求被存储在合并缓冲器中。合并缓冲器可以包括先前生成的请求,其中先前生成的请求和新请求被合并。针对存储在合并缓冲器中的请求来初始化超时计数器。超时计数器具有对应于权重值的可配置阈值,出于延迟或带宽考虑而调整该权重值。当合并请求大于最大tlp大小时,合并请求被分区,其中至少一个分区为最大tlp大小的大小。当请求为最大tlp大小的大小时或当超过阈值时,从缓冲器发送请求。
9.在一个实施方案中,数据存储设备包括存储器设备和耦接到该存储器设备的控制器。控制器被配置为接收新命令,生成与新命令相关联的一个或多个请求,确定新生成的一个或多个请求的开始是否与存储在缓冲器中的先前请求或合并请求的结束连续,以及将存储在缓冲器中的先前请求或合并的长度更新为包括新生成的一个或多个请求的新长度,或者从缓冲器发送先前请求或合并请求并将新生成的一个或多个请求推送到缓冲器。
10.在另一个实施方案中,数据存储设备包括存储器设备以及耦接到存储器设备的控制器。控制器被配置为初始化权重值,其中权重值影响超时计数器的最大阈值,定义接收的命令的最大大小值,接收新命令,确定所接收的新命令是大于还是小于所接收的命令的最大大小值,基于确定来调整权重值,调整超时计数器的最大阈值,并且定义最大有效载荷大小(mps)。
11.在另一个实施方案中,数据存储设备包括存储器设备以及耦接到存储器设备的控制器。控制器包括用于确定新请求是否与存储在缓冲器中的先前请求或合并请求连续的装置,以及用于基于数据流量来调整超时计数器的装置。
附图说明
12.因此,通过参考实施方案,可以获得详细理解本公开的上述特征的方式、本公开的更具体描述、上述简要概述,所述实施方案中的一些在附图中示出。然而,应当注意的是,附图仅示出了本公开的典型实施方案并且因此不应视为限制其范围,因为本公开可以允许其他同等有效的实施方案。
13.图1是根据一个实施方案的包括主计算机系统和存储设备的示例性计算系统的示意性框图。
14.图2是根据一个实施方案的tlp的示意图。
15.图3是根据一个实施方案的基于各种视图的命令的示意图。
16.图4是根据一个实施方案的到主机设备的数据传输的示意性框图。
17.图5a是根据一个实施方案的示出优化缓冲器中请求的存储的方法。
18.图5b是根据一个实施方案的示出更新图5a的缓冲器中的请求的长度的方法。
19.图6是根据一个实施方案的示出权重值的更新的方法。
20.为了有助于理解,在可能的情况下,使用相同的参考标号来表示附图中共有的相同元件。可以设想是,在一个实施方案中公开的元件可以有利地用于其他实施方案而无需具体叙述。
具体实施方式
21.在下文中,参考本公开的实施方案。然而,应当理解的是,本公开不限于具体描述的实施方案。相反,思考以下特征和元件的任何组合(无论是否与不同实施方案相关)以实现和实践本公开。此外,尽管本公开的实施方案可以实现优于其他可能解决方案和/或优于现有技术的优点,但是否通过给定实施方案来实现特定优点不是对本公开的限制。因此,以下方面、特征、实施方案和优点仅是说明性的,并且不被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。同样地,对“本公开”的引用不应当被解释为本文公开的任何发明主题的概括,并且不应当被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。
22.本公开整体涉及有效传输层数据包(tlp)利用。当数据存储设备的控制器生成用于向或从存储设备传输数据的请求时,该请求被存储在合并缓冲器中。合并缓冲器可以包括先前生成的请求,其中先前生成的请求和新请求被合并。针对存储在合并缓冲器中的请求来初始化超时计数器。超时计数器具有对应于权重值的可配置阈值,出于延迟或带宽考
虑而调整该权重值。当合并请求大于最大tlp大小时,合并请求被分区,其中至少一个分区为最大tlp大小的大小。当请求为最大tlp大小的大小时或当超过阈值时,从缓冲器发送请求。
23.图1是根据一个实施方案的包括主计算机系统170和数据存储设备102的示例性计算系统100的示意性框图。在一些示例中,数据存储设备102可以是主计算机系统170的固态驱动器。主计算机系统170可以利用包括在数据存储设备102(示出为存储器阵列160)中的非易失性存储器(nvm)来写入和读取数据,诸如用于长期存储器存储。数据存储设备102可以是内部存储驱动器,诸如笔记本硬盘驱动器或台式机硬盘驱动器。数据存储设备102可以是可移动大容量存储设备,诸如但不限于,手持式可移动存储器设备,诸如存储卡(例如,安全数字(sd)卡、微安全数字(micro-sd)卡或多媒体卡(mmc))或通用串行总线(usb)设备。数据存储设备102可采用嵌入在主计算机系统170中的嵌入式大容量存储设备诸如esd/emmc嵌入式闪存驱动器的形式。数据存储设备102还可以是任何其他类型的内部存储设备、可移动存储设备、嵌入式存储设备、外部存储设备或网络存储设备。
24.在一些示例中,为了清楚起见,数据存储设备102可以包括图1中未示出的附加部件。例如,数据存储设备102可以包括印刷电路板(pcb),数据存储设备102的部件机械地附接到该印刷电路板,并且该印刷电路板包括电互连数据存储设备102的部件等的导电迹线。在一些示例中,数据存储设备106的物理尺寸和连接器配置可以符合一个或多个标准形状因数。一些示例性标准形状因子包括但不限于3.5”数据存储设备(例如,hdd或ssd)、2.5”数据存储设备、1.8”数据存储设备、外围部件互连(pci)、pci扩展(pci-x)、pci express(pcie)(例如,pcie x1、x4、x8、x16、pcie mini卡、minipci等)。在一些示例中,数据存储设备102可以直接耦接(例如,直接焊接)到主计算机系统170的母板。
25.主计算机系统170可为各种各样的设备,诸如计算机服务器、网络附联存储(nas)单元、台式计算机、笔记本(即,膝上型)计算机、平板计算机(即,“智能”平板电脑)、机顶盒、手机(即,“智能”电话)、电视机、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备和汽车应用(即地图绘制、自主驾驶)。
26.主计算机系统170包括主存储器180,诸如dram或其他主存储器。应用程序可存储在主存储器180中,以便由主计算机系统170的部件执行。主存储器180可包括主机队列,诸如命令提交队列和命令完成队列。主存储器180包括物理区域页(prp)指针182、数据缓冲器184(诸如主机数据缓冲器)和其他类型的存储器结构186。
27.数据存储设备102包括mac和phy部件120以用于从主计算机系统170到数据存储设备102的通信的进入和从数据存储设备102到主计算机系统170的通信的外出。数据存储设备102和主计算机系统170之间的链路可以是任何适当的链路,诸如该示例中的高速外围部件接口(pcie)链路。pcie链路可以是一至三十二个通道,这取决于连接两个pcie连接器的可用phy的数量。pcie链路通常在端点设备初始化(诸如数据存储设备102的初始化)期间设置。
28.主计算机系统170和数据存储设备102之间的链路在通信协议(诸如pcie串行通信协议或其他合适的通信协议)下操作。其他合适的通信协议包括以太网、串行附接scsi(sas)、串行at附接装置(sata)、与远程直接存储器访问(rdma)相关的任何协议,诸如infiniband、iwarp或基于融合以太网的rdma(roce)以及其他合适的串行通信协议。在其他
示例中,数据存储设备102还可通过开关或桥接器连接到主计算机系统170。
29.在pcie通信协议中,主计算机系统170和数据存储设备102可作为传输层数据包(tlp)向彼此发送请求。tlp可以包括可选的tlp前缀、tlp标头、数据有效载荷和可选的tlp概要。tlp标头包括类型字段,其可指示事务的类型。
30.随着tlp在主计算机系统170和数据存储设备102之间传输,数据链路层和物理层被添加到每个tlp,以确保tlp到达预期目的地。每个tlp包括来自所添加的数据链路层和物理层的特定开销。例如,tlp可在tlp概要中包括任选的端到端循环冗余校验和(ecrc)。数据链路层将序号和链路层crc(lcrc)添加到tlp以确保跨链路的成功传输。物理层添加信息以标记tlp的开始和结束。
31.存储设备102的存储器阵列160可以被配置用于作为非易失性存储空间长期存储信息并且在通电/断电循环后保留信息。存储器阵列160可由nand闪存存储器的一个或多个管芯组成。非易失性存储器的其他示例包括相变存储器、reram存储器、mram存储器、磁介质(包括叠瓦式磁记录)、光盘、软盘、电可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)和其他固态存储器。磁介质非易失性存储器可为存储设备102中的一个或多个磁盘。每个盘片可以包含由一个或多个数据轨道组成的一个或多个区域。存储器阵列160可另外包括一种或多种类型的非易失性存储器。
32.数据存储设备102包括控制器110,该控制器管理数据存储设备102的操作,诸如对存储器阵列160的写入和从该存储器阵列的读取。控制器110可以包括一个或多个处理器112,其可以是多核处理器。处理器112通过固件代码来处理数据存储设备102的部件。
33.控制器110可在nvm express(nvme)协议下进行操作,但其他协议也是适用的。nvme协议是为ssd开发的用于对通过pcie接口链接的主计算机系统和数据存储设备进行操作的通信接口/协议。nvme协议提供用于由主计算机系统170访问存储在数据存储设备102中的数据的命令提交队列和命令完成队列。数据存储设备102可从主存储器180的主机队列的命令提交队列提取或读取主机命令。
34.控制器110执行计算机可读程序代码(例如,软件或固件)的可执行指令(在本文中称为“指令”)。指令可由控制器110的各种部件执行,这些部件诸如处理器112、逻辑门、开关、专用集成电路(asic)、可编程逻辑控制器、嵌入式微控制器以及控制器110的其他部件。
35.指令存储在非暂态计算机可读存储介质中。在某些实施方案中,指令存储在数据存储设备102的非暂态计算机可读存储介质中,诸如只读存储器或存储器阵列160中。存储在数据存储设备102中的指令可在没有从主计算机系统170添加的输入或指示的情况下执行。在其他实施方案中,从主计算机系统170传输指令。控制器110被配置有用于执行本文所述和附图所示的各种功能的硬件和指令。
36.数据存储设备102还可以包括其他部件,诸如闪存接口模块134、直接存储器访问(dma)模块144、调度器140、纠错模块142、命令执行器132和控制路径150。闪存接口模块134与存储器阵列160交互以进行读取和写入操作。调度器140在激活控制路径150以提取物理页面区域(prp)、发布完成和中断以及激活dma模块144以在主计算机系统170和数据存储设备102之间进行实际数据传输时控制数据传输。纠错模块142校正从存储器阵列160所提取的数据。命令解析器130将命令提取到命令执行器132以用于在闪存接口模块134上执行。dma模块144在主计算机系统170和数据存储设备102之间执行数据传输。
37.一般来讲,主计算机系统170通过向数据存储设备102传输主机命令来发起数据传输(向数据存储设备102或从数据存储设备102)。通过nvme,与主机命令相关的数据可由prp条目或sgl指示。在任一种系统中,主机命令的数据作为一系列主机命令指针传输到主存储器180的物理存储器。在该示例中,主计算机系统170准备要在主存储器180的数据缓冲器184中传输的数据,并且生成指向要作为prp 182传输的数据的一组指针。控制路径150经由指针提取控件152接收主机命令指针并存储主机命令指针,直到可以执行主机命令。
38.在该示例中,指针方向图检测154是指针提取控件152的模块,其可用于分析从主计算机系统170接收的主机命令指针以检测主机命令指针中的方向图。如下文进一步详细所述,如果可在主机命令指针中检测到方向图,则指针方向图检测154可将所接收的指针存储在减小的指针存储结构中。在一些示例中,指针方向图检测154可被实现为设备控制器110的硬件部件,尽管在其他示例中,指针方向图检测154可被实现为设备控制器110的固件。
39.指针方向图检测154将从主计算机系统170接收的主机命令指针存储在dram 156中。在该示例中,dram 156被示出为在存储设备102的外部,然而,在其他示例中,主机命令指针可替代地存储在存储设备102的内部,诸如在数据存储设备102的sram中。
40.图2是根据一个实施方案的tlp 200的示意图。如图1所述,tlp 200可以包括可选的tlp前缀、tlp标头、数据有效载荷和可选的tlp概要。数据有效载荷是在主机(诸如主计算机系统170)和数据存储设备(诸如图1的数据存储设备102)之间传输的信息。tlp 200的数据有效载荷可具有约256字节的平均大小或高达约4k或约4,096字节的最大大小。tlp标头包括类型字段,其可指示事务的类型。tlp标头可具有介于约3个双字和4个双字之间的大小,其中双字等于约32位或4个字节。此外,tlp 200可包括数据链路层、物理层和额外开销。例如,tlp 200可包括任选的端到端循环冗余校验和(ecrc),其中ecrc具有约1个双字的大小。先前列出的值并非旨在进行限制,而是提供可能的实施方案的示例。
41.数据链路层将序号和链路层crc(lcrc)添加到tlp 200,以确保在链路上成功传输,其中链路是主机和数据存储设备之间的数据传输。序号大小可为约2个字节,并且lcrc大小可具有约1个双字的大小。物理层添加信息以标记tlp 200的开始和结束,其中标记开始(即,“start”)的信息具有约1个字节的大小,而标记结束(即,“end”)的信息具有约1个字节的大小。先前列出的值并非旨在进行限制,而是提供可能的实施方案的示例。
42.图3是根据一个实施方案的基于各种视图的命令300的示意图。命令300具有三个不同的视图,这取决于从何处查看命令300。这三个不同的视图包括主机视图、分散聚合表(sgl)视图和设备视图。主机视图可以是图1的主计算机系统170中的命令300的视图,诸如其中设备需要从其读取数据或向其写入数据。sgl视图(包括物理区域页(prp)视图)是关于主机视图提供给设备的列表。设备视图可以是图1的数据存储设备102中的命令300的视图,诸如数据如何被布置在nvm诸如图1的存储器阵列160中。
43.命令300包括4个逻辑块地址(lba):lba#1、lba#2、lba#3和lba#4。lba中的每一个具有约512字节的大小。在主机视图中,4个lba是不连续的,如lba#3和lba#4之间的空间所指示的。例如,在主机视图中,lba#1具有地址0x0012_0000,lba#2具有地址0x0012_0200,lba#3具有地址0x0012_0400,并且lba#4具有地址0x0012_0800。如果4个lba是连续的,则lba#4的地址将为0x0012_0600而不是0x0012_0800。然而,在该设备中,4个lba是连续的,其
中下一个lba的逻辑地址遵循前一个lba的逻辑地址。例如,lba#1具有地址0x0000_8000,lba#2具有地址0x0000_8800,lba#3具有地址0x0000_c000,并且lba#4具有地址0x0000_4000。
44.sgl视图包括4个条目,其中第一条目是lba#1,第二条目是lba#2和lba#3,第三条目和第四条目是lba#4。当在主机和设备之间传输数据时,可以最大tlp大小传输数据,其中在该示例中,最大tlp大小为约256字节。例如,当第一条目被传输时,第一条目以2tlp被传输。同样,当第二条目被传输时,第二条目以4tlp被传输。
45.然而,当传输lba#4时,传输可发生在3次传输或2次传输中。在第一示例中,传输发生在3次传输中,其中第一次传输为256字节,第二次传输为254字节,并且第三次传输为2字节。第一次传输和第二次传输是与第三sgl条目相关联的传输。不是执行3次传输(其中每次传输都具有tlp标头信息和其他开销),如果第3次传输与第2次传输是连续不间断的,则2次传输将是足够的。更具体地讲,第三个地址是第二个地址之后的下一个地址,因此第三个地址与第二个地址连续不间断。例如,第一次传输可以是256个字节,并且第二次传输可以是256个字节,其中第二次传输包括来自第三sgl条目的254个字节和来自第四sgl条目的2个字节。通过具有最小传输量,可更有效地利用带宽。
46.图4是根据一个实施方案的到主机设备的数据传输的示意性框图。数据存储设备,诸如图1的数据存储设备102,包括与dma 406交互的控制器404。控制器404可为图1的控制器110。控制器404利用prp列表和sram缓冲器列表来确定数据存储或将存储在sram 408或数据存储设备的任何其他存储器设备中的位置。应当理解,sram缓冲器列表用作当前图中的示例,并且缓冲器列表可以是任何适当的内部缓冲器列表,以跟踪存储在数据存储设备中的数据的位置。此外,当从主机设备402接收命令诸如读取命令时,dma 406可以生成与所接收的命令相关联的一个或多个请求。例如,所接收的命令可与4个生成的请求相关联。
47.控制器404激活dma 406以读取与一个或多个生成的请求相关联的数据,该一个或多个生成的请求与来自sram 408或任何其他存储器的主机命令相关联,并将相关数据写入回主机402。dma 406将与一个或多个生成的请求相关联的数据传递到合并缓冲器410,其中传递的数据与具有与位于合并缓冲器410中的数据的顺序逻辑地址的任何数据合并。
48.例如,如果合并缓冲器中的数据具有逻辑地址0x000_8000,诸如图3中所述的设备视图的lba#1和约512字节的大小,则顺序逻辑地址将为0x0000_8800。当在合并缓冲器410处接收到具有顺序逻辑地址的lba时,将先前的lba和所接收的lba合并。然而,当所接收的lba与先前的lba不是顺序的时,则将先前的lba写入主机,并且将所接收的lba编程到合并缓冲器410。
49.控制器404利用定时器412来确保所生成的请求或合并请求不在合并缓冲器410中保持长于时间阈值。定时器412可以是在合并缓冲器处接收的最后生成的请求的单独定时器和/或合并请求的定时器。当定时器412达到时间阈值时,将合并缓冲器410中的生成的请求或合并请求写入主机402。时间阈值可以是超时计数器,诸如当定时器412达到时间阈值时,所生成的请求或合并请求已超时。可以设想,数据存储设备可包括多于一个合并缓冲器,使得合并缓冲器中的每个合并缓冲器具有与存储在相关合并缓冲器中的所生成的请求或合并请求相关联的定时器。
50.图5a是根据一个实施方案的示出优化缓冲器中的生成的请求的存储的方法500。
在框502处,当数据存储设备(诸如图1的数据存储设备102)尝试向主机(诸如图1的主计算机系统170)发送与新命令相关联的数据时,方法500开始。应当理解,虽然举例说明了数据存储设备到主机事务,但本文的实施方案适用于往复式事务,诸如主机到数据存储设备事务。此外,数据可被检索或存储在数据存储设备中的任何适用位置中,诸如非易失性存储器或易失性存储器中。
51.在框504处,清除“先前请求”缓冲器,使得缓冲器(诸如图4的合并缓冲器410)中的生成的请求或合并请求被写入相应位置。“先前请求”缓冲器可以是存储在合并缓冲器中的所生成的请求或合并请求。在从缓冲器清除“先前请求”之后,将与新命令相关联的新生成的请求存储在缓冲器中。
52.在框506处,超时计数器被初始化,其中超时计数器可以是图4的定时器412。在一些示例中,超时计数器仅在一个或多个请求或合并请求位于缓冲器中时进行计数。例如,当缓冲器为空时,超时计数器不递增或初始化。在框508处,控制器确定数据存储设备是否已从主机设备(诸如从图1的主计算机系统170)接收到附加生成的请求。如果控制器在框508处确定尚未发送附加生成的请求,则控制器在框510处确定是否已达到或超过超时计数器的最大阈值。最大阈值可以是基于往返于缓冲器的数据流量的可配置值。
53.如果控制器在框510处确定尚未达到超时计数器,则控制器等待附加生成的请求以到达框508。然而,如果在框510处已达到超时,则控制器在框512处将存储在缓冲器中的一个或多个生成的请求的合并请求发送到主机设备。在框512处发送存储在缓冲器中的一个或多个生成的请求的合并请求之后,在框504处清除缓冲器。在本文的描述中,出于示例性目的,合并请求可以指一个或多个请求或一个或多个生成的请求的合并请求。
54.如果在框508处控制器确定已经接收到附加生成的请求,则在框514处控制器确定缓冲器中是否存在“先前请求”。“先前请求”可以是缓冲器中的一个或多个生成的请求的合并请求。如果控制器在框514处确定缓冲器中是否存在“先前请求”,则控制器在框516处确定附加的新的一个或多个生成的请求的开始的逻辑地址是否与“先前请求”的结束的逻辑地址连续。
55.例如,控制器可确定buffer.start加上buffer.length是否等于new.start,其中buffer.start是存储在缓冲器中的请求的开始逻辑地址,其中buffer.length是存储在缓冲器中的请求的长度,并且其中new.start是附加新请求的逻辑地址。当buffer.start buffer.length=new.start时,逻辑地址是连续的。然而,当buffer.start buffer.length≠new.start时,逻辑地址不连续。
56.当控制器在框516处确定逻辑地址不连续时,控制器在框524处将存储在缓冲器中的先前合并请求发送到主机并将附加新请求推送到缓冲器。在框506处针对在框524处存储在缓冲器中的附加新请求来初始化超时计数器。
57.然而,如果控制器在框516处确定逻辑地址是连续的,则在框518处,将存储在缓冲器中的先前请求或合并请求与附加的新生成的请求合并,使得合并请求的总大小是先前请求或合并请求的大小和附加的新生成的请求的大小的组合。在框518处合并缓冲器中的请求之后,在框506处针对具有更新的总长度的合并请求对超时计数器进行初始化。
58.如果控制器在框514处确定缓冲器中不存在“先前请求”,则控制器在框520处确定新生成的请求是否填满整个缓冲器,诸如当每个缓冲器具有等于约256字节的最大tlp大小
的大小时。如果控制器在框520处确定新生成的请求未填满整个缓冲器,则在框522处将新生成的请求发送到缓冲器。在框506处针对在框522处存储在缓冲器中的新生成的请求初始化超时计数器。
59.然而,如果在框520处控制器确定新生成的请求填满整个缓冲器,则在框524处以等于最大tlp大小的大小将新生成的请求从缓冲器发送并将剩余数据推送到缓冲器。在框506处针对在框524处存储在缓冲器中的剩余数据初始化超时计数器。
60.图5b是根据一个实施方案的示出更新图5a的缓冲器中的合并请求的长度的方法550。方法550示出了在图5a的框518处更新合并请求长度。在框552处,将位于缓冲器中的先前生成的请求(图5a中的先前新生成的请求)和新生成的请求(图5a中的先前附加的新生成的请求)合并在缓冲器中。在框554处,控制器确定合并请求是否大于最大tlp大小。如果在框554处合并请求不大于tlp大小,则方法550在框560处退出到方法500的框506,其中针对合并请求初始化超时计数器。
61.然而,如果在框554处合并请求大于最大tlp大小,则将与合并的请求相关联的数据以最大tlp大小发送到目标地址,诸如主机。例如,最大tlp大小可为256字节。最大tlp大小可以被称为最大有效载荷大小(mps),使得发送的请求为mps的大小。发送到目标地址的请求的大小可以是大小为最大tlp大小的与开始逻辑地址buffer.start到下一个逻辑地址相关联的请求。例如,如果合并请求具有约510字节的大小并且最大tlp大小为约256字节,则所发送的数据是前256字节(即,字节1-256),其中剩余254字节(即,字节257-510)保留在缓冲器中。
62.在框558处,更新合并请求的新开始逻辑地址new.start,其中new.start被定义为buffer.start buffer.length-tlp.size=new.start。例如,如果buffer.start为0,buffer.length为约510字节,tlp.size为256,则new.start是对应于第257字节的逻辑地址(其为new.start=256),其中剩余的总合并数据具有约254字节的大小。在确定新的开始逻辑地址之后,方法550返回到框554并重复该过程,直到合并请求小于最大tlp大小并在框560处退出方法550。
63.图6是根据一个实施方案的示出权重值的更新的方法600。权重值调整超时计数器的最大阈值,诸如图4的定时器412所利用的超时计数器。当超时计数器的最大阈值减小时,与超时计数器的最大阈值增大时相比,会更早地从缓冲器推送请求和/或合并请求。同样,当权重值减小时,最大阈值减小,反之亦然。当控制器识别到缓冲器(诸如图4的合并缓冲器410)将接收到与所接收的主机命令相关联的一个或多个新生成的请求时,方法600在框602处开始。
64.在框604处,权重值被初始化为第一值50。权重值可具有约0的下边界或阈值和约100的上边界或阈值。先前列出的值并非旨在进行限制,而是提供可能的实施方案的示例。边界例示了当接收具有连续逻辑地址的多个请求时权重值可被调整到的最小值和最大值。当权重值变得更接近下边界时,控制器可关注命令的传输延迟,诸如通过减少传输之间的等待时间。当权重值变得更接近上边界时,控制器可关注命令的传输带宽,诸如通过增加等待时间,使得多个请求可合并。此外,在框604处,控制器限定短命令的长度。例如,短命令可具有约4,096字节的最大大小值或最大长度。应当理解,虽然初始化权重值以及定义短命令的长度被示出为一个步骤,但是初始化和定义可以在分开的步骤中并以任何顺序进行。
为用以将权重值减小的最小值。max函数为max(x,min(y,f(s)))。“x”是用以使权重值增加的最小值。“min(y,f(s))”是用以使权重值增加的最小值。“f(s)”是新命令的大小除以最大大小值。
73.调整超时计数器的最大阈值包括当权重值减小时减小最大阈值,并且当权重值增大时增大最大阈值。减小最大阈值减少了请求或合并请求存储在缓冲器中的时间,并且增大最大阈值增加了请求或合并请求存储在缓冲器中的时间。当超过最大阈值时,从缓冲器发送请求或合并请求。当未超过最大阈值时,请求或合并请求与缓冲器中的先前请求或先前合并请求合并。所接收的命令的最大大小值是短命令的大小。以mps从缓冲器发送请求或合并请求。先前请求的第一逻辑地址和请求的第二逻辑地址是连续的。
74.在另一个实施方案中,数据存储设备包括存储器设备以及耦接到存储器设备的控制器。控制器包括用于确定新请求是否与存储在缓冲器中的先前请求或合并请求连续的装置,以及用于基于数据流量来调整超时计数器的装置。
75.用于确定新请求何时与先前请求或合并请求连续的装置包括用于将新请求与存储在缓冲器中的先前请求或合并请求合并的装置。用于调整超时计数器的装置包括用于初始化权重值的装置,其中基于传入命令来调整权重值;用于确定所接收的命令的最大大小值的装置;用于确定传入命令是大于还是小于最大大小值的装置;以及用于如果传入命令大于最大大小值则使权重值增大的装置,其中增大权重值增大最大阈值,或者用于如果传入命令小于最大大小值则使权重值减小的装置,其中减小权重值减小最大阈值。控制器还包括用于以等于最大传输层数据包(tlp)大小的大小从缓冲器发送先前请求或合并请求的装置。最大tlp大小等于最大有效载荷大小。超过最大阈值包括从缓冲器发送先前请求或合并请求。
76.虽然前述内容针对本公开的实施方案,但是可以在不脱离本公开的基本范围的情况下设想本公开的其他和另外的实施方案,并且本公开的范围由所附权利要求书确定。
再多了解一些

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

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

相关文献