用于数据存储的系统、方法和设备与流程

文档序号:31566450发布日期:2022-09-20 20:46阅读:55来源:国知局
用于数据存储的系统、方法和设备与流程

1.本公开大体上涉及数据存储,并且更具体地,涉及用于以指定数据传输速率进行数据存储的系统、方法和设备。


背景技术:

2.数据可以以由主机总线峰值速率确定的数据速率在主机和存储设备之间传输。
3.背景技术部分中公开的上述信息仅用于增强对本发明背景的理解,因此它可以包含不构成现有技术的信息。


技术实现要素:

4.一种方法可以包括在存储设备处接收用于存储设备和主机之间的数据传输的命令,确定用于数据传输的指定数据速率,以及基于该命令执行存储设备和主机之间的数据传输,其中存储设备可以基于指定数据速率来控制数据传输。该命令可以是第一命令,该数据传输可以是第一数据传输,该主机可以是第一主机,并且该指定数据速率可以是第一指定数据速率,该方法还可以包括在存储设备处接收用于存储设备和第二主机之间的第二数据传输的第二命令,确定用于第二数据传输的第二指定数据速率,以及基于第二命令来执行存储设备和第二主机之间的第二数据传输,其中存储设备可以基于第二指定数据速率来控制第二数据传输。第一数据传输可以与第二数据传输重叠。数据传输可以包括峰值部分和空闲部分。该方法还可以包括在存储设备处基于指定数据速率来控制峰值部分和空闲部分。该方法还可以包括在存储设备处确定峰值突发大小,以及在存储设备处基于峰值突发大小来控制数据传输。数据传输可以包括峰值部分,该方法还可以包括在存储设备处基于峰值突发大小来控制峰值部分。确定指定数据速率可以包括从主机接收指定数据速率。确定指定数据速率可以包括在存储设备处确定指定数据速率。在存储设备处确定指定数据速率可以包括在存储设备处监视存储设备和一个或多个主机之间的一个或多个数据传输的参数,以及在存储设备处基于监视来确定指定数据速率。确定峰值突发大小可以包括从主机接收峰值突发大小。确定指定数据速率可以包括在存储设备处确定峰值突发大小。在存储设备处确定峰值突发大小可以包括在存储设备处监视存储设备和一个或多个主机之间的一个或多个数据传输的参数,以及在存储设备处基于监视确定峰值突发大小。指定数据速率可以包括恒定的比特率。数据传输可以与存储设备的后台操作重叠。
5.存储设备可以包括存储介质和存储设备控制器,该存储设备控制器被配置为接收用于存储介质和主机之间的数据传输的命令,确定用于数据传输的指定数据速率,基于该命令执行存储介质和主机之间的数据传输,以及基于指定数据速率来控制数据传输。该命令可以是第一命令,该数据传输可以是第一数据传输,该主机可以是第一主机,并且该指定数据速率可以是第一指定数据速率,并且该存储设备控制器还可以被配置为接收用于该存储介质和第二主机之间的第二数据传输的第二命令,确定用于该第二数据传输的第二指定数据速率,基于第二命令来执行存储介质和第二主机之间的第二数据传输,并且基于第二
指定数据速率来控制第二数据传输。第一数据传输可以与第二数据传输重叠。
6.一种系统可以包括主机和连接到主机的存储设备,该存储设备可以包括存储设备控制器,该存储设备控制器被配置为接收用于存储设备和主机之间的数据传输的命令,确定用于数据传输的指定数据速率,基于该命令来执行存储介质和主机之间的数据传输,以及基于指定数据速率来控制数据传输。主机可以被配置为查询存储设备以确定存储设备的指定数据速率能力,并且基于查询将指定数据速率发送到存储设备。
附图说明
7.附图不一定是按比例绘制的,并且为了说明的目的,在所有附图中,相似结构或功能的元件通常由相似的附图标记或其部分表示。附图仅旨在便于描述本文描述的各种实施例。附图没有描述在本文公开的教导的每个方面,并且没有限制权利要求的范围。为了防止附图变得模糊,不是所有的组件、连接等都可以被示出,并且不是所有的组件都可以具有附图标记。然而,组件配置的模式可以从附图中容易地变得明显。附图与说明书一起示出了本公开的示例实施例,并且与描述一起用于解释本公开的原理。
8.图1示出了根据本公开的示例实施例的包括数据存储的it架构的实施例。
9.图2示出了根据本公开的示例实施例的ssd的实施例。
10.图3示出了根据本公开的示例实施例的存储设备的实施例,该存储设备可以以指定数据速率和/或峰值突发大小实现数据传输。
11.图4示出了根据本公开的示例实施例的以恒定的比特率和最大峰值突发大小进行数据传输的实施例。
12.图5a示出了根据本公开的示例实施例的由存储设备进行的两个并发数据传输的实施例,其中每个数据传输可以具有恒定的比特率和/或最大峰值突发大小。
13.图5b示出了根据本公开的示例实施例的由存储设备进行的n个并发数据传输的实施例,其中每个数据传输可以具有恒定的比特率和/或最大峰值突发大小。
14.图6示出了根据本公开的示例实施例的用于在存储设备处接收具有指定数据速率和/或峰值突发大小的命令的方法的实施例。
15.图7示出了根据本公开的示例实施例的用于在存储设备处执行具有指定数据速率和/或峰值突发大小的命令的方法的实施例。
16.图8示出了根据本公开的示例实施例的可以以指定数据速率和/或峰值突发大小实现数据传输的存储设备的示例实施例。
17.图9示出了根据本公开的示例实施例的方法的实施例。
18.图10示出了根据本公开的示例实施例的系统的示例实施例,该系统具有能够以指定数据速率和/或峰值突发大小执行数据传输的主机和存储设备。
具体实施方式
19.概观
20.根据本公开的示例实施例的存储设备可以控制以指定数据速率去往和/或来自主机的数据传输。例如,响应于读取命令,存储设备可以以恒定的比特率(constant bit rate,cbr)向主机传输数据,该恒定的比特率可以以每秒比特数来指定平均数据传输速率。
state drive,ssd)可以具有控制器,该控制器可以实现一个或多个复杂功能以管理诸如与非(not-and,nand)闪存介质的持久介质。在一些实施例中,后台管理任务的复杂性质(以及介质特性、最大化主机总线带宽的措施等)可能导致ssd执行的数据传输表现出突发和/或不可预测的行为。
30.在一些实施例中,应用可以实现数据缓冲器以适应来自存储设备的突发数据传输行为。然而,这可能会消耗宝贵的资源和/或增加应用的复杂性和/或成本。此外,突发数据业务模式的不确定性和/或不可预测性可能增加为终端用户应用和/或中间系统组件(诸如交换机、路由器等)正确调整数据缓冲器大小的难度。取决于实现细节,这可能导致系统和/或设备架构和/或资源的低效和/或次优使用。
31.此外,根据本公开的示例实施例的一些存储设备可以由一个或多个不同的应用和/或主机(诸如虚拟机(vm)、容器等)共享。然而,不同的应用和/或主机对于访问存储设备可能具有不同的输入和/或输出(i/o)带宽特性(例如,带宽要求)。例如,取决于它们的特性,不同的应用可以实现不同的数据缓冲区大小,以适应来自存储设备的突发数据传输行为。因此,在一些实施例中,在共享存储设备上容纳多个应用和/或主机会给应用和/或存储系统增加进一步的复杂性、不确定性、不可预测性等。
32.it架构
33.图1示出了根据本公开的示例实施例的包括数据存储的it架构的实施例。图1所示的实施例可以包括一个或多个应用服务器102、一个或多个负载平衡器104、一个或多个存储服务器106以及一个或多个存储设备108。
34.应用服务器102可以运行一个或多个各种类型的终端用户应用,而存储服务器106可以管理应用服务器102中的一个或多个和/或向应用服务器102中的一个或多个提供数据存储服务。负载平衡器104可以在存储服务器106之间分配数据业务,例如,从应用服务器102向可用的存储服务器106发送存储命令。
35.一个或多个存储设备108可以用任何类型的存储设备来实现,该存储设备可以使用任何类型的存储介质,例如,可以包括磁存储介质的磁带驱动器或硬盘驱动器、可以包括固态存储介质(诸如与非(nand)闪存)的固态驱动器(ssd)、光存储设备、基于任何类型的持久存储器(诸如交叉网格非易失性存储器)的存储设备、具有体电阻变化的存储器等、和/或它们的任何组合。在一些实施例中,一个或多个存储设备108可以用在存储服务器106中的一个或多个中,并且可以被配置在例如一个或多个服务器机箱、服务器机架、服务器机架组、服务器集群、数据室、数据中心、边缘数据中心、移动边缘数据中心等和/或它们的任何组合中。
36.在一些实施例中,一个或多个应用服务器102可以作为运行各种应用的用户的前端接口来操作。因此,一个或多个应用服务器102可以从存储服务器106中的一个或多个访问相关数据,以供一个或多个终端用户应用使用。一个或多个存储服务器106可以管理数据存储的各个方面,诸如管理访问性能、可靠性、备份等。一个或多个存储服务器106可以维护一个或多个存储设备108的阵列,以执行实际的数据存储。
37.应用服务器102可以向存储服务器106发送对特定的用户数据块的请求。响应于该请求,存储服务器106可以确定所请求的用户数据的位置,从可以存储数据的存储设备108中的一个或多个读取用户数据,并将用户数据发送回请求数据的应用服务器102。
38.出于重复(redundancy)目的,一些实施例可以维护(maintain)用户数据的多个副本。例如,相同数据的两个或三个副本可以维护在单独的存储设备108上,以防止由于各种类型的故障造成的数据丢失。如果在存储设备108之一上的读取操作失败,则存储服务器106可以尝试检索用户数据的第二副本或第三副本之一(例如,从另一个存储设备检索)。存储服务器106然后可以启动数据恢复机制,以将用户数据返回到期望的数据重复水平,例如,通过将用户数据的附加副本写入附加存储设备108。
39.如上所述,数据存储系统的一些实施例中涉及的复杂性可能使得难以向使用数据存储资源的应用提供确定性和/或可预测的数据存储访问行为。
40.存储设备
41.为了说明本公开的原理,一些实施例可以在实现为ssd的存储设备的上下文中描述。然而,这些原理可以应用于使用基于任何类型的存储介质(包括磁性介质、固态介质、光学介质等)的任何类型的存储设备的系统和/或方法。
42.图2示出了根据本公开的示例实施例的ssd的实施例。图2所示的ssd200可以包括主机接口202、存储设备控制器204以及一个或多个固态存储介质212,在该实施例中,固态存储介质212可以用一个或多个nand闪存管芯来实现。存储设备控制器204可以包括闪存转换层(flash translation layer,ftl)206、闪存接口208和存储器210。在一些实施例中,存储设备控制器204可以管理闪存介质212和/或向该ssd可以附接到的主机提供数据传输访问。
43.闪存介质212可以用于存储用户数据216和/或内部数据218,例如用于后台操作。然而,不同的实施例可以使用不同类型的nand闪存介质,诸如单级单元(single-level cell,slc)、多级单元(multi-level cell,mlc)、三级单元(triple-level cell,tlc)等,以及不同的制造工艺。这可能导致大范围的闪存介质性能特征,这又可能降低存储设备的数据传输行为的确定性和/或可预测性。
44.主机接口202可以使ssd 200能够与存储服务器(诸如图1中的存储服务器106之一)通信。在一些实施例中,存储服务器可以表现为ssd 200的主机。在一些实施例中,存储服务器可以对ssd 200基本透明,并且诸如图1中的应用服务器102之一的应用服务器可以充当ssd 200的主机。
45.主机接口202可以用任何合适的接口和/或协议214来实现,接口和/或协议214包括外围组件互连高速(peripheral component interconnect express,pcie)、非易失性存储器高速(nonvolatile memory express,nvme)、通过结构的nvme(nvme-over-fabric,nvme-of)、以太网、传输控制协议/互联网协议(transmission control protocol/internet protocol,tcp/ip)、远程直接存储器访问(remote direct memory access,rdma)、通过聚合以太网的rdma(rdma over converged ethernet,roce)、光纤通道(fibrechannel)、无限带宽(infiniband)、串行ata(serial ata,sata)、小型计算机系统接口(small computer systems interface,scsi)、串行附接scsi(serial attached scsi,sas)、iwarp等。
46.在一些实施例中,主机接口202可以在ssd 200和主机之间传输读取和/或写入命令(例如,数据i/o命令)和/或各种介质管理命令(例如,识别、获取日志等)。主机接口202还可以用于在ssd 200和主机(例如,图1所示的存储服务器106的主机系统存储器)之间执行
数据传输。
47.在一些实施例中,ftl 206可以提供主机使用的逻辑地址和闪存介质212中的数据的物理地址位置之间的映射。在一些实施例中,ftl 206还可以执行如上所述的一个或多个后台管理操作,诸如垃圾收集(garbage collection,gc)、磨损均衡、从不安全关机中恢复等。因此,来自主机的i/o命令可以与后台操作共存,并且这两种类型的闪存介质访问可以相互竞争闪存介质资源。这可能导致主机观察到的性能特征的变化,这可能降低ssd 200和主机之间的数据传输行为的确定性和/或可预测性。在一些实施例中,ftl 206可以在ftl 206内部或在外部存储器210中存储一个或多个内部数据结构。这可能引入进一步的性能变化,这也可能降低ssd 200和主机之间的数据传输行为的确定性和/或可预测性。
48.在一些实施例中,闪存接口208可以在闪存介质212上执行实际的数据读取和/或写入操作。闪存接口208可以使用诸如开放nand闪存接口(open nand flash interface,onfi)、toggle等任何协议来实现到闪存介质212的一个或多个闪存通道220,以访问闪存介质212。附加地,闪存介质212可以具有用于实现读取和/或写入操作的某些介质特定的规则和/或定时参数。闪存接口208还可以操作来增加或最大化闪存介质212的方面,诸如性能、功耗等。闪存接口208还可以执行一个或多个操作来防止介质错误,例如,通过执行数据编码和/或纠错来提高数据可靠性。
49.如上所述,ssd可以管理一个或多个复杂操作,以提供可靠的数据存储。ssd 200的任何或所有这些实现细节可能导致i/o命令处理性能的变化,这可能降低数据传输的确定性和/或可预测性和/或导致突发数据传输行为。
50.以指定数据速率进行数据传输
51.图3示出了根据本公开的示例实施例的存储设备的实施例,该存储设备可以以指定数据速率和/或峰值突发大小实现数据传输。图3所示的存储设备300可以包括主机接口302、存储设备控制器304和存储介质312。在一些实施例中,存储设备控制器304可以包括逻辑307,该逻辑307被配置为以指定数据速率和/或峰值突发大小实现数据传输。
52.在一些实施例中,存储设备300可以使用任何连接器配置(诸如串行ata(sata)、小型计算机系统接口(scsi)、串行连接scsi(sas)、u.2等),以任何形式(诸如3.5英寸、2.5英寸、1.8英寸、m.2、企业和数据中心ssd形式(enterprise and data center ssd form factor,edsff)、nf1等)实现。主机接口302可以用任何主机接口和/或协议(诸如上面参考图1和图2所示的实施例描述的那些中的任何一个)来实现。存储介质312可以用任何介质(诸如上面参照图1和图2所示的实施例描述的那些中的任何一个)来实现。存储设备300的一些实施例可以全部或部分地与服务器机箱、服务器机架、数据室、数据中心、边缘数据中心、移动边缘数据中心和/或它们的任何组合等一起实现和/或结合其使用。
53.在一些实施例中,逻辑307可以被配置为实现本文公开的任何方法、技术、过程、操作等。例如,在一些实施例中,逻辑307可以被配置为接收用于存储介质312和主机之间的数据传输的命令,确定用于数据传输的指定数据速率,基于该命令执行存储介质312和主机之间的数据传输,以及基于指定数据速率控制数据传输。在一些实施例中,逻辑307可以进一步被配置为确定峰值突发大小,并基于峰值突发大小控制数据传输。
54.在一些实施例中,存储设备控制器304和/或逻辑307可以用硬件、软件或它们的任何组合来实现,硬件、软件包括组合逻辑、时序逻辑、一个或多个定时器、计数器、寄存器、状
态机、易失性存储器(诸如动态随机存取存储器(dynamic random access memory,dram)和/或静态随机存取存储器(static random access memory,sram))、非易失性存储器(诸如包括与非(nand)存储器的闪存)、持久存储器(诸如交叉网格非易失性存储器、具有体电阻变化的存储器等)、和/或它们的任何组合、执行存储在任何类型存储器中的指令的复杂可编程逻辑器件(complex programmable logic device,cpld)、现场可编程门阵列(field programmable gate array,fpga)、专用集成电路(application specific integrated circuit,asic)、中央处理单元(central processing unit,cpu)(诸如复杂指令集计算机(complex instruction set computer,cisc)处理器(诸如x86处理器)和/或精简指令集计算机(reduced instruction set computer,risc)处理器(诸如arm处理器)等。
55.为了说明本公开的原理,可以在可以使用ssd和/或nvme命令、队列、名称空间等的系统、方法和/或设备的上下文中描述一些示例实现细节。然而,原理不限于这些实现细节,并且可以应用于使用任何类型的存储设备、存储接口和/或协议等的系统、方法和/或设备。附加地,尽管可以在诸如nvme读取和/或写入命令的i/o命令的上下文中描述指定数据速率和/或峰值突发大小特征,但是这些特征可以与任何其他类型的命令、请求等(诸如管理命令、维护命令、其他i/o命令等)一起使用。
56.在一些实施例中,指定数据速率可以指可以由存储设备控制的任何数据传输配置。在一些实施例中,指定数据速率可以指任何数据传输配置(profile),其中对于至少一部分数据传输,数据可以小于主机总线的峰值速率传输。例如,在一些实施例中,指定数据速率可以被实现为恒定的比特率(cbr),其可以指定平均主机总线带宽。
57.在一些实施例中,例如,可以通过在主机数据总线上的峰值传输速率(例如,以峰值线路速率传输数据)和主机数据总线上的空闲状态(例如,不传输数据)的时段之间交替来实现cbr。
58.在一些实施例中,数据传输可以指这样的操作,其中存储设备可以向在主机上运行的应用(诸如图1所示的应用服务器102之一)发送预定量的数据,或者从该应用接收预定量的数据。数据传输可以被实现为例如响应于nvme读取或写入命令的nvme i/o。在这样的实施例中,指定数据速率可以被称为例如每个i/o的指定数据速率,或者每个命令的指定数据速率。在这样的实施例中,如果指定数据速率被实现为cbr,则cbr可以被称为例如每个i/o的cbr或每个命令的cbr。
59.在一些实施例中,数据传输可以指在存储设备和主机之间建立数据流而没有预定量的数据要传输的操作。在这样的实施例中,指定数据速率可以被称为例如每个流的指定数据速率。
60.图4示出了根据本公开的示例实施例的以恒定的比特率和最大峰值突发大小进行数据传输的实施例。图4所示的实施例可以例如用图3所示的存储设备来实现,其中逻辑307可以实现相对于图4描述的任何功能。
61.在图4所示的实施例中,存储设备可以基于从主机接收的i/o命令来执行数据传输(例如,其中数据可以从存储设备发送到主机的读取操作,或者其中数据可以在存储设备处从主机获取和接收的写入操作)。在一些实施例中,i/o命令可以指定要传输的数据的量以及读取操作的源地址或写入操作的目的地址。在存储设备可以通过直接存储器存取(direct memory access,dma)控制数据传输的实施例中,i/o命令可以为读取和写入命令
两者指定源地址和目的地址。
62.此外,i/o命令可以伴随有以下参数中的一个或两个:(1)指定数据速率(例如,可以例如以比特每秒(比特/秒(bit/s))来指定的cbr)和/或(2)峰值突发大小(例如,可以用字节数来指定的最大峰值突发大小)。这些参数中的一个或两个可以伴随i/o命令,例如,通过嵌入该命令中、作为单独的命令发送、作为具有该命令的数据有效载荷发送、在存储设备中预先编程或配置、和/或以任何其他方式。
63.参考图4,横轴可以表示时间,并且纵轴可以表示数据传输速率(例如,以比特/秒为单位)。(如上所述,横轴和/或纵轴上的值可能没有按比例示出)。纵轴上指示的峰值速率可以表示主机总线的线路速率,该线路速率可以是数据在主机总线上传输的实际瞬时速率(例如,物理传递速率)。例如,pcie gen3x4主机总线的瞬时(峰值)速率可能为4gb/s(减去小比例的开销(诸如编码))。作为另一个示例,25gb/s以太网传递链路的瞬时(峰值)速率可能为25gb/s(减去小比例的开销)。
64.然而,在主机上运行的应用可能只需要以低于主机总线峰值速率的恒定数据速率发送或接收数据,以执行其数据处理功能。(例如,主机总线可以具有比用于数据传输的指定cbr更大的带宽容量)。例如,视频处理应用可能只需要以10mb/s的持续平均数据速率接收数据,而不会溢出其(多个)数据缓冲器和/或不需要大的和/或昂贵的突发缓冲器容量。因此,如图4所示,可以与i/o命令一起发送的指定cbr可以低于峰值速率。
65.在一些实施例中,最大峰值突发大小参数可以用于控制峰值传输速率可以由存储设备维护多长时间,而不会导致一个或多个不利影响,例如在诸如交换机和/或路由器和/或端点应用设备的系统组件中的拥塞和/或数据丢失。因此,存储设备可以使用最大峰值突发大小参数来控制存储设备以主机总线传输链路的峰值速率发送或接收数据的时间。
66.在一些实施例中,存储设备可以根据以下等式来确定峰值传输时间:
[0067][0068]
再次参考图4,粗实线400可以指示存储设备和主机之间的瞬时数据传输速率。数据传输可以在时间t1处开始,其中在时间t1处,存储设备可以开始以主机总线峰值速率发送或接收数据。对于数据传输的第一部分(t2-t1),存储设备可以继续以主机总线峰值速率传输数据。存储设备可以计算时间t2-t1使得:
[0069]
最大峰值突发大小=主机总线线路速率
×
(t2-t1)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
[0070]
在时间t2处,存储设备可以开始数据传输的空闲部分(t3-t2)。因此,时间t1和t2之间的曲线400下方的区域可以表示最大峰值突发大小。例如,由于零和峰值数据传输速率之间的转换时间和/或其他影响,本文公开的等式(1)和(2)以及任何其他等式可以是近似的。
[0071]
存储设备然后可以在峰值部分(t4-t3)和(t6-t5)以及空闲部分(t5-t4)之间交替。
[0072]
在一些实施例中,存储设备可以通过调度峰值部分(例如,峰值传输时间)和空闲部分(例如,空闲时间)来控制数据传输,以实现指定cbr。存储设备可以跟踪自数据传输(例如,i/o命令执行)开始以来传输的数据的总量和总时间。存储设备可以如下计算cbr:
[0073][0074][0075]
其中∑数据区块可以表示在数据传输的峰值部分期间传输的数据的区块(chunk)(例如,数据量)的总和,∑峰值时间可以表示在数据传输的峰值部分期间经过的时间的总和,并且∑空闲时间可以表示在数据传输的空闲部分期间经过的时间的总和。
[0076]
如图4所示,细实线402可以表示有效数据传输速率(例如,存储设备和主机之间的平均数据传输速率)。在一些实施例中,存储设备可以定期地地(例如,在数据传输的每个峰值部分和/或每个空闲部分之后)调度数据传输的下一个峰值部分和/或空闲部分,以将有效数据传输速率维护在指定cbr。从图4可以明显看出,有效数据传输速率402可以在指定数据速率(例如,cbr)之上和/或之下波动,同时将长期平均值维护在指定数据速率或其附近。
[0077]
在一些实施例中,存储设备可以支持以多个对应的指定数据速率和/或峰值突发大小的多个并发数据传输(例如,数据流)。例如,存储设备可以维护数据结构,诸如可以跟踪活动i/o命令的表,这些命令可以具有对应的指定数据速率(例如,cbr)和/或峰值突发大小(例如,最大峰值突发大小)。
[0078]
表1示出了根据本公开的示例实施例的用于跟踪具有指定数据速率和/或峰值突发大小的活动i/o命令的数据结构的实施例。对于每个i/o命令(例如,nvme i/o命令),存储设备可以分配内部标识符或标签,如表1的第一列所示。存储设备可以为每个活动i/o命令分配一个条目(例如,行)。存储设备可以从每个i/o命令(例如,nvme i/o命令)中提取传输长度(如果有的话)、指定数据速率(例如,cbr,如果有的话)、最大峰值突发大小(如果有的话)或它们的任何组合,它们可以存储在从i/o命令提取的数据的列的部分中,如表1所示。
[0079]
表1
[0080][0081]
当存储设备执行表1中列出的i/o命令(例如,执行数据传输)时,存储设备可以跟踪每个命令的总执行时间、空闲时间和/或传输的数据量。例如,存储设备可以基本上定期地地扫描表1(例如,以定期的间隔,诸如1微秒),并且对于活动条目中的一些或全部,更新表1的运行时间部分的列中所示的当前执行时间、空闲时间和/或数据传输总数。
[0082]
在一些实施例中,基于一个或多个当前空闲时间,存储设备可以选择命令中的一个或多个命令来开始执行(例如,执行对应的数据传输)。对于这些一个或多个新启动的命令,存储设备可以适当地更新下一空闲时间和/或数据传输字段。当命令的数据传输完成时(例如,该命令的所有数据已传输),可以从表中移除对应的条目,并且可以为可以添加到表中的其他命令释放内部标签。在一些实施例中,存储设备可以支持具有指定数据速率和/或峰值突发大小的活动命令的最大数量。活动命令的最大数量可以例如基于存储设备处可用的逻辑、存储器资源等来确定。
[0083]
为了说明的目的,表已经被描述为用于跟踪活动i/o命令的数据结构的一个可能的实施例。然而,可以使用任何其他类型的数据结构,例如键值存储、链表等,或者它们的任何组合。数据结构可以维护在任何类型的易失性和/或非易失性存储器(诸如sram、dram、闪存、持久存储器等、或它们的任何组合)中。数据结构可以位于任何合适的位置,例如在图2所示的实施例中的存储器210或闪存介质212中。在一些实施例中,诸如图2和图3所示的存储设备控制器可以用一个或多个集成电路芯片(例如,片上系统(system-on-chip,soc))来实现,并且数据结构可以位于任何类型的片上和/或片外存储器中。
[0084]
图5a示出了根据本公开的示例实施例由存储设备进行的两个并发数据传输(也称为i/o)的实施例,其中每个数据传输可以具有恒定的比特率和/或最大峰值突发大小。图5a中所示的顶部轨迹示出了具有瞬时传输速率500的第一数据传输,第一数据传输可以类似于图4中所示的数据传输。然而,在时间t2处,当第一数据传输进入空闲部分时,存储设备可以决定使用当前空闲的主机总线来开始第二i/o命令的第二数据传输,该第二数据传输具有瞬时传输速率502,如图5a中的底部轨迹所示。因此,在时间t2’处,存储设备可以发起第二数据传输的第一峰值部分,该第一峰值部分可以持续到时间t3’。存储设备然后可以开始第二数据传输的第一空闲部分(t4
’‑
t3’)。存储设备然后可以在第二数据传输的峰值部分(t5
’‑
t4’)和空闲部分(t6
’‑
t5’)之间交替。
[0085]
在一些实施例中,存储设备控制器可以通过用一个或多个其他数据传输的峰值传输时间填充第一数据传输中的任何可用空闲时间来寻求最大化主机总线的使用。在一些其他实施例中,存储设备控制器可以允许主机总线上未使用的空闲时间来维护一个或多个数据传输的一个或多个指定数据速率(例如,cbr)。
[0086]
根据本公开的示例实施例,可以以多种方案实现两个或更多个并发数据传输。例如,在一些实施例中,只有第一数据传输500可以以指定数据速率(例如,保证的cbr)来执行,而第二数据传输502可以通过在第一数据传输500中的任何空闲时间期间以主机总线速率传输数据(例如,填充任何空闲时间)来执行。因此,第二数据传输502可以以有效数据传输速率执行,该有效数据传输速率可以基于存储设备控制器为第一数据传输500选择的传输模式而变化和/或确定。例如,在一些情况下,如果存储设备控制器为第一数据传输500选择相对多和/或长的空闲时间,则第二数据传输502的有效数据传输速率可以大于第一数据传输500的cbr。然而,在一些其他情况下,如果存储设备控制器在第一数据传输500中选择相对较少和/或较短的空闲时间,则第二数据传输502的有效数据传输速率可能小于第一数据传输500的cbr。
[0087]
在一些其他实施例中,第一数据传输500和第二数据传输502都可以以对应的指定数据速率(例如,保证的cbr)来执行。在这样的实施例中,可能存在第一数据传输500和第二
数据传输502都空闲的时间,以防止每个数据传输的有效数据传输速率超过指定数据速率(例如,在长期的基础上并且不考虑暂时的波动)。
[0088]
在一些情况下,第二数据传输的一个或多个数据区块(例如,初始最大峰值突发大小)可能不适合第一(例如,较早开始的)数据传输的空闲时间。在这种情况下,存储设备控制器可以决定延迟第二数据传输的开始(或区块),直到第一数据传输完成或者在第一数据传输期间足够长的空闲时间变得可用。然后,第二数据传输可以以指定数据速率单独进行,或者与一个或多个其他数据传输同时进行(例如,数据区块交错)。在一些实施例中,一个或多个附加的考虑,诸如要传输的数据是否可以位于高速缓存中(与存储在闪存介质中相反),和/或要传输的数据是否可以经历纠错,可以用作调度一个或多个数据传输的附加基础。
[0089]
在一些实施例中,可以调整用于检查一个或多个活动命令的进度的时间段(例如,1毫秒、1微秒、100纳秒等),以帮助有效地将用于两个或多个数据传输的数据流打包到主机总线上,例如,以更充分地利用主机总线带宽。在一些实施例中,这可能涉及各种权衡。例如,更短的时间段可以实现更细粒度的控制和/或指定数据速率的更高精度(例如,导致图4中的cbr的有效速率402的更少的过冲(overshoot)和/或下冲(undershoot)),但是它也可以增加开销功率和/或与更频繁的计算相关联的其他资源使用。
[0090]
因此,在一些实施例中,存储设备可以以重叠的方式在主机总线上执行多个数据传输,其中不同数据传输的峰值部分可以交错。取决于实施细节,这可以提高系统和/或设备资源的利用率。
[0091]
在一些实施例中,存储设备可以使用一个或多个空闲时间来访问存储介质,用于如上所述的后台管理操作,诸如垃圾收集、损耗均衡等。因此,用于数据i/o操作的介质访问可以与用于后台管理操作的介质访问交错。在一些实施例中,并且取决于实现细节,这可以提高一个或多个后台操作的效率。
[0092]
图5b示出了根据本公开的示例实施例由存储设备进行的n个并发数据传输的实施例,其中每个数据传输可以具有恒定的比特率和/或最大峰值突发大小。在图5b所示的实施例中,n可以是任何数字。例如,在主机总线可以具有以gb/s测量的带宽,并且数据传输可以具有以几mb/s测量的指定数据速率的一些实施例中,存储设备可以支持数十甚至数百个并发数据传输。如图5b所示,第一数据传输、第二数据传输、

、和第n数据传输可以分别具有506-1、506-2、

、和506-n的瞬时数据传输速率。
[0093]
图6示出了根据本公开的示例实施例的用于在存储设备处接收具有指定数据速率和/或峰值突发大小的命令的方法的实施例。图6所示的实施例可以用于例如向诸如表1的数据结构添加条目。在操作602中,存储设备可以接收具有指定数据速率和/或峰值突发大小的i/o或其他命令。在操作604中,存储设备可以确定它是否已经达到具有指定数据速率和/或峰值突发大小的活动命令的最大数量。如果已经达到最大数量,则该方法可以在操作604继续循环。在一些实施例中,接收到的命令可以被丢弃、放入队列等。该方法可以在操作604继续循环,直到存储设备不再达到具有指定数据速率和/或峰值突发大小的活动命令的最大数量。例如,当命令的数据传输完成并且对应的条目从命令表中移除时,这可能发生。
[0094]
一些实施例可以实现超时(time-out)特征,其中,在接收到具有指定数据速率的数据传输的命令之后,如果条目在命令表中变得可用之前预定时间段期满,则存储设备可
以开始执行该命令的数据传输,但不一定以指定数据速率来执行。例如,存储设备可以使用尽力方式(best efforts approach)开始数据传输,以在主机总线上的任何可用空闲时间和/或其他带宽源期间发送数据。在一些实施例中,取决于实现细节,这可以防止或减少一个或多个数据传输的延迟。
[0095]
在一些实施例中,主机可以跟踪主机可以发送到存储设备的具有指定数据速率和/或峰值突发大小的数据传输的一个或多个命令。基于到存储设备的主机总线连接的带宽,主机可以将它可以发送到存储设备的命令的组合的指定数据速率限制为不超过主机总线带宽的总和(例如,针对适当的开销量进行调整)。因此,在一些实施例中,主机可能不需要比存储设备和/或主机总线连接所支持的更多的聚合数据传输带宽。
[0096]
在操作606中,存储设备可以为接收到的命令分配一个条目(例如,表中的一行),并为该命令分配标签。在操作608中,存储设备可以从命令中提取传输长度(如果有的话)、指定数据速率(如果有的话)和/或最大峰值突发大小(如果有的话),并将它们存储在该命令的对应的表条目中。在操作610中,存储设备可以初始化命令的表条目,并开始在主机总线上寻找空闲时间或其他机会来开始该命令的数据传输。该方法然后可以返回到操作602。
[0097]
图7示出了根据本公开的示例实施例的用于在存储设备处执行具有指定数据速率和/或峰值突发大小的命令的方法的实施例。例如,图7所示的实施例可以用于处理条目和/或移除诸如表1的数据结构的条目。
[0098]
在操作702中,存储设备可以延迟固定的时间段(例如,1微秒)或者实现可以使其能够定期地检查一个或多个活动命令的进度的任何其他特征。在操作704中,存储设备可以检查是否已完成所有活动命令。如果完成了所有活动命令,该方法可以循环到操作702。如果存在任何具有指定数据速率和/或峰值突发大小的未决活动命令,则该方法可以前进到操作706,在操作706中,存储设备可以更新未决活动命令中的一个或多个的累积执行(例如,峰值)时间和剩余空闲时间。这可以例如使用诸如表1的数据结构来实现。
[0099]
在操作708中,存储设备可以确定对于当前执行的活动命令空闲时间是否已经期满。如果空闲时间还没有期满,则该方法可以循环回到操作704。如果空闲时间已经期满,则该方法可以前进到操作710,在操作710中,存储设备可以为特定命令选择并发送下一个数据区块。在操作712中,存储设备可以确定是否已经传输了与该命令相关联的所有数据。如果已经传输该命令的所有数据,则该方法可以前进到操作714,在操作714中,存储设备可以从诸如表1的数据结构中移除与该命令相关联的条目。该方法然后可以循环回到操作704。如果在操作712,还没有传输该命令的所有数据,则该方法可以前进到操作716,在操作716中,存储设备可以更新累积数据传输量,并在表1中为该命令选择下一个当前空闲时间。该方法然后可以循环回到操作704。
[0100]
在一些实施例中,在操作710中,存储设备可以总是选择并发送最大峰值突发大小作为下一个数据区块。然后,存储设备可以通过在操作716中选择下一个空闲时间来维护指定数据速率(例如,cbr),使得平均有效数据速率收敛到指定数据速率。在一些其他实施例中,存储设备可以尝试在操作710选择下一个数据区块的传输时间,和/或在操作716选择空闲时间,以防止有效数据速率过冲和/或下冲指定数据速率超过一定量。
[0101]
根据本公开的示例实施例的存储设备可以通过任何机制向一个或多个主机传送其以指定数据速率和/或峰值突发大小执行数据传输的能力。例如,在一些实施例中,存储
设备可以通过例如可以在nvme命令结构中实现的标识数据结构来通告能力。可以暴露给主机的能力的一些示例可以包括:(1)支持指定数据速率的能力(例如,每个i/o的cbr(cbr per i/o));(2)支持每个i/o的峰值突发速率的能力;和/或(3)指定数据速率和/或峰值突发速率支持的数据传输和/或流的最大数量。在一些实施例中,存储设备可以允许主机启用和/或禁用其能力中的一个或多个,以便以指定数据速率和/或峰值突发大小执行数据传输。
[0102]
在一些实施例中,主机可以查询存储设备以确定该存储设备以指定数据速率和/或峰值突发大小执行数据传输的能力。例如,在用nvme架构实现的一些实施例中,主机处的nvme驱动器和/或系统软件可以读取从连接的存储设备接收的标识数据结构,以确定存储设备支持每个i/o的cbr。然后,驱动器可以例如使用nvme设置特征(set feature)和/或获取特征(get feature)命令来配置和/或启用存储设备中的每个i/o的cbr特征。在启用每个i/o的cbr特征后,nvme驱动器和/或系统软件可以将期望的cbr和/或最大峰值突发大小字段插入其发送到存储设备的一个或多个nvme i/o命令中。
[0103]
图8示出了根据本公开的示例实施例的可以以指定数据速率和/或峰值突发大小实现数据传输的存储设备的示例实施例。例如,图8所示的实施例可以用于实现图3所示的实施例。
[0104]
图8所示的存储设备800可以包括一个或多个命令队列822、主机接口802、存储设备控制器804和闪存介质812。存储设备控制器804可以包括计算逻辑807a、命令逻辑807b、命令数据结构810、ftl 806和闪存接口808。在一些实施例中,主机接口802、ftl 806、闪存接口808和/或闪存介质812可以以类似于图2和图3所示的实施例中的对应组件的方式来实现。在一些实施例中,一个或多个命令队列822、主机接口802和/或存储设备控制器804(包括计算逻辑807a、命令逻辑807b、命令数据结构810、ftl 806和/或闪存接口808)中的任何一个或全部可以用硬件、软件或它们的任何组合来实现,例如,如上面参考图3所示的实施例所述。
[0105]
一个或多个命令队列822(例如,nvme提交和/或完成队列)可以在主机、存储设备或它们的组合中实现。
[0106]
命令逻辑807b可以解析和/或执行从主机接收的命令,包括由指定数据速率和/或峰值突发大小伴随的命令。在一些实施例中,命令逻辑807b可以实现与接收和/或执行命令相关的功能(诸如上面参考图4、图5a、图6和图7描述的功能)中的一些或全部功能。例如,命令逻辑807b可以创建和/或维护诸如表1的数据结构,以管理具有指定数据速率和/或峰值突发大小的活动命令。
[0107]
计算逻辑807a可以执行与为一个或多个数据传输维护指定数据速率相关的一个或多个计算。例如,在一些实施例中,计算逻辑807a可以执行等式(1)、等式(2)、等式(3)和/或等式(4)中所示的计算中的任何或所有计算。作为另一个示例,在一些实施例中,计算逻辑807a可以执行计算中的任何或所有计算,以确定表1的运行时间部分的列中的当前执行时间、当前数据传输和/或当前空闲时间。
[0108]
命令数据结构810可以用于例如存储用于实现具有指定数据速率和/或峰值突发大小的数据传输的任何数据结构。例如,命令数据结构810可以用于存储诸如表1的命令表。命令数据结构810可以例如用dram、sram、闪存、持久存储器等来实现。命令数据结构810可
以用存储器来实现,该存储器可以与存储设备控制器804的一个或多个其他组件集成和/或分离。在存储设备处确定指定数据速率
[0109]
根据本公开的示例实施例的一些存储设备可以在存储设备处为一个或多个数据传输确定指定数据速率和/或峰值突发大小。例如,在一些实施例中,存储设备可以通过监视所接收的具有指定数据速率的命令来收集数据。诸如ai(例如,机器学习)的任何类型的算法可以应用于收集的数据,以将命令分类成具有相似模式(其可以包括相似的指定数据速率)的集群。因此,可以将指定数据速率分配给具有相似模式的命令的每个集群。然后,当接收到不具有指定数据速率的命令时,具有相似模式的集群的数据速率可以被应用于该命令。或者,即使接收到具有指定数据速率的命令,如果该命令具有类似于已知集群的模式,则存储设备可以用经学习的数据速率代替指定数据速率。在一些实施例中,可以基于命令的模式将数据速率的默认值应用于命令。
[0110]
可以用于确定命令模式的参数的示例可以包括队列的内容,诸如提交和/或完成队列、提交队列id(submission queue id,sqid)、完成队列标识(completion queue id,cqid)、逻辑块地址(logical block addresslba)范围、命令id、名称空间标识符(namespace identifier,nsid)、流标识符(stream id)、区域id、主机标识符(host id)、网络参数(诸如以太网介质访问控制(ethernet mac)、tcp/ip、用户数据报协议/互联网协议(user datagram protocol/internet protocol,udp/ip)、日期、时间等),和/或任何存储和/或联网参数。因此,在一些实施例中,存储设备可以基于诸如上述的一个或多个监视的参数,在很少或没有直接主机输入的情况下,以指定数据速率和/或峰值突发大小执行数据传输。
[0111]
在一些示例实施例中,使用如上所述的模式识别方案,存储设备可以确定适合于视频流的特定数据速率可以应用于晚上时间期间住宅区的数据传输和/或用户最有可能观看视频的网络。例如,历史数据可能显示,当在几个小时内平均时,这些类型的流可能具有大约10mb/s的平均数据速率。存储设备还可以基于学习用户设备和/或网络组件的缓冲区大小来确定在这些时间和地点某些峰值突发大小可以应用于视频流数据传输。在一些示例实施例中,使用如上所述的模式识别方案,存储设备可以确定某一指定数据速率可以应用于来自某一提交队列id的命令。
[0112]
在一些实施例中,存储设备可以将或多个经学习的值指定数据速率和/或峰值突发大小应用于数据传输,例如,通过将这些经学习的值中的一个或多个加载到诸如表1的数据结构的对应条目中。
[0113]
附加实施例
[0114]
根据本公开的示例实施例的一些系统、方法和/或设备可以实现任何数量的以下特征和/或提供任何数量的以下优点。i/o命令的恒定的比特率(cbr)执行可以被实现用于去往和/或来自主机存储器的数据传输。主机可以为一个或多个nvme i/o命令指定cbr。主机可以为一个或多个nvme i/o命令指定最大峰值突发大小。主机可以启用和/或禁用存储设备中的cbr特征。存储设备可以例如通过标识数据结构来通告cbr特征。存储设备可以通告它可以支持的并发cbr流的最大数量。一个或多个cbr特征可以独立于传递接口和/或协议,诸如pcie、以太网、专有接口和/或协议、toggle、onfi、双倍数据速率(ddr1、ddr2、ddr3、ddr4等)、tcp/ip、udp/ip、infiniband、rdma等。一些实施例可以提供数据传输的精细带宽
控制。一些实施例可以提供一个或多个主机总线、网络、交换机、路由器等的更可预测的行为。一些实施例可以在终端使用应用中提供更可预测的数据缓冲器使用。一些实施例可以实现流式数据处理应用的更有效的实现。一些实施例对于诸如移动应用、游戏等对延迟敏感的应用可能是有益的。一些实施例可以实现更有效的存储设备控制器后台操作。一些实施例可以基于例如吞吐量需求来实现更有效和/或最优的数据放置。一些实施例可以为可以共享存储设备的多租户和/或虚拟化用例提供有效支持。
[0115]
图9示出了根据本公开的示例实施例的数据传输方法的实施例。图9所示的方法可以例如使用图3和图8所示的任何装置来实现。该方法可以在操作902开始。在操作904中,该方法可以在存储设备处接收用于存储设备和主机之间的数据传输的命令。在操作906中,该方法可以确定用于数据传输的指定数据速率。在操作908中,该方法可以基于该命令来执行存储设备和主机之间的数据传输,其中存储设备基于指定数据速率来控制数据传输。该方法可以在操作910结束。
[0116]
图10示出了根据本公开的示例实施例的系统的示例实施例,该系统具有能够以指定数据速率和/或峰值突发大小执行数据传输的主机和存储设备。图10所示的系统可以包括通过主机总线1016连接的主机1001和存储设备1000。主机1001可以包括逻辑1014,逻辑1014可以实现本文描述的主机的任何功能。例如,逻辑1014可以使主机1001能够查询存储设备1000,以确定存储设备1000以指定数据速率和/或峰值突发大小执行数据传输的能力。逻辑1014可以用硬件、软件或它们的任何组合来实现,例如,如上面关于图3所示的逻辑307所述。图10所示的存储设备1000可以包括主机接口1002、存储设备控制器1004和存储介质1012。在一些实施例中,存储设备控制器1004可以包括逻辑1007,该逻辑1007被配置为以指定数据速率和/或峰值突发大小实现数据传输。
[0117]
图9所示的实施例以及本文描述的所有其他实施例是示例操作和/或组件。在一些实施例中,可以省略一些操作和/或组件,和/或可以包括其他操作和/或组件。此外,在一些实施例中,操作和/或组件的时间和/或空间顺序可以变化。尽管一些组件和/或操作可以被示为单独的组件,但是在一些实施例中,单独示出的一些组件和/或操作可以被集成到单个组件和/或操作中,和/或示为单个组件和/或操作的一些组件和/或操作可以用多个组件和/或操作来实现。
[0118]
上面公开的一些实施例已经在各种实现细节的上下文中进行了描述,但是本公开的原理不限于这些或任何其他具体细节。例如,一些功能已经被描述为由某些组件实现,但是在其他实施例中,功能可以分布在不同位置并且具有各种用户接口的不同系统和组件之间。某些实施例已经被描述为具有特定的过程、操作等,但是这些术语也包含特定过程、操作等可以用多个过程、操作等来实现或多个过程、操作可以集成到单个过程、步骤等中的实施例。对组件或元素的引用可以仅指组件或元素的一部分。例如,对集成电路的引用可以引用集成电路的全部或仅一部分,对块的引用可以引用整个块或一个或多个子块。在本公开和权利要求中使用诸如“第一”和“第二”的术语可能仅仅是为了区分它们所修饰的事物,并且可能不指示任何空间或时间顺序,除非从上下文中是明显的。在一些实施例中,对事物的引用可以引用事物的至少一部分,例如,“基于”可以指“至少部分基于”等。对第一元素的引用并不意味着第二元素的存在。为了方便起见,可以提供各种组织辅助,诸如节标题等,但是根据这些辅助安排的主题和本公开的原理不限于这些组织辅助。
[0119]
根据本专利公开的发明原理,上述各种细节和实施例可以被组合以产生附加的实施例。由于本专利公开的发明原理可以在布置和细节上进行修改而不脱离本发明构思,因此这种改变和修改被认为落入所附权利要求的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1