使用带网络接口的存储设备的内容分发系统、方法和设备与流程
未命名
07-15
阅读:99
评论:0
使用带网络接口的存储设备的内容分发系统、方法和设备
1.相关申请的交叉引用
2.本技术要求2021年12月21日提交的序列号为63/292,421的美国临时专利申请的权益,出于所有目的,通过引用将其并入本文中。
技术领域
3.本公开一般涉及设备,更具体地涉及支持内容分发的设备。
背景技术:
4.为了在网络上分发内容(例如,流式传输视频数据),可以将内容从存储设备加载到存储器中。一旦在存储器中,内容就可以被转码(即,以接收方可接受的格式编码)。一旦准备好内容进行传输,内容可以从存储器移动到网络接口卡并发送给接收者。
5.仍然需要改进分发内容的处理。
技术实现要素:
6.本公开的实施例包括一种设备。该设备可以包括存储设备和网络接口卡。
7.可以从存储设备访问数据并将其传送到网络接口设备以进行内容传送。
附图说明
8.下面描述的附图是可以如何实现本公开的实施例的示例,并且不旨在限制本公开的各实施例。本公开的各个实施例可包括未在特定图中示出的元件和/或可省略特定图中所示的元件。这些图纸旨在提供说明,可能不按比例绘制。
9.图1出了根据本公开的实施例的包括可用于内容传送的设备的系统。
10.图2示出了根据本公开的实施例的图1的机器的细节。
11.图3示出了根据本公开的实施例的图1的设备的细节。
12.图4示出了根据本公开的实施例的可以从图1的处理器发送到图1的设备的请求的细节以及由图1的设备作为响应而执行的操作。
13.图5示出了根据本公开的实施例的图3的存储设备的细节。
14.图6示出了根据本公开的实施例的图3的缓冲器的细节。
15.图7a示出了根据本公开的实施例的可以包括在图1的设备中的多个缓冲器。
16.图7b示出了根据本公开的实施例的划分成区域的图3的缓冲器。
17.图8示出了根据本公开的实施例的正由图3的电路处理以产生数据的不同编码的数据。
18.图9示出了本公开的实施例适用的硬件和软件环境。
19.图10示出了根据本公开的实施例的图1的设备,其包括可用于连接到多个存储设备和/或网络接口设备的根端口。
20.图11示出了根据本公开的实施例的图1的设备处理来自图1的处理器的请求的示
例过程的流程图。
21.图12示出了根据本公开的实施例的图1的设备处理来自图1的处理器的请求的另一示例过程的流程图。
22.图13示出了根据本公开的实施例的图3的存储设备将数据预取到图3的缓冲器中的示例过程的流程图。
23.图14示出了根据本公开的实施例的图1的处理器向图1的设备发出请求的示例过程的流程图。
24.图15示出了根据本公开的实施例的图1的处理器向图1的设备发出请求的另一示例过程的流程图。
具体实施方式
25.现在将详细参考本公开的实施例,其示例在附图中示出。在下面的详细描述中,阐述了许多具体细节以使得能够彻底理解本公开。然而,应当理解,本领域普通技术人员可以在没有这些具体细节的情况下实践本公开。在其他情况下,尚未详细描述公知的方法、过程、组件、电路和网络,以避免不必要地混淆实施例的方面。
26.应当理解,尽管这里可以使用术语第一、第二等来描述各种元件,但是这些元件不应受到这些术语的限制。这些术语仅用于把一个元件与另一个元件区分开来。例如,在不脱离本公开的范围的情况下,第一模块可以称为第二模块,并且类似地,第二模块可以称作第一模块。
27.在本公开的说明书中使用的术语仅用于描述特定实施例的目的,而不旨在限制本公开。如在本公开和所附权利要求的说明书中所使用的,单数形式“一个”、“一”和“该”也意图包括复数形式,除非上下文清楚地另有指示。还应理解,此处使用的术语“和/或”是指并包括一个或多个相关列出项目的任何和所有可能的组合。将进一步理解,当在本说明书中使用时,术语“包括”和/或“包含”指定了所述特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其他特征、整数,步骤、操作,元件、组件和/或其组的存在或添加。附图的组件和特征不一定按比例绘制。
28.内容分发——例如,视频点播服务——越来越受欢迎。客户可以按需访问其内容,而不是拥有他们喜欢的内容的物理拷贝,如数字视频光盘(dvd)或蓝光光盘,将内容的存储留给内容提供商。
29.当客户请求访问特定内容时,内容提供商可以首先验证客户有权访问该内容。假设客户有权访问内容,则内容提供商可以在其存储设备上定位所需内容。内容可以转换成客户可以使用的格式,然后内容可以分发(流式传输)给客户。
30.除了不必拥有内容的物理拷贝之外,这种模型对客户还有其他好处。对于dvd或蓝光光盘,在客户能够访问合适的播放器时他可能受限于观看该内容;对于通过网络分发的内容,可能不需要这样的播放器。只要适当的网络连接可用,无论物理位置如何,都可以访问内容。
31.此外,客户能够在任意数量的设备上观看内容,而不限于可以连接到适当播放器的特定设备,并且内容可以从一个设备传递到另一个设备。例如,客户可能开始在高清电视上观看内容,将内容传输到智能手机,然后结束在标准高清电视上观看内容。内容提供商可
以基于在特定时间使用的设备、网络服务提供商施加的带宽限制或基于网络流量条件来适当地编码内容。
32.但是为了分发这样的内容,内容提供商可以将内容从存储设备加载到连接到处理器的存储器中。处理器然后可以将存储器中的数据转码为适合于客户设备的编码。在转码完成之后,然后可以将内容传输到网络接口卡,以通过网络将内容传输给客户。
33.这种内容分发模型包含一些固有的限制。首先,即使数据没有被转码(但能够以存储在存储设备上的形式传输),数据也首先从存储设备移动到存储器,然后移动到网络接口卡。可能会有与将数据移动两次(一次从存储设备移动到存储器,一次从存储器移动到网络接口卡)相关联的时延,这可能会增加向客户传输数据所需的时间量。此外,通过使处理器执行转码,可以减少可用于处理器进行其他操作的周期数,这可能会减慢或延迟其他操作。
34.本公开的实施例可以通过将存储设备和网络接口卡组合成单个设备来解决这些限制。设备可以向处理器暴露功能以访问设备的存储侧和网络接口侧,从而使处理器能够协调设备操作。该设备还可以包括缓冲器,该缓冲器可以用于存储从存储侧传送到网络接口侧的数据。以此方式,数据可以直接从存储侧移动到网络接口侧,而不必通过主机系统的存储器,从而加速内容的分发。该设备可以在没有处理器直接参与的情况下执行内容传输。
35.本公开的实施例还可以包括当驻留在缓冲器中时可以执行数据转码的电路(例如现场可编程门阵列(fpga)、专用集成电路(asic)、片上系统(soc)或处理器)。以此方式,当其他操作可能正在等待时,处理器可以避免花费时间执行转码。
36.本公开的实施例可以包括多于一个存储功能和/或多于一个网络接口功能,从而扩展了可以从中访问内容的总存储和/或设备分发的数据量。本公开的实施例还可包括一个或多个根端口或其他机制,以连接可用于建立到存储设备和/或网络接口卡的连接的多个设备。
37.图1出了根据本公开的实施例的包括可用于内容传送的设备的系统。在图1中,机器105(也可以称为主机或系统)可以包括处理器110、存储器115和设备120。处理器110可以是任何种类的处理器。(为了便于说明,处理器110与下面讨论的其他组件一起显示在机器外部:本公开的实施例可以包括机器内的这些组件。)虽然图1示出了单个处理器110,但是机器105可以包括任意数量的处理器,每个处理器可以是单核或多核处理器,每个都可以实现精简指令集计算机(risc)架构或复杂指令集计算机架构(cisc)(以及其他可能性),并且可以以任何期望的组合混合。
38.处理器110可以耦合到存储器115。存储器115可以是任何种类的存储器,例如闪存、动态随机存取存储器(dram)、静态随机存取存储器(sram)、永久随机存取存储器、铁电随机存取存储器(fram)或非易失性随机存取存储器(nvram)),例如磁阻随机存取存储器(mram)。根据需要,存储器115可以是易失性或非易失性存储器。存储器115也可以是不同存储器类型的任何期望的组合,并且可以由存储器控制器125管理。存储器115可以用于存储可以被称为“短期”的数据:即,预期不会存储较长时间段的数据。短期数据的示例可包括临时文件、应用在本地使用的数据(可能已从其他存储位置复制)、等等。
39.处理器110和存储器115还可以支持各种应用可以运行的操作系统。这些应用可以发出从存储器115或设备120读取数据或向存储器115或存储器120写入数据的请求(也可以称为命令)。如下面参考图3进一步讨论的,设备120可以包括存储设备和网络接口设备。存
储设备可用于支持经由某种文件系统读取或写入数据的应用,并且网络接口设备可用于通过网络130发送或接收数据,可能发送到客户端设备135或从客户端设备135接收数据(以及其他可能性)。可以使用设备驱动器140访问设备120。尽管图1示出了一个设备120,但是机器105中可以有任意数量的设备120。存储设备可以支持任何期望的协议,包括例如非易失性快速存储器(nvme)协议。不同的存储设备可以支持不同的协议和/或接口。例如,存储设备可能支持高速缓存一致性互连协议,该协议可以支持对存储设备上的数据的块级协议(或任何其他更高粒度级别)访问和字节级协议(或者任何其他更低粒度级别)访问。这种高速缓存一致性互连协议的一个示例是计算快速链接(cxl)协议,它支持使用cxl.io协议按块访问数据,并使用cxl.mem协议按字节访问数据。以这种方式,cxl存储设备上的数据可以作为块级数据(如ssd)或字节级数据(例如存储器)访问:cxl存储设备可以用于扩展系统存储器。
40.虽然以上描述使用通用术语“存储设备”,但本公开的实施例可以包括可以从使用计算存储单元中受益的任何存储设备格式,其示例可以包括硬盘驱动和固态驱动(ssd)。以下对“ssd”的任何引用应理解为包括本公开的此类其他实施例。此外,可以混合不同类型的存储设备。例如,一个存储设备可能是硬盘驱动,另一个存储设备可能是ssd。
41.网络130可以是任何期望类型的网络。例如,网络130可以是局域网(lan)、广域网(wan)、城域网(man)或诸如因特网的全球网络。网络130还可以包括这些网络的任何期望的组合。例如,机器105和客户端设备135之间的连接可以包括lan(机器105连接到该lan)、另一lan(客户端设备135连接到该另一lan)以及连接两个lan的更大网络,例如man或因特网。网络130可以包括有线连接、无线连接或两者。此外,网络130可以支持使用虚拟专用网络,以保护机器105和客户端设备135之间的至少部分连接的安全。
42.尽管图1将机器105描绘为服务器(其可以是独立的或机架式服务器),但是本发明构思的实施例可以包括任何期望类型的机器105而不受限制。例如,机器105可以用台式机或膝上型计算机或可以受益于本发明构思的实施例的任何其他机器来代替。机器105还可以包括专用便携式计算机器、平板电脑、智能手机和其他计算机器。类似地,虽然图1将客户端设备135描绘为塔式计算机,但是客户端设备135可以是台式或膝上型计算机、便携式计算设备、平板电脑、智能手机或任何其他期望的设备。
43.图2示出了根据本公开实施例的图1的机器105的细节。在图2中,典型地,机器105包括一个或多个处理器110,处理器110可以包括存储器控制器125和时钟205,其可以用于协调机器的组件的操作。处理器110还可以耦合到存储器115,例如,存储器115可以包括随机存取存储器(ram)、只读存储器(rom)或其他状态保持介质。处理器110还可以耦合到存储设备210和网络连接器215,网络连接器215可以是例如以太网连接器或无线连接器。处理器110还可以连接到总线220,用户接口225和输入/输出(i/o)接口端口可以连接到该总线220,这些端口可以使用i/o引擎230以及其他组件来管理。
44.图3示出了根据本公开实施例的图1的设备120的细节。在图3中,设备120可以包括存储设备305和网络接口设备310(也可以称为网络接口卡)。存储设备305可以像任何存储设备一样工作,处理读取数据、写入数据和/或删除数据的请求。存储设备305可以是任何期望形式的存储设备,并且可以根据任何期望的协议操作。例如,存储设备305可以是ssd或硬盘驱动,并且存储设备305可能处理文件系统请求或密钥值请求。
45.网络接口设备310可以像任何网络接口设备一样工作,并且可以包括到网络130的连接,如图所示。网络接口设备310可用于通过网络130在图1的机器105处发送或接收数据。
46.存储设备305和网络接口设备310可以包括可以用于向设备发出请求的功能。例如,存储设备305可以包括物理功能(pf)315,网络接口设备310可以包括pf 320。在pf 315接收的请求然后可以由存储设备305处理,在pf320接收的请求随后可以由网络接口设备310处理。
47.因为存储设备305和网络接口设备310可以是设备120的一部分,所以功能315和320对于图1的处理器110可能不直接可见。因此,设备120可以列举由存储设备305和/或网络接口设备320暴露的各种功能。设备120还可以包括主机接口325,其可以向图1的处理器110暴露功能330-1和330-2(其可以统称为功能330),其可以对应于存储设备120和/或网络接口设备310暴露的功能315和/或320。以这种方式,图1的处理器110可以向功能330-1和330-2发出请求,然后这些请求可以传送到存储设备305和/或网络接口设备310。在本公开的一些实施例中,主机接口325可以包括可以由图1的处理器110枚举的端点,以确定哪些设备可用以及这些设备暴露了哪些功能。
48.在本公开的一些实施例中,存储设备305和/或网络接口设备310可以暴露多于一个pf。在本公开的这样的实施例中,主机接口325可以暴露相等数量的功能,使得图1的处理器110能够使用存储设备305和/或网络接口设备310提供的所有可用功能。
49.在本公开的一些实施例中,存储设备305和/或网络接口设备310还可以暴露一个或多个虚拟功能(vf)。vf与pf的区别在于vf可以与pf共享硬件(而两个pf可以各自使用单独的硬件)。在本公开的这些实施例中,主机接口325可以暴露可以对应于pf和vf两者的功能。在本公开的一些实施例中,主机接口325可以暴露与存储设备305和/或网络接口设备310的每个pf对应的pf,并且可以暴露对应于存储设备305和/或网络接口设备310的每个vf的vf。在本公开的其他实施例中,主机接口325可以仅暴露pf,每个暴露的pf对应于存储设备305和/或网络接口设备310的pf或vf。
50.在没有设备120(并且具有单独的存储设备305和网络接口设备310)的系统中,图1的处理器110可以将数据从存储设备305读取到图1的存储器115中。图1的处理器110然后可以将数据从图1的存储器115发送到网络接口设备310,以通过网络130传输。通过包括设备120,本公开的实施例可以避免需要将数据从存储设备305移动到图1的存储器115,然后移动到网络接口设备310:数据可以直接从存储设备305移动到网络接口设备310,而不涉及图1的存储器115。本公开的实施例可以通过避免向和从图1的存储器115传输数据来减少传输数据所涉及的时延。
51.在本公开的一些实施例中,网络接口设备310可以直接从存储设备305读取数据,如虚线335所示。如果网络接口设备310直接从存储设备305读取数据,则可能仅存在一个操作来传输数据(从存储设备305到网络接口设备310),这意味着可以尽可能高效地传输数据。
52.但是对于内容传送系统,让网络接口设备310直接从存储设备305读取数据可能不是最有效的方法。一方面,存储设备305可能正在存储可能同时以不同方式使用的数据。例如,可能要求存储设备305存储新数据,或者读取数据,以便应用(可能在图1的处理器110上运行)可以处理数据。根据排队的请求的数量,网络接口设备310可能必须等待,才能满足其
从存储设备305读取数据的请求。
53.作为网络接口设备310直接从存储设备305读取数据的替代方案,存储设备305可以首先将要使用网络接口设备320发送的数据复制到缓冲器340。缓冲器340然后可以根据需要存储数据,直到网络接口设备准备好发送数据为止。换言之,存储设备305可以预取期望由网络接口设备310发送的数据,并将该数据存储在缓冲器340中,从而当网络接口设备320准备好通过网络130发送更多数据时,网络接口设备305可以从缓冲器340读取数据。
54.缓冲器340可以实现为任何期望形式的存储器。在本公开的一些实施例中,缓冲器340可以实现为易失性存储器,例如dram或sram。在本公开的其他实施例中,缓冲器340也可以实现为非易失性存储器,例如闪存。通常,缓冲器340可以使用具有低时延的存储器来实现,以将数据移入和移出缓冲器340所需的时间最小化。
55.对于用于在存储设备305和网络接口设备310之间存储数据的缓冲器340,缓冲器340可以实现为设备120中的存储器的一部分(也可以使用其他实施,例如链表结构)。缓冲器340可以具有与其相关联的两个指针:头部指针(指向要从缓冲器340读取的下一个数据)和尾部指针(指向缓冲器340中可以写入数据的下一地址)。缓冲器340可以像阵列一样实现,其中地址环回(looping back around)。例如,如果缓冲器340包括从0x1000开始到0x2000结束的地址范围,则在地址0x2000写入数据之后,下一个数据可以写入地址0x1000(好像地址0x1000在地址0x2000后面)。如果头部指针和尾部指针相等,则可以断定缓冲器340是空的;如果尾部指针指向头部指针之后的地址,则可以断定缓冲器340已满。存储设备305和网络接口设备310可以各自能够访问头部指针和尾部指针以检查这些条件(尽管通常存储设备305可能仅在数据写入缓冲器340时更新尾部指针,并且网络接口设备310可能仅在从缓冲器340读取数据之后更新头部指针)。
56.在本公开的一些实施例中,图1的处理器110可以能够访问缓冲器340中的数据;在本公开的其他实施例中,缓冲器340可以仅由存储设备305和/或网络接口设备310访问。但是图1的处理器110可以参与管理缓冲器340。例如,缓冲器340可以使用设备120的存储器的一部分,但不一定使用设备120的存储器的全部。图1的处理器110可以定义缓冲器340使用的地址范围。例如,图1的处理器110可以设置应用于缓冲器340的基地址寄存器,即使图1的处理器110不访问缓冲器340。
57.即使图1的处理器110不从缓冲器340中访问数据,图1的处理器110也可能参与设置缓冲器340的地址范围的原因是图1的处理器110可以编排设备120内的数据移动。例如,如参照以下图4所述,图1的处理器110可以发出关于从存储设备305检索并使用网络接口设备310发送什么数据的指令。图1的处理器110可能指定从存储设备305读取的数据可能存储在缓冲器340中的地址,然后将该地址提供给网络接口设备310,使得网络接口设备可以读取该数据并传送其内容。图1的处理器110也可以使用缓冲器340中的地址来指定应该处理什么数据以及应该如何处理数据,如以下所讨论的。
58.如上所述,缓冲器340中的数据可以在使用网络接口设备310传送数据之前由设备120处理。例如,假设正在传输的数据是视频数据(例如来自内容提供商的视频剪辑或电影)。视频数据可能使用一种编码进行存储:例如,在4k高清视频中。但是如果视频数据正在无法支持4k高清视频的客户端设备135上观看,或者客户端设备135不支持视频数据的特定编码,或者设备120和客户端设备135之间的网络连接缺乏支持4k高清视频的带宽(例如,如
果网络服务提供商限制客户端设备135的带宽),在传输之前将数据转码为另一种格式可能是有用的(或必要的)。
59.当数据在缓冲器340中时,电路345可以执行数据的这种转码。电路345可以取缓冲器340中的数据并将数据转换成客户端设备135能够处理或以其他方式使用的格式。电路345可以以任何期望的方式实现:例如,使用现场可编程门阵列(fpga)、专用集成电路(asic)、图形处理单元(gpu)、通用gpu(gpgpu)、片上系统(soc)、张量处理单元(tpu)、神经处理单元(npu)、或中央处理器(cpu)或其他适当编程的通用处理器,以及其他可能性。
60.注意,根据要发送到客户端设备135的数据的总体大小,要传送的数据的整体可以大于缓冲器340。例如,缓冲器340可能足够大以存储500兆字节(mb)的数据,但要传输的数据的大小为几千兆字节(gb)。例如,如果要传送的数据是一部长篇电影,则可能会出现这种情况。在这种情况下,缓冲器340可能在任何一个时间仅存储部分数据。电路345可以处理缓冲器340中的该数据的部分;然后当缓冲器340被清空(通过网络接口设备310)和填充(通过存储设备305)时,电路345可以当新数据占用缓冲器340时处理新数据。
61.在包括电路345的本公开的实施例中,主机接口325还可以暴露功能330-3,其可以用于向电路345发送请求。例如,图1的处理器110可以向功能330-3发出请求,指定用于对缓冲器340中的数据进行转码的期望格式。
62.注意,如果存储设备305存储数据的多个版本,则可以避免对缓冲器340中的数据进行转码(或其他处理),但在这种情况下,客户端设备135请求的版本可能已经存在于存储设备305上。因此,可能存在一种折衷:处理可以减少存储在存储设备305上的数据量(存储更少版本的数据可以减少数据所需的存储量),但是花费了时间,该时间在所需版本已经存储并准备好传送的情况下可以节省下来。
63.尽管以上讨论集中于使用电路345对缓冲器340中的数据进行转码,但本公开的实施例可以使用电路345以任何期望的方式处理缓冲器340中的数据。例如,电路345可能用于实现转换存储在缓冲器340中的表中的数据的功能。或者,电路345可能用于将数据封装在缓冲器340中,以便传输到期望数据封包为特殊格式的客户端设备135。更一般地,电路345也可以称为加速器。
64.在本公开的一些实施例中,电路345可以将服务质量(qos)标准应用于缓冲器340的使用。例如,电路345可以基于转码特性和/或客户端设备135的需要,指示存储设备305执行数据读取/预取到缓冲器340中。换句话说,数据预取/读取策略可以是qos功能和/或终端用户内容传递需要。
65.在本公开的一些实施例中,可以为数据的传输分配缓冲器340。即,当图1的客户端设备135请求从图1的机器105传送数据时,图1的处理器110可以通知设备120内容将被传送。设备120然后可以在设备120内分配一些存储器,以用作传送此数据的缓冲器340。在本公开的这些实施例中,基于如何分配存储器,设备120中的存储器可以支持使用多于一个的缓冲器340。
66.在一些情况下,网络130的故障可能导致数据未被传送到客户端设备135。在本公开的一些实施例中,如果存在网络130的故障,则数据可以保留在缓冲器340中直到传输完成,使得网络接口设备310能够从缓冲器340重传或重放(replay)数据,直到数据成功传输(此时数据可以从缓冲器340中移除)。在本公开的其他实施例中,如果存在网络130的故障,
则可以将数据存储在存储设备305上以支持重新发送数据。这可以为要由电路345处理的新数据释放缓冲器340。注意,即使数据成功地通过网络130发送,数据(如电路345所处理的)仍可能从缓冲器340复制回存储设备305,使得处理后的数据可以响应于稍后的请求而被发送,而不被重新处理。
67.在本公开的其他实施例中,可以预先确定缓冲器340。然后,当数据被传送到缓冲器340中时,缓冲器340的部分可以被分配来存储数据,并且当数据已经被传送(并且不再需要被存储在缓冲器340中)时,可以对缓冲器340的该部分解除分配。注意,在本公开的这些实施例中,分配存储器的组件(可以是电路345或存储设备305)可以不同于解除分配存储器的组件(可以是网络接口设备310)。
68.尽管图3示出了图1的设备120包括一个电路345(具有一个缓冲器340),本公开的实施例可以包括多个电路345,每个电路345可以独立于其他电路工作(尽管电路345也可以一起工作:例如,在传送到单个客户端设备135之前传送需要处理的大量数据)。多个缓冲器340(或缓冲器340的细分)的可能性将参考以下图7a和图7b进一步讨论。
69.在本公开的一些实施例中,图1的处理器110可以向设备120通知要传送到客户端设备135的总内容大小。然后,设备120可以编排数据到缓冲器340的传输。在本公开的这些实施例中,设备120可以从图1的处理器110卸载数据管理编排。例如,可以使用唯一的或供应商定义的命令(例如nvme命令)来执行这种编排卸载(orchestration offload)。
70.图3示出了发送到pf 330-1和/或330-2的请求被传递到存储设备305和/或网络接口设备310(通过功能315和/或320)。在本公开的一些实施例中,这种传递可以自动发生:发送到由主机接口325暴露的功能330的任何请求都可以传递到设备120的相应子组件。在其他实施例中,在主机接口325处接收到的所有请求,无论哪个功能330接收到该请求,都可以被传送到电路345,电路345然后可以适当地将该请求路由到存储设备305和/或网络接口设备310(并且电路345可以在没有任何进一步路由的情况下处理针对电路345的任何请求)。
71.尽管图3示出了包括一个存储设备305和一个网络接口设备310的设备120,本公开的实施例可以包括多于一个存储设备305和/或多于一个网络接口设备310。此外,尽管图3示出了作为设备120的一部分的存储设备305和网络接口设备310(也就是说,设备120可以实现为物理上结合了存储设备305与网络接口设备320的更大设备),本公开的实施例可以包括与物理上不是设备120的一部分的存储设备305和/或网络接口设备310通信的设备120。换句话说,设备120可以通过设备120外部的总线与存储设备305和/或网络接口设备310通信。设备120如何与多于一个存储设备305和/或多于一个网络接口设备310一起工作,或者与外部存储设备305和/或外部网络接口设备310一起工作,将参考以下图10进一步讨论。
72.在以上讨论中,存储设备305和网络接口设备310建议是设备120内的分立设备。以下图10也建议这个概念。但是在本公开的一些实施例中,存储设备305和/或网络接口设备310可能不是设备120内的分立元件。也就是说,设备120可以提供存储功能和网络接口功能,但不包括可以标识为存储设备或网络接口设备的分立元件。对“设备”(在“存储设备”和/或“网络接口设备”中)的任何引用应理解为包括提供所述功能的分立元件和由设备120提供的适当功能而不包括分立元件。
73.图4示出了根据本公开的实施例的可以从图1的处理器110发送到图1的设备120的
请求的细节以及由图1的设备120作为响应而执行的操作。在图4中,处理器110可以发送请求405。请求405可以标识存储在图3的存储设备305上的数据,该数据打算作为内容传送到图1的客户端设备135。可以使用任何期望的方法来标识数据。例如,请求405可能包括存储在图3的存储设备305上的数据的逻辑地址。或者请求405可能包括与使用图3的存储设备305支持的文件系统的数据相关联的文件名。响应于请求405,图3的存储设备305可以将数据(或数据的至少一部分,取决于其相对于图3的缓冲器340的大小)传送到图3的缓冲器340,如操作410所示。
74.处理器110然后可以发送请求415。请求415可以指定数据如何由图3的电路345进行转码。例如,请求415可能为要由图3的网络接口设备310发送的数据指定特定带宽或特定分辨率,并且图3的电路345可以确保数据符合这些标准。响应于请求415,图3的电路345可以将图3的缓冲器340中的数据进行转码,如操作420所示。
75.处理器110然后可以发送请求425。请求425可以指示图3的网络接口设备310将数据发送到适当的目的地。响应于请求425,图3的网络接口设备310可以从图3的缓冲器340中读取数据,如操作430所示,并且适当地封装数据并通过图1的网络130传输数据,如操作435所示。
76.注意,请求415和425用虚线示出。在本公开的一些实施例中,可以省略请求415和425中的任一个或两者。例如,请求405可能包括否则可能包含在请求415和/或425中的所有信息,在这种情况下,处理器110可能不需要单独发送请求415或425。或者,如果要发送的数据已经是适当的格式并且不需要转码,则可以省略请求415(并且可以不执行操作420)。本公开的实施例可以包括关于可能发送哪些请求405、415和/或425以及可能执行哪些操作410、420、430和/或435的任何和所有此类变化。
77.图5示出了根据本公开实施例的图3的存储设备305的细节。在图5中,存储设备305的实现被示为用于固态驱动。在图5中,存储设备305可以包括连接器505、主机接口层(hil)510、控制器515和各种闪存芯片520-1至520-8(其可以称为“闪存存储”、“非易失性存储”或仅仅是“存储”,其可以统称为闪存芯片520),其可以组织成各种通道525-1至525-4(其可统称为通道525)。
78.连接器505可以是包括在存储设备305中的物理连接器。连接器505可用于将存储设备305连接到图1的机器105中的其他部件,例如包括图1的处理器110。图1的处理器110因此可以经由连接器505与存储设备305通信。连接器505可以是任何期望的类型的连接器,例如串行at附件(sata)连接器、串行连接小型计算机系统接口(scsi)(sas)连接器、小外形因子(sff)连接器、u.2连接器、m.2连接器或半高半长(hhhl)连接器,以及其他可能性。连接器505可用于经由任何期望的总线协议(例如快捷外围部件互连标准(pcie)或cxl)与存储设备305通信,并且可支持任何期望的存储访问协议,例如非易失性存储器快速(nvme)或通过结构(fabric)的nvme(nvme over fabric,nvme-of)协议,或任何高速缓存一致互连协议。
79.连接器505可以包括用于发送和接收数据的一个或多个引脚。这些引脚可以是传统意义上的公引脚(从连接器505的主要部分向外突出的大致圆柱形金属片,忽略了可用于将连接器505与另一设备对准的任何材料)。但是连接器505也可以支持不是公引脚的其他形式的连接。例如,连接器505可以包括用于公引脚的母接收器,公引脚可以是连接到连接器505的另一设备的一部分。或者连接器505可以包括除圆柱体(之外的表面或圆柱体的配
合物),该表面被适当地设计为接触另一设备,从而在连接器505上的接触点和另一设备上的另一接触点之间建立连接。如本文所使用的术语“引脚”旨在涵盖连接器505和设计用于连接到连接器505的任何设备之间的所有此类接触机构。
80.主机接口层510可以管理存储设备305和其他组件(例如图1的处理器110)之间的通信。也就是说,主机接口层510可以通过连接器505使用任何期望的协议来发送和接收数据,并且可以在这样的协议和控制器515使用的格式/协议之间进行转换。主机接口层510还可以管理与可能远离存储设备305的设备的通信(通过连接器505)。也就是说,主机接口层510可以管理与除了图1的处理器110之外的设备(例如,不同于图3的网络接口设备310的加速器或网络接口卡以及其他可能性)的通信,并且其可以是图1的机器105的本地或远程的:例如,通过一个或多个网络连接。这些通信可以包括从存储设备305读取数据的读取请求、向存储设备305写入数据的写入请求、以及从存储设备306删除数据的删除请求、以及其他可能性。
81.主机接口层510可以管理仅跨单个端口的接口,或者可以管理跨多个端口的接口。也就是说,主机接口层510可以使用单个连接器505通信,或者可以使用两个或更多个连接器505通信(如果存储设备305包括并支持多个连接器505)。此外,如果存储设备305包括多个连接器505,则存储设备305可以包括用于每个连接器505的单独的主机接口层510。本发明构思的实施例还可以混合这些可能性(例如,具有三个连接器505的ssd可能具有一个主机接口层510来管理一个连接器505,并且具有第二主机接口层520来管理其他两个连接器505)。
82.控制器515可以使用闪存控制器530管理闪存芯片520上的读和写操作以及垃圾收集和其他操作。(尽管图5建议单个闪存控制器530可能控制沿每个通道525的操作,本公开的实施例可以包括任意数量的闪存控制器530,每个闪存控制器530控制沿任意数量的通道525的操作。因此,例如,可以有四个存储器控制器530,每个通道525一个。)控制器515还可以包括转换层535,其可以管理由图1的机器105使用的逻辑地址(例如逻辑块地址(lba))到数据实际存储在存储设备305上的物理地址(例如物理块地址(pba))的映射。通过使用转换层535,当数据在存储设备305内从一个物理地址移动到另一个物理位置时,不需要通知图1的机器105。控制器515还可包括存储器540,其可用于控制器515内的本地操作:例如,在读取数据、写入数据或执行垃圾收集时临时存储数据,或可用于加速读取或写入操作的本地高速缓存。存储器540可以是任何形式的存储器,例如sram或dram。在本公开的一些实施例中,存储器540可以是易失性存储的形式;在本公开的其他实施例中,存储器540可以是非易失性存储的形式。
83.在本公开的一些实施例中,连接器505可以是存储设备305的一部分,如图所示。但在本公开的其他实施例中,连接器505实际上可以是图1的设备120的一部分,其中图1的设备120的内部连接将信息从连接器505传递到存储设备305。
84.尽管图5示出存储设备305包括组织成四个通道525的八个闪存芯片520,本发明构思的实施例可以支持组织成任意数量的通道的任意数量的闪存芯片。类似地,虽然图5示出了ssd的结构,其他存储设备(例如,硬盘驱动)可以使用与图5所示的结构不同的结构来实现,以管理读和写数据,但具有类似的潜在益处。
85.如上所述,存储设备305可以将数据预取到图3的缓冲器340中。在本公开的一些实
施例中,存储设备305可以自己执行这种预取,而不是被指示何时预取数据(通过图1的处理器110或图3的电路345)。图6示出了存储设备305如何确定何时将数据预取到图3的缓冲器340中。
86.在图6中,缓冲器340可以包括两个阈值605和610。阈值605可以标记为低阈值,而阈值610可以标记为高阈值。图3的存储设备305可以将数据预取到缓冲器340中,直到缓冲器340保持足够的数据以超过阈值610。一旦缓冲器340保持足够的数据以超过阈值610,图3的存储设备305可以暂停数据预取,直到缓冲器340保持足够的数据以超过(在另一方向上)阈值605。如果缓冲器340一旦保持足够的数据以超过阈值610,那么当缓冲器340被充分清空以超过阈值605时,图3的存储设备305可以重新开始将数据预取到缓冲器340中。换言之,高阈值610可以表示停止(或暂停)数据预取的触发器,而低阈值605可以表示重新开始数据预取的触发器,其目的是确保缓冲器340通常保持足够的数据,以供图3的电路345处理和/或使用图3的网络接口设备310进行传输,但不会过满。
87.在本公开的一些实施例中,图1的处理器110或图3的电路345正在编排数据移动,图3的存储设备305可以通知图1的处理器110或图3的电路345缓冲器340保持足够的数据以开始把内容传送到图1的客户端设备135。在本公开的实施例中,不需要由图3的电路345进行数据处理,图3的存储设备305也可通知图3的网络接口设备310数据已准备好从图3的缓冲器340读取。
88.尽管图6建议阈值605和610可能是缓冲器340中的指针,只有当缓冲器340总是从左边满时,这种解释才有意义:也就是说,缓冲器340中最旧的数据总是在图6的左端,而逐渐更新的数据朝着右边。但是如果缓冲器340以其他方式实现,例如,循环队列,其头部和尾部指针表示可以在哪里添加新数据并且可以移除旧数据,则这种解释可能不直接可用。相反,最好考虑表示缓冲器340的填充百分比的阈值605和610。例如,低阈值605可能是缓冲器340容量的50%,而高阈值610可能是缓冲器330容量的75%。或者,阈值605和610可能表示缓冲器340跨越的地址范围的一部分。例如,如果缓冲器340包括从0x1000到0x2000的地址范围(即,大约4096个地址),则低阈值605可能是0x500个地址,而高阈值610可能是0x750个地址。(例如,可以通过从尾部指针的地址中减去头部指针的地址来计算缓冲器340中实际存储数据的地址范围,对缓冲器340的大小取模:然后可以将该范围与阈值605和610进行比较,以确定是否已超过阈值605或610。)
89.在上面的讨论中,重点是单个缓冲器340,该缓冲器340用于存储由图1的单个客户端设备135请求的数据。在本公开的一些实施例中,可以共享缓冲器340以支持内容的多播或广播分发。在本公开这样的实施例中,图1的处理器120可以将数据保存在缓冲器340中,直到所有内容接收者都已经接收到他们的数据。
90.除了多播或广播数据之外,图1的设备120可以用于将多个不同的数据分发给图1的客户端设备135。例如,图1的单个客户端设备135可以向多个不同的源请求数据(如果视频和音频数据单独存储,但意图通过图1的客户端设备135进行同步以供呈现,则可能发生这种情况),或者图1的多个客户端设备135可能每个都需要各种数据。在这种情况下,可以修改缓冲器340,如参考下图7a-7b所述。
91.在图7a中,图1的设备120可以包括多个缓冲器而不是使用单个缓冲器340。在图7a中,示出了三个缓冲器340-1至340-3,但是本公开的实施例可以包括任意数量(两个或更
多)的缓冲器340。每个缓冲器340可以如上所述使用,但是可以彼此独立地使用。因此,例如,缓冲器340-1可用于向图1的一个客户端设备135提供内容。缓冲器340-2可用于向图1的另一客户端设备135提供另一内容,并且缓冲器340-3可以用于向图1的又一客户端设备135提供又一内容。
92.在本公开的一些实施例中,每个缓冲器340可以“专用”于图3的特定存储设备305。即,在本公开的那些实施例中,图3的每个存储设备305可以将数据存储在一个缓冲器340中。但在本公开的其他实施例中,图3的存储设备305(或图3的电路345,取决于哪个元件可以将数据存储在缓冲器340中)可以经由解复用器705连接到多个缓冲器340。使用解复用器705,图3的存储设备305可以将数据传输到任何(或一些或全部)缓冲器340中。控制信号(图7a中未示出)可以将数据引导到适当的缓冲器340,使得图3的存储设备305能够指定数据应该加载到哪个缓冲器340中。因此,图3的单个存储设备305可以在多个缓冲器340中存储数据。本公开的其他实施例可以进一步概括这一点,使得图3的多个存储设备305能够连接到解复用器705,从而能够将数据存储在多个缓冲器340中。
93.注意,本公开的一些实施例可以混合这些实现,具有专用于图3的特定存储设备305的一些缓冲器340和图3的一个或多个存储设备305可访问的一些缓冲器340。
94.在本公开的一些实施例中,每个缓冲器340可以“专用”于图3的特定网络接口设备310。也就是说,在本公开的那些实施例中,图3的网络接口设备310可以从一个缓冲器340读取数据。但是在本公开其他实施例中,也可以通过复用器710将多个缓冲器340连接到图3的网络接口设备310(或图3的电路345,这取决于哪个元件可以从缓冲器340中读取数据。图3的网络接口设备310可以使用复用器710从特定缓冲器340访问数据。控制信号(图7a中未示出)可以指定数据应从哪个缓冲器340中读取。因此,图3的单个网络接口设备310可以从多个缓冲器340中读取数据。本公开的其他实施例可以进一步概括这一点,使得图3的多个网络接口设备310能够连接到复用器710,从而能够将数据从多个缓冲器340中读取。
95.注意,本公开的一些实施例可以混合这些实现,具有专用于图3的特定网络接口设备310的一些缓冲器340和图3的一个或多个网络接口设备315可访问的一些缓冲器340。
96.注意,本公开的一些实施例可以省略解复用器705和/或复用器710。例如,如果每个缓冲器340具有唯一的地址范围,则数据将被写入的地址或数据将被读取的地址可以唯一地标识特定的缓冲器340,从而消除了对解复用器705或复用器710的需要。但是包括解复用器705或复用器710可以使得向多个缓冲器340写入数据,和/或可以避免每个缓冲器340具有唯一地址范围的需要(尽管缓冲器340可能仍然需要以某种方式唯一地标识)。
97.可能会出现问题:为什么要将数据写入多个缓冲区340?答案是,在本公开的一些实施例中,图3的电路345可能执行相同数据的不同转码。通过在多个缓冲器340中存储相同的数据,图3的电路345可以在大致相同的时间以不同的方式对相同的数据进行转码。
98.但这种解释可能会引出另一个问题:为什么图3的电路345会在不同的缓冲器340中对相同的数据执行不同的转码?这个问题的答案是,通过在缓冲器340中具有相同数据的不同转码,图3的网络接口设备310可以基于各种标准从适当的缓冲器340中选择编码数据。这些标准可以包括例如图1的客户端设备135的分辨率、适用于图1的客户机设备135的带宽限制或一些其他网络条件(例如网络拥塞)。如果标准在内容的传送期间可能改变,则具有准备好传送数据的多个不同编码可能是有帮助的,从而图1的网络接口设备310可以选择最
适合当前标准的编码。
99.让图3的电路345在多个缓冲器340中生成数据的多个不同编码可能被认为是浪费的。但是,虽然图3的网络接口设备310可能仅从一个缓冲器340传送内容,但其他缓冲器340中的编码内容不一定被浪费。例如,其他缓冲器340中的编码内容可以存储回图3的存储设备305上,从而如果另一客户端需要,可以以后检索这些编码内容。
100.每个缓冲器340可以使用图6的不同阈值605和610。也就是说,用于管理数据预取的不同阈值可以与不同的缓冲器一起使用。此外,图1的电路345可以不同地处理每个缓冲器。例如,电路345可以对每个缓冲器340执行不同的转码,或者可以使用不同的qos标准。
101.尽管图7a建议每个缓冲器340的大小相同,本公开的实施例可以具有不同大小的缓冲器340。
102.与示出多个缓冲器340的图7a相比,在图7b中,缓冲器340可以划分为不同的区域705-1和705-2(其可以统称为区域705)。每个区域705可以由设备120使用,就好像它是一个单独的缓冲器一样,即使图1的设备120可以有效地只有一个缓冲器340。与图7a一样,每个区域705可以具有图6的不同阈值605和610,并且每个区域705可以具有不同的大小。
103.此外,本公开的实施例可以组合这些变化。例如,图1的设备120可以包括多个缓冲器,其中的一些或全部可以划分为区域705。
104.在图7a-7b中,在可以使用多个缓冲器340(或使用区域705来模拟)的情况下,缓冲器340和/或区域705可以被分配空间,并且可以根据任何期望的标准来处理。例如,缓冲器340和/或区域705的大小可能取决于图1的客户端设备135的需求和能力:如果图1的客户端设备135可能仅支持每秒400千比特(kbps)的带宽,则与可以支持每秒3兆比特(mbps)的带宽的客户端相比,缓冲器340或区域705可能相对较小。此外,图3的电路345可以使用不同的qos标准来确定缓冲器340和/或区域705的大小。如果图1的电路345包括多个缓冲器340或多个区域705,则图3的电路345可以向缓冲器340和/或区域705的处理分配不同的优先级:例如,基于此,图1的客户端设备135具有更高的服务水平协议(sla)。
105.图8示出了根据本公开的实施例的数据正由图3的电路345处理以产生数据的不同示例编码。在图8中,数据805可以存储在图3的缓冲器340中。然后,电路345可以执行数据805的转码,以产生可以适合于图1的客户端设备135的数据805的编码810-1到810-5(可以称为编码810)。例如,如果图1的客户端设备135可以支持高带宽和高清晰度内容(例如膝上型计算机、电视或游戏控制台),则电路345可以产生编码810-1,其可以包括1080p视频并且需要3mbps带宽连接。另一方面,如果图1的客户端设备135是具有有限屏幕分辨率的设备,或者通过较慢的网络连接(例如3g无线网络或802.11a/b/n路由器)连接,则电路345可能产生编码810-5,其可以包括240p视频并且需要400kbps带宽连接。
106.注意,随着条件的改变,电路345可以改变数据805的编码。例如,用户可能开始在高清电视上观看视频数据,在这种情况下,编码810-1可能是合适的。在观看中途中,用户可能会切换到通过仅支持900kbps数据的蜂窝网络在智能手机上观看视频数据,其中电路345可能会切换至编码810-4。然后,用户可能切换到通过无线网络连接在膝上型计算机上观看数据,在这种情况下,电路345可能切换到编码810-2或810-3。
107.编码810可以仅表示电路345支持的可能编码的子集。例如,其他编码810可以支持4k或8k分辨率(具有相应的比特率)的视频输出。编码810还可以包括不限于特定编码的格
式。因此,本公开的实施例可以包括任何期望的编码,无论是否示出为图8中的编码810。
108.尽管图8建议通过实时处理数据805来创建编码810,如上面参考图3所讨论的,但是本公开的实施例可以存储数据805的多个版本。因此,数据805可能由电路345预先处理并存储在图3的存储设备305上,随后从图3的存储器设备305中检索并发送到图3的网络接口设备310(可能经由图3的缓冲器340)以传输到图1的客户端设备135。
109.图9示出了本公开的实施例适用的硬件和软件环境。在图9中,应用可能希望使用文件传输协议(ftp)、域名系统(dns)、安全外壳协议(ssh)、简单网络管理协议(snmp)、简单邮件传输协议(smtp)、超文本传输协议(http)、普通文件传输协议(tftp)、动态主机配置协议(dhcp)或实时消息协议(rtmp)来访问数据,以及其他可能性。可以使用用户数据报协议(udp)、传输控制协议(tcp)或其他协议打包数据以进行传输。网络本身可以使用因特网协议(ip)v4、ip v6、ip网络地址转换(nat)或ip安全(ip sec)等。这些协议还可以涉及相关协议,例如因特网控制消息协议(icmp)v4、icmp v6、邻居发现(nd)协议、路由信息协议(rip)、开放最短路径优先(ospf)协议或边界网关协议(bgp)等。也可以使用地址解析协议(arp)或反向arp(rarp)。数据链路和物理层还可以涉及各种协议和链路,例如串行线因特网协议(slip)或点对点协议(ppp)等。本公开的实施例可以与这些各种硬件和软件环境中的任何一个或全部一起使用。
110.本公开的实施例的目的是限制对机器105的软件栈和/或网络栈的任何影响。本公开的实施例可以通过将图1的主存储器115排除在等式之外来实现此目的。数据可以在图3的存储设备305和图3的网络接口设备310之间传输,而不影响数据如何传送到图1的客户端设备135或应用如何管理软件栈。
111.图10示出了根据本公开的实施例的图1的设备120,其包括可用于连接到图3的多个存储设备305和/或图3的网络接口设备310的根端口。如上所述,在本公开的一些实施例中,设备120可以包括单个存储设备305或网络接口设备310作为设备120的实现的一部分。此外,设备120还可以包括多个存储设备305或网络接口设备310,其可以是设备120的实现的一部分。
112.在本公开的一些实施例中,设备120可以包括根端口(或根复合体)1005-1和/或1005-2(其可以统称为根端口1005或根复合体1005)。根端口1005可用于确定从设备120连接(下游)的其他设备。例如,图10示出了连接到根端口1005-1的三个存储设备305-1到305-3以及连接到根端口1005-2的三个网络接口设备310-1到310-3,但是本公开的实施例可以包括任意数量的存储设备305和/或网络接口设备310,并且可以包括不同数量的存储设备305和网络接口设备310。根端口1005可以枚举连接到根端口1006的设备,并且可以将该信息传递给设备120。然后,设备120可以配置为支持对多个存储设备305或网络接口设备310的访问。
113.通过具有根端口1005,设备120可以支持任意数量的附加存储设备305和/或网络接口设备310。也就是说,设备120可支持任意数量存储设备305和/或网络接口设备310。虽然图10建议存储设备305及/或网络接口设备310在设备120的外部,在本公开的一些实施例中,存储设备305和/或网络接口设备310中的一些或全部可以在设备120内部,甚至具有根端口1005。
114.此外,在本公开的一些实施例中,根端口1005可以用替代结构代替。例如,根端口
1005可以用其他fpga、asic、gpu、gpgpu、soc、tpu、npu或cpu代替。例如,本公开的这些实施例可用于协议转换。例如,考虑存储设备305使用nvme协议进行通信,而网络接口设备310使用pcie协议进行通信的情况。根端口1005或替代结构可以处理从一个协议到另一个协议的转换。该结构可以使设备120能够使用例如cxl协议与图1的处理器110通信,同时使用pcie协议与存储设备305和/或网络接口设备310通信。
115.图11示出了根据本公开的实施例的图1的设备120处理来自图1的处理器110的图4的请求405、415和/或425的示例过程的流程图。在图11中,在框1105,图1的设备120可以接收请求,例如图4的请求405、415和/或425。在框1110,响应于在框11100接收到的请求,可以从图3的存储设备305访问图8的数据805。在本公开的一些实施例中,图3的网络接口设备310可以直接从图3的存储设备305访问图8的数据805;在本公开的其他实施例中,图3的电路345或图3的存储设备305可以将图8的数据805推送到图3的网络接口设备310或图3中的缓冲器340(图3的网接口设备310可以从中访问图8的数据805)。最后,在框1115,图3的网络接口设备310可以将图8的数据805发送到目的地,例如图1的客户端设备135。
116.图12示出了根据本公开的实施例的图1的设备120处理来自图1的处理器110的请求的另一示例过程的流程图。图12可以被认为是对图11中描述的操作的更详细、更专门的描述。在操作与图11相同的情况下,可以使用相同的附图标记。
117.在图12中,在框1105处,图1的设备120可以接收标识要发送到图1的客户端设备135的图8的数据805的请求,例如图4的请求405。在框1205,图3的电路345或图3的存储设备305可以从图3的存储设备305读取图8的数据805。在框1210处,图3的电路345或图3的存储设备305(取决于哪个元件从图3的存储设备305读取图8的数据805)可以将图8的数据805存储在图3的缓冲器340中。在包括图3的多个缓冲器340的本公开的实施例中,数据可以存储在图3的不止一个缓冲器340中,如上文参考图7a所述,可能涉及图7a的解复用器705。如以上参考图3所讨论的,该存储可以涉及为图3的缓冲器340分配存储器,并且可以涉及将qos标准应用于图3的缓冲区340的大小或使用。
118.在框1215处,图1的设备120可以接收图4的请求415,该请求415标识如何对图8的数据805进行转码或以其他方式处理。注意,在本公开的一些实施例中,图4的请求415可能已经被包括作为图4的请求405的一部分,在这种情况下,可以省略框1215。类似地,如果图8的数据805不需要转码,则可以不需要图4的请求415,并且可以省略框1215。在框1220,图3的电路345可以在图3的缓冲器340中处理图8的数据805。如上文参考图3和图8所讨论的,此处理可涉及对图8的数据805进行转码或将qos标准应用于在图3的缓冲器340中对图8的数据805的处理。如果图8的数据805不需要转码或其他处理,则可以省略框1220。
119.在框1225,图1的设备120可以接收图4的请求425,该请求425标识图8的数据805可以传送到图1的客户端设备135。注意,在本公开的一些实施例中,图4的请求425可能已经被包括作为图4的请求405或415的一部分,在这种情况下,可以省略框1225。在框1230,图3的网络接口设备310可以从图3的缓冲器340读取图8的数据805(如图3的电路345转码或以其他方式处理的)。在包括图3的多个缓冲器340的本公开的实施例中,可以从特定缓冲器340读取数据,如上面参考图7a所描述的,可能涉及图7a的复用器710。最后,在框1115,图3的网络接口设备310可以将图8的数据805发送到目的地,例如图1的客户端设备135。
120.图12中未示出的是,图8的数据805也可以从图3的缓冲器340复制到图3的存储设
备305。通过将图8的数据805从图3的缓冲器340复制到图3的存储设备305,可以保留图8数据805的编码以供将来使用(这可以避免响应于以后对内容的请求而对图8数据805进行转码)。
121.图13示出了根据本公开实施例的图3的存储设备305将数据预取到图3的缓冲器340中的示例过程的流程图。在图13中,在框1305,图3的存储设备305可以确定图3的缓冲器340的容量已经达到图6的高阈值610。如果不是,则在框1310,图3的存储设备305可以将数据预取到图3的缓冲器340中,并且处理可以返回到框1305。
122.如果图3的缓冲器340的容量已经达到图6的高阈值610,则在框1315,图3的存储设备305可以暂停预取。在框1320处,图3的存储设备305可以确定图3的缓冲器340的容量是否已经返回到低于图6的低阈值605(例如,通过图3的网络接口设备310从图3的缓冲器340读取图8的数据805)。如果没有,则处理可以返回到框1315(使得预取保持暂停),直到图3的缓冲器340的容量下降到图6的低阈值605以下。否则,在框1325,图3的存储设备305可以重新开始将图8的数据805预取到图3的缓冲器340中,并且处理可以返回到框1305。(虽然图13未示出图8的数据805的预取结束,但当图8的所有数据805都已从图3的存储设备305中取出时,预取可以结束,而与图3的缓冲器340的状态无关。)
123.图14示出了根据本公开实施例的图1的处理器110向图1的设备120发出请求405、415和/或425的示例过程的流程图。在图14中,在框1405,图1的处理器110可以向图1的设备120发送图4的请求405,指示数据将传送到图1的客户端设备135。在框1410,图1的处理器110可以向图1的设备120发送图4的请求425,指示数据应该由图3的网络接口设备310传送到图1的客户端设备135。
124.图15示出了根据本公开实施例的图1的处理器110向图1的设备120发出图4的请求405、415和/或425的另一示例过程的流程图。图15可以认为是图14中描述的操作的更详细、更专门的描述。在操作与图14相同的情况下,可以使用相同的附图标记。
125.在图15中,在框1405,图1的处理器110可以向图1的设备120发送图4的请求405,指示数据将传送到图1的客户端设备135。在框1505,图1的处理器110可以向图1的设备120发送图4的请求415,指示图3的电路345应该对图3的缓冲器340中的图8的数据805进行转码或处理。最后,在框1410,图1的处理器110可以向图1的设备120发送图4的请求425,指示数据应该由图3的网络接口设备310传送到图1的客户端设备135。
126.在图11-15中,示出了本公开的一些实施例。但是本领域技术人员将认识到,通过改变块的顺序、通过省略块或通过包括图中未示出的链接,本公开的其他实施例也是可能的。无论是否明确描述,流程图的所有这些变化都被认为是本公开的实施例。
127.本公开的实施例可以具有包括存储设备和网络接口设备的设备。当内容要传送到客户端设备时,数据可以从存储设备传送到网络接口设备。本公开的实施例提供了一个技术优点,即数据可以在不经过主机系统的主存储器的情况下传送到客户端设备,从而减少时延。
128.如果需要数据的任何处理,例如,数据的转码,则可以由设备的电路执行该处理。通过使该设备的电路操控处理,可以减少系统的处理器上的负载,从而提供释放处理器周期用于其他操作的技术优势。
129.在一些实施例中,一个或多个元件可以用首字母、首字母缩写和/或缩写来表示,
如下所示:外围部件互连快速(pcie)、非易失性存储器快速(nvme)、物理功能(pf)、虚拟功能(vf)、端点端口(ep)、根端口(rp)、现场可编程门阵列(fpga)、专用集成电路(asic)、片上系统(soc)、网络接口卡(nic)、对等(p2p)、固态驱动(ssd)、基地址寄存器(bar)、动态随机存取存储器(dram)、静态随机存取存储器(sram)和/或如下所示的其他存储器。
130.本公开的实施例可以包括根据本公开的示例实施例的具有集成网络接口的存储设备。在本公开的一些实施例中,nic可以例如通过使用连接器插入而连接到存储设备。在本公开的一些实施例中,nic可以例如以直接和/或永久的方式连接而没有连接器。在一些实施例中,本文描述的方法和装置可以使用集成存储设备和nic提供有效的内容分发。
131.在本公开的一些实施例中,fpga ep中的一个或多个pcie pf或vf可以作为一个或更多个nvme控制器呈现给主机。
132.在本公开的一些实施例中,fpga ep中的一个或多个pcie pf或vf可以作为一个或更多个nic呈现给主机。
133.在本公开的一些实施例中,fpga可替代地实现为asic和/或soc等。
134.在本公开的一些实施例中,一个或多个ssd控制器可以通过一个或多个rp连接到fpga以提供持久存储。
135.在本公开的一些实施例中,一个或多个nic可以通过一个或更多个rp连接到fpga,用于提供内容请求和/或传输服务。
136.在本公开的一些实施例中,一个或多个pcie-pcie桥可用于例如以直通方式连接到一个或多个ssd控制器。
137.在本公开的一些实施例中,可以使用一个或多个桥以直通方式连接到一个或多个nic。桥可以是,例如,pcie-pcie、pcie-cxl、pcie未公开、cxl-cxl、cxl-pcie或cxl未公开,以及其他可能形式。
138.在本公开的一些实施例中,代替直通桥,fpga可以用作例如更高级别的协议终止再生桥架构,以将ssd控制器和/或nic连接到主机。
139.在本公开的一些实施例中,内容可以在主机软件控制下从ssd提供(例如,直接提供)到nic,主机软件控制也可以称为编排(orchestration)。
140.本公开的一些实施例可以使用例如nvme协议、文件读取协议等来实现对等(p2p)内容数据传输。
141.在本公开的一些实施例中,可以通过bar和/或主机编程的物理地址范围来暴露p2p缓冲区。
142.在本公开的一些实施例中,p2p缓冲器可以用片上存储器、片外sram和/或dram等来实现。
143.在本公开的一些实施例中,p2p缓冲器可以在多个桥之间划分和/或共享。
144.在本公开的一些实施例中,p2p缓冲器可以用作重放和/或重传缓冲器,例如,直到一个或多个封包被成功传送。
145.在本公开的一些实施例中,例如,通过考虑任何背压(back-pressure)、重传和/或p2p缓冲器大小等,可以通过p2p缓冲器将指定量的内容从ssd流式传输到nic。
146.在本公开的一些实施例中,主机可以指定内容细节,例如长度、lba范围和/或kv密钥,并且让设备传送一些或全部内容(例如,整个内容),而无需主机的进一步干预。
147.在本公开的一些实施例中,主机可以将部分或全部内容传输过程(例如,完全)卸载到设备。
148.为了说明的目的,可以在一个或多个存储设备的上下文中描述本公开的一些实施例,存储设备实现为具有闪存存储介质的固态驱动(ssd)。然而,本公开的原理可以用使用任何类型的存储介质(包括任何其他类型的固态介质、磁性介质和/或光学介质等)的任何类型的存储设备来实现。例如,在本公开的一些实施例中,存储设备可以实现为硬盘驱动(hdd)、基于非与(nand)闪存的ssd、诸如交叉网格非易失性存储器的持久性存储器、具有体电阻变化的存储器、相变存储器(pcm)等和/或其任何组合。
149.本文公开的任何存储设备可以使用任何连接器配置(例如串行ata(sata)、小型计算机系统接口(scsi)、串行连接scsi(sas)和/或u.2等)以任何形状因数(例如3.5英寸、2.5英寸、1.8英寸、m.2、企业和数据中心ssd形状因数(edsff)和/或nf1等)实现。
150.本文公开的任何存储设备可以完全或部分地与服务器机箱、服务器机架、数据室、数据中心、边缘数据中心、移动边缘数据中心和/或其任何组合一起实现和/或结合使用。
151.本文公开的任何存储设备可以通过任何接口和/或协议进行通信,包括外围部件互连快速(pcie)、非易失性存储器快速(nvme)、nvme-over-fabric(nvme-of)、以太网、传输控制协议/因特网协议(tcp/ip)、用户数据报协议(udp)、远程直接存储器访问(rdma)、基于融合以太网的rdma(roce)、光纤通道、无限带宽、串行ata(sata)、小型计算机系统接口(scsi)、串行附接scsi(sas)、iwarp和/或超文本传输协议(http)等,或其任何组合。
152.在本公开的一些实施例中,ssd控制器可以用nvme、sas、sata和/或hdd等实现。
153.在本公开的一些实施例中,nic协议可以用以太网、tcp、ip、udp、rdma、roce、iwarp和/或http等来实现。
154.本文公开的任何功能可以用硬件、软件或其组合来实现,包括组合逻辑、顺序逻辑、一个或多个定时器、计数器、寄存器和/或状态机、一个或者多个复杂可编程逻辑器件(cpld)、现场可编程门阵列(fpga)、专用集成电路(asic)、执行存储在任何类型的存储器中的指令的中央处理单元(cpu),例如复杂指令集计算机(cisc)处理器,诸如x86处理器和/或精简指令集计算机(risc)处理器,例如arm处理器、图形处理单元(gpu)、神经处理单元(npu)和/或张量处理单元(tpu)等、或其任意组合。在一些实施例中,一个或多个组件可以实现为片上系统(soc)。
155.在本文描述的实施例中,操作是示例操作,并且可以涉及未明确示出的各种附加操作。在一些实施例中,可以省略一些图示的操作。在一些实施例中,一个或多个操作可以由不同于本文所示的组件来执行。此外,在一些实施例中,可以改变操作的时间顺序。此外,这些数字不一定按比例绘制。
156.以下讨论旨在提供可在其中实现本公开的某些方面的一个或多个适当机器的简要、一般性描述。一个或多个机器可以至少部分地通过来自诸如键盘、鼠标等常规输入设备的输入,以及通过从另一机器接收的指令、与虚拟现实(vr)环境的交互、生物统计反馈或其他输入信号来控制。如本文所使用的,术语“机器”旨在广义地包括单个机器、虚拟机或通信耦合的机器、虚拟机器或一起操作的设备的系统。示例性机器包括计算设备,例如个人计算机、工作站、服务器、便携式计算机、手持设备、电话、平板电脑等,以及交通设备,例如私人或公共交通工具,例如汽车、火车、出租车等。
157.一个或多个机器可以包括嵌入式控制器,例如可编程或非可编程逻辑器件或阵列、专用集成电路(asic)、嵌入式计算机、智能卡等。一个或多个机器可以利用到一个或多个远程机器的一个或更多个连接,例如通过网络接口、调制解调器或其他通信耦合。机器可以通过物理和/或逻辑网络(例如内联网、因特网、局域网、广域网等)互连。本领域技术人员将理解,网络通信可以利用各种有线和/或无线短距离或长距离载波和协议,包括射频(rf)、卫星、微波、电气和电子工程师协会(ieee)802.11、蓝牙、光、红外、电缆、激光等。
158.本公开的实施例可以通过参考或结合关联数据来描述,关联数据包括当被机器访问时导致机器执行任务或定义抽象数据类型或低级硬件上下文的功能、过程、数据结构、应用等。关联数据可以存储在例如易失性和/或非易失性存储器(例如ram、rom等)中,或者存储在其他存储设备及其关联存储介质中,包括硬盘驱动器、软盘、光学存储器、磁带、闪存、记忆棒、数字视频盘、生物存储器等。关联数据可以通过传输环境来传送,传输环境包括物理和/或逻辑网络,其形式为分组、串行数据、并行数据、传播信号等,并且可以以压缩或加密格式使用。关联数据可以在分布式环境中使用,并本地和/或远程存储以供机器访问。
159.本公开的实施例可以包括有形的非暂时性机器可读介质,其包括可由一个或多个处理器执行的指令,指令包括执行本文的本公开的元素的指令
160.上述方法的各种操作可以通过能够执行这些操作的任何合适的装置来执行,例如各种硬件和/或软件组件、电路和/或模块。软件可以包括用于实现逻辑功能的可执行指令的有序列表,并且可以体现在任何“处理器可读介质”中,以供指令执行系统、装置或设备(例如单核或多核处理器或包含处理器的系统)使用或与之结合。
161.结合本文公开的实施例描述的方法或算法和功能的块或步骤可以直接体现在硬件中、由处理器执行的软件模块中或两者的组合中。如果在软件中实现,则这些功能可以作为一个或多个指令或代码存储在有形的非暂时性计算机可读介质上或在其上传输。软件模块可以驻留在随机存取存储器(ram)、闪存、只读存储器(rom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)、寄存器、硬盘、可移动盘、cd rom或本领域已知的任何其他形式的存储介质中。
162.已经参考所示实施例描述和说明了本公开的原理,将认识到,在不偏离这些原理的情况下,可以在布置和细节上修改所示实施方式,并且可以以任何期望的方式组合。而且,尽管前面的讨论集中于特定实施例,但也可以考虑其他配置。特别地,尽管这里使用了诸如“根据本公开的实施例”之类的表达,但这些短语通常是指参考实施例的可能性,而不是旨在将本公开限于特定的实施例配置。如本文所使用的,这些术语可指代可组合成其他实施例的相同或不同实施例。
163.前述说明性实施例不应被解释为限制其公开。尽管已经描述了一些实施例,但本领域技术人员将容易理解,在不实质上脱离本公开的新颖教导和优点的情况下,对这些实施例进行许多修改是可能的。因此,所有这些修改都旨在包括在权利要求书中定义的本公开的范围内。
164.本公开的实施例可以扩展到以下声明,但不限于:
165.声明1。本公开的实施例包括一种设备,包括
166.存储设备,包括用于数据的存储部分和用于管理对存储部分的访问的控制器;
167.网络接口设备,用于通过网络发送数据;以及
168.主机接口,用于接收对存储设备或网络接口设备的请求。
169.声明2。本公开的实施例包括根据声明1的设备,其中:
170.存储设备包括固态驱动(ssd);
171.控制器包括ssd控制器;以及
172.存储包括与非闪存。
173.声明3。本公开的一个实施例包括根据声明1的设备,其中主机接口包括外围组件互连快速(pcie)接口或高速缓存一致互连接口。
174.声明4。本公开的一个实施例包括根据声明3的设备,其中高速缓存一致互连接口包括计算快速链接(cxl)接口。
175.声明5。本公开的实施例包括根据声明1的设备,其中网络接口设备配置为从存储设备的存储部分访问数据。
176.声明6。本公开的实施例包括根据声明5的设备,其中网络接口设备还配置为使用控制器从存储设备的存储部分访问数据。
177.声明7。本公开的实施例包括根据声明1的设备,还包括连接到存储设备和网络接口设备的缓冲器。
178.声明8。本公开的实施例包括根据声明7的设备,其中:
179.存储设备配置为将数据存储在缓冲器中;以及
180.网络接口设备配置为从缓冲器读取数据。
181.声明9。本公开的实施例包括根据声明8的设备,其中:
182.存储设备还配置为至少部分地基于来自主机处理器的请求将数据存储在缓冲器中;以及
183.网络接口设备还配置为至少部分地基于来自主机处理器的请求从缓冲器读取数据。
184.声明10。本公开的实施例包括根据声明8的设备,其中存储设备还配置为至少部分地基于缓冲器达到第一阈值而暂停在缓冲器中存储数据。
185.声明11。本公开的实施例包括根据声明10的设备,其中存储设备还配置为至少部分地基于缓冲器达到第二阈值而将数据存储在缓冲器中。
186.声明12。本公开的实施例包括根据声明10的设备,其中存储设备还配置为至少部分地基于达到第一阈值的缓冲器中的数据来向主机处理器发信号。
187.声明13。本公开的实施例包括根据声明8的设备,还包括处理缓冲器中的数据的电路。
188.声明14。本公开的实施例包括根据声明13的设备,其中电路包括现场可编程门阵列(fpga)、专用集成电路(asic)、片上系统(soc)、图形处理单元(gpu)、通用gpu(gpgpu)、张量处理单元(tpu)、神经处理单元(npu)或处理器。
189.声明15。本公开的实施例包括根据声明13的设备,其中该电路包括该缓冲器。
190.声明16。本公开的实施例包括根据声明13的设备,其中:
191.主机接口配置为接收对存储设备的请求并接收对网络接口设备的第二请求;
192.所述请求从主机接口发送到所述电路,并从所述电路发送到存储设备;以及
193.第二请求从主机接口发送到电路,并从所述电路发送到网络接口设备。
194.声明17。本公开的实施例包括根据声明13的设备,其中所述电路配置为对缓冲器中的数据进行转码。
195.声明18。本公开的实施例包括根据声明8的设备,其中:
196.缓冲器划分为第一区域和第二区域;
197.存储设备还配置为将数据存储在缓冲器的第一区域中;以及
198.设备还包括第二存储设备,第二存储设备包括用于第二数据的第二存储部分和第二控制器,第二存储设备连接到缓冲器,第二存储设备配置为将第二数据存储在缓冲器的第二区域中。
199.声明19。本公开的实施例包括根据声明18的设备,其中网络接口设备还配置为从缓冲器的第一区域读取数据,并从缓冲器的第二区域读取第二数据。
200.声明20。本公开的实施例包括根据声明18的设备,其中:
201.网络接口设备配置为从缓冲器的第一区域读取数据;以及
202.设备还包括第二网络接口设备,用于通过网络发送第二数据,第二网络接口设备连接到缓冲器,第二网络接口设备配置为从缓冲器的第二区域读取第二数据。
203.声明21。本公开的实施例包括根据声明8的设备,其中:
204.缓冲器划分为第一区域和第二区域;
205.存储器存储第二数据;以及
206.存储设备还配置为将数据存储在缓冲器的第一区域中,并且将第二数据存储在缓冲器的第二区域中。
207.声明22。本公开的实施例包括根据声明21的设备,其中:
208.网络接口设备配置为从缓冲器的第一区域读取数据;以及
209.设备还包括第二网络接口设备,用于通过网络发送第二数据,第二网络接口设备连接到缓冲器,第二网络接口设备配置为从缓冲器的第二区域读取第二数据。
210.声明23。本公开的实施例包括根据声明8的设备,其中:
211.设备还包括第二缓冲器;以及
212.设备还包括第二存储设备,第二存储设备包括用于第二数据的第二存储部分和第二控制器,第二存储设备连接到第二缓冲器,第二存储设备配置为将第二数据存储在第二缓冲器中。
213.声明24。本公开的实施例包括根据声明23的设备,其中:
214.网络接口设备连接到第二缓冲器;以及
215.网络接口设备还配置为从第二缓冲器读取第二数据。
216.声明25。本公开的实施例包括根据声明24的设备,还包括连接到网络接口设备、缓冲器和第二缓冲器的复用器。
217.声明26。本公开的实施例包括根据声明23的设备,还包括用于通过网络发送第二数据的第二网络接口设备,第二网络接口设备连接到第二缓冲器,第二网接口设备配置为从第二缓冲器读取第二数据。
218.声明27。本公开的实施例包括根据声明8的设备,其中:
219.设备还包括第二缓冲器;
220.存储部分存储第二数据;
221.存储设备连接到第二缓冲器;以及
222.存储设备还配置为将第二数据存储在第二缓冲器中。
223.声明28。本公开的实施例包括根据声明27的设备,还包括连接到存储设备、缓冲器和第二缓冲器的解复用器。
224.声明29。本公开的实施例包括根据声明27的设备,还包括用于通过网络发送第二数据的第二网络接口设备,第二网络接口设备连接到第二缓冲器,第二网接口设备配置为从第二缓冲器读取第二数据。
225.声明30。本公开的实施例包括根据声明1的设备,其中主机接口包括端点,该端点暴露向存储设备发出第一请求的第一功能和向网络接口设备发出第二请求的第二功能。
226.声明31。本公开的实施例包括根据声明1的设备,进一步包括根端口。
227.声明32。本公开的实施例包括根据声明31的设备,其中根端口连接到存储设备。
228.声明33。本公开的实施例包括根据声明32的设备,其中:
229.设备还包括第二存储设备;以及
230.根端口还连接到第二存储设备。
231.声明34。本公开的实施例包括根据声明32的设备,还包括连接到网络接口设备的第二根端口。
232.声明35。本公开的实施例包括根据声明34的设备,其中:
233.设备还包括第二网络接口设备;以及
234.第二根端口还连接到第二网络接口设备。
235.声明36。本公开的实施例包括根据声明31的设备,其中根端口连接到网络接口设备。
236.声明37。本公开的实施例包括根据声明36的设备,其中:
237.设备还包括第二网络接口设备;以及
238.根端口还连接到第二网络接口设备。
239.声明38。本公开的实施例包括根据声明1的设备,其中:
240.存储设备使用第一协议与主机处理器通信;以及
241.网络接口设备使用第二协议与主机处理器通信。
242.声明39。本公开的实施例包括根据声明1的设备,其中:
243.设备还包括电路;
244.存储设备使用第一协议与电路通信;以及
245.网络接口设备使用第二协议与电路通信。
246.声明40。本公开的实施例包括根据声明39的设备,其中电路使用第三协议与主机处理器通信。
247.声明41。本公开的实施例包括一种方法,包括:
248.在设备处接收请求;
249.至少部分地基于请求从设备的存储设备访问数据;以及
250.使用设备的网络接口设备发送数据。
251.声明42。本公开的实施例包括根据声明41的方法,其中在设备处接收请求包括在设备处从主机处理器接收请求。
252.声明43。本公开的实施例包括根据声明41的方法,其中在设备处接收请求包括在设备的主机接口处接收请求。
253.声明44。本公开的实施例包括根据声明43的方法,其中在设备的主机接口处接收请求包括在设备的主机接口暴露的功能处接收请求。
254.声明45。本公开的实施例包括根据声明44的方法,其中在设备的主机接口暴露的功能处接收请求包括在设备的端点暴露的功能处接收请求。
255.声明46。本公开的实施例包括根据声明43的方法,其中主机接口包括外围组件互连快速(pcie)接口或高速缓存一致互连接口。
256.声明47。本公开的一个实施例包括根据声明46的方法,其中高速缓存一致互连接口包括计算快速链接(cxl)接口。
257.声明48。本公开的一个实施例包括根据声明41的方法,其中从设备的存储设备访问数据包括从设备的存储设备的存储部分访问数据。
258.声明49。本公开的实施例包括根据声明48的方法,其中:
259.存储设备包括固态驱动(ssd);
260.ssd包括ssd控制器;以及
261.存储器包括与非闪存。
262.声明50。本公开的实施例包括根据声明41的方法,其中从设备的存储设备访问数据包括由设备的网络接口设备从设备的存储设备访问数据。
263.声明51。本公开的实施例包括根据声明41的方法,其中:
264.方法还包括在设备处接收第二请求;以及
265.使用设备的网络接口设备发送数据包括至少部分地基于第二请求使用设备的网络接口设备发送数据。
266.声明52。本公开的实施例包括根据声明51的方法,其中在设备处接收第二请求包括在设备处从主机处理器接收第二请求。
267.声明53。本公开的实施例包括根据声明51的方法,其中在设备处接收第二请求包括在设备的主机接口处接收第二请求。
268.声明54。本公开的实施例包括根据声明53的方法,其中在设备的主机接口处接收第二请求包括在设备的主机接口暴露的功能处接收第二请求。
269.声明55。本公开的实施例包括根据声明54的方法,其中在设备的主机接口暴露的第二功能处接收第二请求包括在设备的端点暴露的第二功能处接收第二请求。
270.声明56。本公开的实施例包括根据声明41的方法,其中:
271.至少部分地基于请求从设备的存储设备访问数据包括:存储设备至少部分地根据请求将数据存储在缓冲器中,设备包括缓冲器、连接到设备的存储设备的缓冲器和设备网络接口;以及
272.使用设备的网络接口设备发送数据包括由设备的网络接口设备从缓冲器读取数据。
273.声明57。本公开的实施例包括根据声明56的方法,其中存储设备至少部分地基于请求将数据存储在缓冲器中包括存储设备的存储控制器至少部分地基于请求将数据存储在缓冲器中。
274.声明58。本公开的实施例包括根据声明56的方法,其中存储设备至少部分基于请求将数据存储在缓冲器中包括存储设备至少部分基于缓冲器超过阈值将数据预取到缓冲器中。
275.声明59。本公开的实施例包括根据声明56的方法,其中存储设备至少部分基于请求将数据存储在缓冲器中包括至少部分基于缓冲器超过阈值暂停存储设备将数据预取到缓冲器中。
276.声明60。本公开的实施例包括根据声明56的方法,进一步包括使用设备的电路处理缓冲器中的数据。
277.声明61。本公开的实施例包括根据声明60的方法,其中设备的电路包括现场可编程门阵列(fpga)、专用集成电路(asic)、片上系统(soc)、图形处理单元(gpu)、通用gpu(gpgpu)、张量处理单元(tpu)、神经处理单元(npu)或处理器。
278.声明62。本公开的实施例包括根据声明60的方法,其中设备的电路包括缓冲器。
279.声明63。本公开的实施例包括根据声明60的方法,其中在设备处接收请求包括:
280.在设备的电路处接收请求;以及
281.将请求从设备的电路发送到设备的存储设备。
282.声明64。本公开的实施例包括根据声明63的方法,其中:
283.在设备的电路处接收请求包括在设备的电路处使用第一协议接收请求;以及
284.从设备的电路向设备的存储设备发送请求包括使用第二协议将请求从设备的电路发送到设备的存储设备。
285.声明65。本公开的实施例包括根据声明60的方法,其中:
286.方法还包括在设备的电路处接收第二请求;以及
287.使用设备的网络接口设备发送数据包括将第二请求从设备的电路发送到设备的网络接口设备。
288.声明66。本公开的实施例包括根据声明65的方法,其中:
289.在设备的电路处接收第二请求包括在设备的电路处使用第一协议接收第二请求;以及
290.从设备的电路向设备的存储设备发送请求包括使用第二协议从设备的电路向设备的网络接口设备发送请求。
291.声明67。本公开的实施例包括根据声明60的方法,其中使用设备的电路处理缓冲器中的数据包括使用设备的电路对缓冲器中的数据进行转码。
292.声明68。本公开的实施例包括根据声明56的方法,其中:
293.至少部分地基于请求在缓冲器中存储数据包括至少部分地基于请求将数据存储在缓冲器的第一区域中;以及
294.该方法还包括在缓冲器的第二区域中存储第二数据。
295.声明69。本公开的实施例包括根据声明68的方法,其中在缓冲器的第二区域中存储第二数据包括从设备的存储设备访问第二数据。
296.声明70。本公开的实施例包括根据声明68的方法,其中将第二数据存储在缓冲器的第二区域中包括从设备的第二存储设备访问第二数据,缓冲器还连接到设备的第二存储设备。
297.声明71。本公开的实施例包括根据声明68的方法,其中设备的网络接口设备从缓冲器读取数据包括该设备的网络接口设备从缓冲器的第一区域读取数据。
298.声明72。本公开的实施例包括根据声明71的方法,进一步包括:
299.网络接口设备从缓冲器的第二区域读取第二数据;以及
300.使用设备的网络接口设备发送第二数据。
301.声明73。本公开的实施例包括根据声明71的方法,进一步包括:
302.设备的第二网络接口设备从缓冲器的第二区域读取第二数据,缓冲器还连接到设备第二网络接口;以及
303.使用设备的第二网络接口设备发送第二数据。
304.声明74。本公开的实施例包括根据声明56的方法,还包括将第二数据存储在第二缓冲器中,设备包括第二缓冲器、连接到设备的存储设备的第二缓冲器和设备的网络接口。
305.声明75。本公开的实施例包括根据声明74的方法,其中在第二缓冲器中存储第二数据包括从设备的存储设备访问第二数据。
306.声明76。本公开的实施例包括根据声明75的方法,其中在第二缓冲器中存储第二数据还包括经由解复用器在第二缓冲器中存储第二数据。
307.声明77。本公开的实施例包括根据声明74的方法,其中将第二数据存储在第二缓冲器中包括从设备的第二存储设备访问第二数据,第二缓冲器还连接到设备的第二存储设备。
308.声明78。本公开的实施例包括根据声明74的方法,进一步包括:
309.网络接口设备从第二缓冲器读取第二数据;以及
310.使用设备的网络接口设备发送第二数据。
311.声明79。本公开的实施例包括根据声明78的方法,其中网络接口设备从第二缓冲器读取第二数据包括网络接口设备经由复用器从第二缓冲器读取第二数据。
312.声明80。本公开的实施例包括根据声明78的方法,进一步包括:
313.设备的第二网络接口设备从第二缓冲器读取第二数据,第二缓冲器进一步连接到设备第二网络接口;以及
314.使用设备的第二网络接口设备发送第二数据。
315.声明81。本公开的实施例包括根据声明41的方法,其中在设备处接收请求包括使用设备的根端口将请求发送到设备的存储设备。
316.声明82。本公开的实施例包括根据声明81的方法,其中设备的存储设备和设备的第二存储设备连接到设备的根端口。
317.声明83。本公开的实施例包括根据声明41的方法,其中在设备处接收请求包括使用设备的根端口将请求发送到设备的网络接口设备。
318.声明84。本公开的实施例包括根据声明83的方法,其中设备的网络接口设备和设备的第二网络接口设备连接到设备的根端口。
319.声明85。本公开的实施例包括一种方法,包括:
320.从主机处理器向设备的存储设备发送第一请求,设备包括存储设备和网络接口设备;以及
321.从主机处理器向设备的网络接口设备发送第二请求,
322.其中设备的存储设备的数据由该设备的网络接口设备发送。
323.声明86。本公开的实施例包括根据声明85的方法,其中:
324.至少部分地基于第一请求从设备的存储设备读取数据;以及
325.数据由设备的网络接口设备至少部分地基于第二请求来发送。
326.声明87。本公开的实施例包括根据声明85的方法,其中设备的存储设备的数据由设备的网络接口设备传输,而不将数据传输到与主机处理器相关联的主存储器。
327.声明88。本公开的实施例包括根据声明85的方法,其中从主机处理器向设备的存储设备发送第一请求包括从主机处理器将第二请求发送到设备的网络接口设备。
328.声明89。本公开的实施例包括根据声明85的方法,其中
329.从主机处理器向设备的存储设备发送第一请求包括使用第一协议从机主处理器向设备的存储设备发送第一请求;以及
330.从主机处理器向设备的网络接口设备发送第二请求包括使用第二协议将第二请求从主机处理器发送到设备的网络接口设备。
331.声明90。本公开的实施例包括根据声明85的方法,还包括从主机处理器向设备的电路发送第三请求。
332.声明91。本公开的实施例包括根据声明90的方法,其中电路包括现场可编程门阵列(fpga)、专用集成电路(asic)、片上系统(soc)、图形处理单元(gpu)、通用gpu(gpgpu)、张量处理单元(tpu)、神经处理单元(npu)或处理器。
333.声明92。本公开的实施例包括根据声明90的方法,其中电路对来自设备的存储设备的数据进行转码,以供设备的网络接口设备传输。
334.声明93。本公开的实施例包括根据声明92的方法,其中电路至少部分地基于第三请求对来自设备的存储设备的数据进行转码以供设备的网络接口设备传输。
335.声明94。本公开的实施例包括根据声明85的方法,还包括从主机处理器向设备发送第三请求。
336.声明95。本公开的一个实施例包括根据声明94的方法,其中设备对来自设备的存储设备的数据进行转码,以供该设备的网络接口设备传输。
337.声明96。本公开的实施例包括根据声明95的方法,其中设备至少部分地基于第三请求对来自设备的存储设备的数据进行转码以供设备的网络接口设备传输。
338.声明97。本公开的一个实施例包括一种物品,该物品包括非暂时性存储介质,该非暂时性存储介质上存储有指令,当由机器执行时,该指令导致:
339.在设备处接收请求;
340.至少部分地基于请求从设备的存储设备访问数据;以及
341.使用设备的网络接口设备发送数据。
342.声明98。本公开的实施例包括根据声明97的物品,其中在设备处接收请求包括在设备处从主机处理器接收请求。
343.声明99。本公开的实施例包括根据声明97的物品,其中在设备处接收请求包括在设备的主机接口处接收请求。
344.声明100。本公开的实施例包括根据声明99的物品,其中在设备的主机接口处接收请求包括在设备的主机接口所暴露的功能处接收请求。
345.声明101。本公开的实施例包括根据声明100的物品,其中在设备的主机接口所暴露的功能处接收请求包括在设备的端点所暴露的功能处接收请求。
346.声明102。本公开的实施例包括根据声明99的物品,其中主机接口包括外围组件互连快速(pcie)接口或高速缓存一致互连接口。
347.声明103。本公开的实施例包括根据声明102的物品,其中高速缓存一致互连包括计算快速链接(cxl)接口。
348.声明104。本公开的实施例包括根据声明97的物品,其中从设备的存储设备访问数据包括从设备的存储设备的存储部分访问数据。
349.声明105。本公开的实施例包括根据声明104的物品,其中:
350.存储设备包括固态驱动(ssd);
351.ssd包括ssd控制器;以及
352.存储部分包括与非闪存。
353.声明106。本公开的实施例包括根据声明97的物品,其中从设备的存储设备访问数据包括设备的网络接口设备从设备的存储设备访问数据。
354.声明107。本公开的实施例包括根据声明97的物品,其中:
355.非暂时性存储介质上存储有进一步的指令,该指令在由机器执行时导致在设备处接收第二请求;以及
356.使用设备的网络接口设备发送数据包括至少部分地基于第二请求使用设备的网络接口设备发送数据。
357.声明108。本公开的实施例包括根据声明107的物品,其中在设备处接收第二请求包括在设备处从主机处理器接收第二请求。
358.声明109。本公开的实施例包括根据声明107的物品,其中在设备处接收第二请求包括在设备的主机接口处接收第二请求。
359.声明110。本公开的实施例包括根据声明109的物品,其中在设备的主机接口处接收第二请求包括在设备的主机接口所暴露的功能处接收第二请求。
360.声明111。本公开的实施例包括根据声明110的物品,其中在设备的主机接口所暴露的第二功能处接收第二请求包括在设备的端点所暴露的第二功能处接收第二请求。
361.声明112。本公开的实施例包括根据声明97的物品,其中:
362.至少部分地基于请求从设备的存储设备访问数据包括:存储设备至少部分地基于请求将数据存储在缓冲器中,设备包括缓冲器、连接到设备的存储设备的缓冲器和设备的网络接口;以及
363.使用设备的网络接口设备发送数据包括设备的网络接口设备从缓冲器读取数据。
364.声明113。本公开的实施例包括根据声明112的物品,其中存储设备至少部分地基于请求将数据存储在缓冲器中包括存储设备的存储控制器至少部分地基于请求将数据存储在缓冲器中。
365.声明114。本公开的实施例包括根据声明112的物品,其中存储设备至少部分地基于请求将数据存储在缓冲器中包括至少部分地基于缓冲器超过阈值将数据预取到缓冲器中。
366.声明115。本公开的实施例包括根据声明112的物品,其中存储设备至少部分地基
于请求将数据存储在缓冲器中包括至少部分地基于缓冲器超过阈值暂停存储设备将数据预取到缓冲器中。
367.声明116。本公开的实施例包括根据声明112的物品,该非暂时性存储介质上存储有进一步指令,当该指令由机器执行时导致使用设备的电路处理缓冲器中的数据。
368.声明117。本公开的实施例包括根据声明116的物品,其中设备的电路包括现场可编程门阵列(fpga)、专用集成电路(asic)、片上系统(soc)、图形处理单元(gpu)、通用gpu(gpgpu)、张量处理单元(tpu)、神经处理单元(npu)或处理器。
369.声明118。本公开的实施例包括根据声明116的物品,其中设备的电路包括缓冲器。
370.声明119。本公开的实施例包括根据声明116的物品,其中在设备处接收请求包括:
371.在设备的电路处接收请求;以及
372.将请求从设备的电路发送到设备的存储设备。
373.声明120。本公开的实施例包括根据声明119的物品,其中:
374.在设备的电路处接收请求包括在设备的电路处使用第一协议接收请求;以及
375.从设备的电路向设备的存储设备发送请求包括使用第二协议将请求从设备的电路发送到设备的存储设备。
376.声明121。本公开的实施例包括根据声明116的物品,其中:;
377.非暂时性存储介质上存储有进一步的指令,该指令在由机器执行时导致在设备的电路处接收第二请求;以及
378.使用设备的网络接口设备发送数据包括将第二请求从设备的电路发送到设备的网络接口设备。
379.声明122。本公开的实施例包括根据声明121的物品,其中:
380.在设备的电路处接收第二请求包括在设备的电路处使用第一协议接收第二请求;以及
381.从设备的电路向设备的存储设备发送请求包括使用第二协议从设备的电路向设备的网络接口设备发送请求。
382.声明123。本公开的一个实施例包括根据声明116的物品,其中使用设备的电路处理缓冲器中的数据包括使用设备的电路对缓冲器中的数据进行转码。
383.声明124。本公开的实施例包括根据声明112的物品,其中:
384.至少部分地基于请求在缓冲器中存储数据包括至少部分地根据请求将数据存储在缓冲器的第一区域中;以及
385.非暂时性存储介质上存储有进一步的指令,该指令在由机器执行时导致在缓冲器的第二区域中存储第二数据。
386.声明125。本公开的实施例包括根据声明124的物品,其中在缓冲器的第二区域中存储第二数据包括从设备的存储设备访问第二数据。
387.声明126。本公开的实施例包括根据声明124的物品,其中将第二数据存储在缓冲器的第二区域中包括从设备的第二存储设备访问第二数据,缓冲器还连接到设备的第二存储设备。
388.声明127。本公开的实施例包括根据声明124的物品,其中由设备的网络接口设备从缓冲器读取数据包括设备的网络接口设备从缓冲器的第一区域读取数据。
389.声明128。本公开的实施例包括根据声明127的物品,非暂时性存储介质上存储有进一步的指令,当由机器执行时,该指令导致:
390.网络接口设备从缓冲器的第二区域读取第二数据;以及
391.使用设备的网络接口设备发送第二数据。
392.声明129。本公开的实施例包括根据声明127的物品,非暂时性存储介质上存储有进一步的指令,当由机器执行时,该指令导致:
393.设备的第二网络接口设备从缓冲器的第二区域读取第二数据,缓冲器还连接到设备第二网络接口;以及
394.使用设备的第二网络接口设备发送第二数据。
395.声明130。本公开的实施例包括根据声明112的物品,非暂时性存储介质上存储有进一步指令,当该指令由机器执行时导致在第二缓冲器中存储第二数据,设备包括第二缓冲器、连接到设备的存储设备的第二缓冲器和设备的网络接口。
396.声明131。本公开的实施例包括根据声明130的物品,其中在第二缓冲器中存储第二数据包括从设备的存储设备访问第二数据。
397.声明132。本公开的实施例包括根据声明131的物品,其中在第二缓冲器中存储第二数据还包括经由解复用器在第二缓冲器中存储第二数据。
398.声明133。本公开的实施例包括根据声明130的物品,其中将第二数据存储在第二缓冲器中包括从设备的第二存储设备访问第二数据,第二缓冲器还连接到设备的第二存储设备。
399.声明134。本公开的一个实施例包括根据声明130的物品,非暂时性存储介质上存储有进一步的指令,当由机器执行时,该指令导致:
400.网络接口设备从第二缓冲器读取第二数据;以及
401.使用设备的网络接口设备发送第二数据。
402.声明135。本公开的实施例包括根据声明134的物品,其中网络接口设备从第二缓冲器读取第二数据包括网络接口设备经由复用器从第二缓冲器读取第二数据。
403.声明136。本公开的实施例包括根据声明134的物品,非暂时性存储介质上存储有进一步的指令,当由机器执行时,该指令导致:
404.设备的第二网络接口设备从第二缓冲器读取第二数据,第二缓冲器进一步连接到设备的第二网络接口;以及
405.使用设备的第二网络接口设备发送第二数据。
406.声明137。本公开的实施例包括根据声明97的物品,其中在设备处接收请求包括使用设备的根端口向设备的存储设备发送请求。
407.声明138。本公开的实施例包括根据声明137的物品,其中设备的存储设备和设备的第二存储设备连接到设备的根端口。
408.声明139。本公开的实施例包括根据声明97的物品,其中在设备处接收请求包括使用设备的根端口向设备的网络接口设备发送请求。
409.声明140。本公开的实施例包括根据声明139的物品,其中设备的网络接口设备和设备的第二网络接口设备连接到设备的根端口。
410.声明141。本公开的实施例包括一种物品,该物品包括非暂时性存储介质,该非暂
时性存储介质上存储有指令,当由机器执行时,该指令导致:
411.从主机处理器向设备的存储设备发送第一请求,设备包括存储设备和网络接口设备;以及
412.从主机处理器向设备的网络接口设备发送第二请求,
413.其中设备的存储设备的数据由该设备的网络接口设备发送。
414.声明142。本公开的实施例包括根据声明141的物品,其中:
415.至少部分地基于第一请求从设备的存储设备读取数据;以及
416.数据由设备的网络接口设备至少部分地基于第二请求来发送。
417.声明143。本公开的实施例包括根据声明141的物品,其中设备的存储设备的数据由设备的网络接口设备发送,而不将数据传输到与主机处理器相关联的主存储器。
418.声明144。本公开的实施例包括根据声明141的物品,其中从主机处理器向设备的存储设备发送第一请求包括从主机处理器将第二请求发送到设备的网络接口设备。
419.声明145。本公开的实施例包括根据声明141的物品,其中
420.从主机处理器向设备的存储设备发送第一请求包括使用第一协议从主机处理器向设备的存储设备发送第一请求;以及
421.从主机处理器向设备的网络接口设备发送第二请求包括使用第二协议将第二请求从主机处理器发送到设备的网络接口设备。
422.声明146。本公开的实施例包括根据声明141的物品,非暂时性存储介质上存储有进一步指令,当由机器执行时,该指令导致从主机处理器向设备的电路发送第三请求。
423.声明147。本公开的实施例包括根据声明146的物品,其中电路包括现场可编程门阵列(fpga)、专用集成电路(asic)、片上系统(soc)、图形处理单元(gpu)、通用gpu(gpgpu)、张量处理单元(tpu)、神经处理单元(npu)或处理器。
424.声明148。本公开的实施例包括根据声明146的物品,其中电路对来自设备的存储设备的数据进行转码,以供设备的网络接口设备传输。
425.声明149。本公开的实施例包括根据声明148的物品,其中电路至少部分地基于第三请求对来自设备的存储设备的数据进行转码,以供设备的网络接口设备传输。
426.声明150。本公开的实施例包括根据声明141的物品,非暂时性存储介质上存储有进一步指令,当由机器执行时,该指令导致从主机处理器向设备发送第三请求。
427.声明151。本公开的实施例包括根据声明150的物品,其中设备对来自设备的存储设备的数据进行转码,以供该设备的网络接口设备传输。
428.声明152。本公开的实施例包括根据声明151的物品,其中设备至少部分地基于第三请求对来自设备的存储设备的数据进行转码以供设备的网络接口设备传输。
429.因此,鉴于本文所描述的实施例的多种排列,该详细描述和附带材料仅旨在说明,而不应被视为限制本公开的范围。因此,作为本公开所要求保护的是可能落入以下权利要求及其等同物的范围和精神内的所有此类修改。
技术特征:
1.一种设备,包括:存储设备,所述存储设备包括用于数据的存储部分和用于管理对所述存储部分的访问的控制器;网络接口设备,用于通过网络发送数据;以及主机接口,所述主机接口用于接收对所述存储设备或所述网络接口设备的请求。2.根据权利要求1所述的设备,其中:所述设备还包括连接到所述存储设备和所述网络接口设备的缓冲器;所述存储设备被配置为将数据存储在缓冲器中;以及所述网络接口设备配置为从所述缓冲器读取所述数据。3.根据权利要求2所述的设备,其中,所述存储设备还配置为至少部分地基于所述缓冲器达到阈值来更改将数据存储在缓冲器中。4.根据权利要求2所述的设备,还包括用于处理所述缓冲器中的数据的电路。5.根据权利要求4所述的设备,其中,所述电路被配置为对所述缓冲器中的数据进行转码。6.根据权利要求1所述的设备,其中,所述主机接口包括端点,其暴露向所述存储设备发出第一请求的第一功能和向所述网络接口设备发出第二请求的第二功能。7.根据权利要求1所述的设备,还包括根端口。8.一种方法,包括:在设备处接收请求;至少部分地基于所述请求从所述设备的存储设备访问数据;以及使用所述设备的网络接口设备发送所述数据。9.根据权利要求8所述的方法,其中:所述方法还包括在所述设备处接收第二请求;以及使用所述设备的网络接口设备发送所述数据包括至少部分地基于所述第二请求使用所述设备的网络接口设备发送所述数据。10.根据权利要求8所述的方法,其中:至少部分地基于所述请求从所述设备的存储设备访问所述数据包括所述存储设备至少部分地基于所述请求将所述数据存储在缓冲器中,所述设备包括所述缓冲器,所述缓冲器连接到所述设备的存储设备和所述设备的网络接口设备;以及使用所述设备的网络接口设备发送所述数据包括所述设备的网络接口设备从所述缓冲器读取所述数据。11.根据权利要求10所述的方法,其中,所述存储设备至少部分地基于所述请求将所述数据存储在所述缓冲器中包括至少部分地基于所述缓冲器超过阈值,由所述存储设备将所述数据预取到所述缓冲器。12.根据权利要求10所述的方法,其中,所述存储设备至少部分地基于所述请求将所述数据存储在所述缓冲器中包括至少部分地基于所述缓冲器超过阈值,暂停所述存储设备将所述数据预取到所述缓冲器。13.根据权利要求10所述的方法,还包括使用所述设备的电路处理所述缓冲器中的数据。
14.根据权利要求13所述的方法,其中使用所述设备的电路处理所述缓冲器中的数据包括使用所述设备的电路对所述缓冲器内的数据进行转码。15.根据权利要求8所述的方法,其中在所述设备处接收所述请求包括使用所述设备的根端口将所述请求发送到所述设备的存储设备。16.根据权利要求8所述的方法,其中在所述设备处接收所述请求包括使用所述设备的根端口将所述请求发送到所述设备的网络接口设备。17.一种方法,包括:从主机处理器向设备的存储设备发送第一请求,所述设备包括所述存储设备和网络接口设备;以及从所述主机处理器向所述设备的网络接口设备发送第二请求,其中所述设备的存储设备的数据由所述设备的网络接口设备发送。18.根据权利要求17所述的方法,其中,从所述主机处理器向所述设备的存储设备发送所述第一请求包括从所述主机处理器向所述设备的接口网络设备发送所述第二请求。19.根据权利要求17所述的方法,还包括从所述主机处理器向所述设备的电路发送第三请求。20.根据权利要求19所述的方法,其中,所述电路对来自所述设备的存储设备的数据进行转码,以供所述设备的网络接口设备进行传输。
技术总结
公开了一种设备。存储设备可以包括用于数据的存储部分和用于管理对存储部分的访问的控制器。网络接口设备可以通过网络发送数据。主机接口5可以接收对存储设备或网络接口设备的请求。的请求。的请求。
技术研发人员:R.卡查尔 J.杨 H.胡恩 L.V.卡格尼尼
受保护的技术使用者:三星电子株式会社
技术研发日:2022.12.21
技术公布日:2023/7/12
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
