1.本发明总体上涉及通信网络上的云计算,尤其涉及用于在此类网 络上的云计算中分解远程服务器资源的方法和系统。
背景技术:
2.云计算提供商可以使用设备分解来将服务器的资源灵活地分配 给多个远程客户端。
3.在meyer等人的“disaggregated computing.an evaluation ofcurrent trends for datacentres”(procedia computer science 108c (2017)685
–
694)中,作者断言下一代数据中心可能将基于新兴的 分解功能块为单位的范例,与主板为单位的当前状态不同。诸如计算、 存储器和外围设备的多个功能块或模块将散布在整个系统中,并经由 一个或多个高速网络而互连在一起。
4.在《nec技术期刊》第9卷第2期《ict系统的未来云平台专刊》 的takashi等人的“scalable resource disaggregated platform thatachieves diverse and various computing services”中,作者描述了对 云数据中心所提供的广泛服务的未来适应,这将需要同时处理来自不 同用户的对数据存储、网络、数值分析和图像处理的多种需求的能力, 并且引入资源分解的平台,该平台将可以通过在设备级别从资源池分 配设备并扩展个体性能和功能性来执行计算。
技术实现要素:
5.本文描述的本发明的实施方式提供了一种包括总线接口和桥接 电路的跨网络桥接装置。总线接口被配置用于连接至系统总线。桥接 电路被配置为在(i)在耦合到系统总线并由系统总线所服务的一个或 多个本地设备与处于跨网络远离该装置的一个或多个远程处理器之 间进行交换的系统总线事务与(ii)传达系统总线事务的数据单元之 间进行转换,以用于作为网络分组通过网络向远程处理器发射以及从 远程处理器接收。
6.在一个实施方式中,本地设备中的一个或多个包括图形处理单元 (gpu)。在另一实施方式中,本地设备中的一个或多个包括存储设 备,并且网络分组中的一个或多个包括nvme-over-fabrics(nvme-f) 命令。
7.在一些实施方式中,数据单元被格式化为网络分组,并且桥接电 路被配置为向网络适配器发射以及从网络适配器接收网络分组。在一 个实施方式中,桥接电路被配置为维护多个队列对(qp),每个qp 被指派给相应本地系统总线设备和相应远程处理器之间的相应连接, 并且通过调度多个qp来发射和接收网络分组。在示例实施方式中, 桥接电路被配置为维护在qp中排队的多个工作队列元素,其中每个 工作队列元素被配置为定义系统总线事务中的一个或多个。
8.在所公开的实施方式中,桥接电路被配置为通过将系统总线事务 中的两个或更多个合并在单个工作队列元素中来产生数据单元。在另 一实施方式中,桥接电路被配置为
将出站数据单元写入到存储器以作 为网络分组通过网络发射,并且从存储器读取作为网络分组通过网络 接收的入站数据单元。在又一个实施方式中,在数据单元和系统总线 事务之间进行转换时,桥接电路被配置为修改系统总线事务中的一个 或多个系统总线事务的一个或多个属性。
9.在一些实施方式中,系统总线包括快速外围组件互连(pcie)总 线。在一个实施方式中,系统总线事务包括pcie事务层分组(tlp)。 在其他实施方式中,系统总线包括计算快速链路(cxl)总线或nvlink 总线。在示例实施方式中,数据单元包括第3层网络分组。在另一实 施方式中,系统总线事务包括pcie事务,并且数据单元包括远程直 接存储器访问(rdma)分组。在又一个实施方式中,系统总线事务 包括pcie事务,并且数据单元将作为send消息分组而被发射。
10.在一些实施方式中,桥接电路被配置为识别系统总线事务中的一 个或多个包括消息信号中断(msi-x),并且响应于识别,将包括 msi-x的系统总线事务转换为一个或多个rdma扩展可靠连接(xrc) 消息。在一个实施方式中,桥接电路被配置为仅响应于识别给定系统 总线事务匹配预定义标准而转换给定系统总线事务。在一个实施方式 中,桥接电路被配置为仅响应于识别给定系统总线事务没有与本地系 统总线地址交换而转换给定系统总线事务。
11.在一个实施方式中,本地设备中的至少一个包括由系统总线所服 务的物理设备。在另一实施方式中,本地设备中的一个或多个包括在 物理设备中指派的虚拟化设备。在一些实施方式中,在数据单元和系 统总线事务之间进行转换时,桥接电路被配置为在出现在数据单元中 的网络地址和出现在系统总线事务中的对应设备地址之间进行转换。
12.根据本发明的实施方式,另外提供了一种包括总线接口和桥接电 路的跨网络桥接装置。总线接口被配置用于连接至系统总线。桥接电 路被配置为在(i)在耦合到系统总线并由系统总线所服务的本地处理 器与处于跨网络远离该装置的一个或多个远程处理器之间进行交换 的系统总线事务与(ii)传达系统总线事务的数据单元之间进行转换, 以用于作为网络分组通过网络向远程设备发射以及从远程设备接收。
13.在一个实施方式中,数据单元被格式化为网络分组,并且桥接电 路被配置为向网络适配器发射以及从网络适配器接收网络分组。在另 一实施方式中,桥接电路被配置为将出站数据单元写入到存储器以作 为网络分组通过网络发射,并且从存储器读取作为网络分组通过网络 接收的入站数据单元。
14.根据本发明的一个实施方式,还提供了一种远程系统总线分析装 置,包括第一计算机、跨网络网桥(cnb)和第二计算机。第一计算 机包括系统总线。cnb被配置为将在系统总线上交换的系统总线事务 转换为网络分组,并通过网络发射网络分组。第二计算机被配置为通 过网络从cnb接收网络分组,从接收到的网络分组中提取通过第一 计算机的系统总线交换的系统总线事务,并分析系统总线事务。
15.在一些实施方式中,系统总线包括快速外围组件互连(pcie)总 线。
16.根据本发明的实施方式,还提供了一种跨网络桥接方法,包括操 作耦合到系统总线并由系统总线所服务的一个或多个本地设备。使用 桥接电路,在(i)在一个或多个本地设备和位于跨网络的一个或多个 远程处理器之间进行交换的系统总线事务与(ii)传达系统总线事务 的数据单元之间进行转换,以用于作为网络分组通过网络向远程处理 器发射
以及从远程处理器接收。
17.根据本发明的一个实施方式,还提供了一种跨网络桥接方法,包 括操作耦合到系统总线并由系统总线所服务的本地处理器。使用桥接 电路,在(i)在本地处理器和位于跨网络的一个或多个远程设备之间 进行交换的系统总线事务与(ii)传达系统总线事务的数据单元之间 进行转换,以用于作为网络分组通过网络向远程设备发射以及从远程 设备接收。
18.根据本发明的实施方式,还提供了一种远程系统总线分析方法, 包括使用跨网络网桥(cnb),将在第一计算机的系统总线上交换的 系统总线事务转换为网络分组,并通过网络发射网络分组。在第二计 算机中,通过网络从cnb接收网络分组,从接收到的网络分组中提 取通过第一计算机的系统总线交换的系统总线事务,然后分析系统总 线事务。
19.本发明将通过以下对其实施方式的详细描述并结合附图而得到 更全面的理解,其中:
附图说明
20.图1是示意性地图示出了根据本发明实施方式的服务器的架构的 框图;
21.图2是示意性地图示出了根据本发明实施方式的包括客户端和服 务器的网络的框图;
22.图3是示意性地图示出了根据本发明实施方式将设备的虚拟功能 分配给客户端中央处理单元(cpu)的框图;
23.图4是示意性地图示出了根据本发明实施方式的在全隧道传递 send协议通信模式中与远程计算机的通信的序列图;
24.图5是示意性地图示出了根据本发明实施方式的在全隧道传递混 合协议通信模式中与远程计算机的通信的序列图;
25.图6a是示意性地图示出了根据本发明实施方式的在单端隧道传 递rdma协议通信模式中服务器发起的与远程客户端的通信的序列 图;
26.图6b是示意性地图示出了根据本发明实施方式的在单端隧道传 递send协议通信模式中服务器发起的与远程客户端的通信的序列图;
27.图7a是示意性地图示出了根据本发明实施方式的遵守pcie排序 规则的具有多个并发队列的pcie隧道传递的框图;
28.图7b是示意性地图示出了根据本发明实施方式的遵守相同缓存 行排序规则的具有多个并发队列的pcie隧道传递的框图;
29.图8是示意性地图示出了根据本发明实施方式的基于pcie消息 的中断扩展(msi-x)隧道传递的框图;
30.图9是示意性地图示出了根据本发明实施方式的跨网络网桥 (cnb)中的消息路由的框图;
31.图10是示意性地图示出了根据本发明实施方式的具有cnb的服 务器计算机的框图;
32.图11是示意性地图示出了根据本发明实施方式的基于单端 rdma的写入tlp流程的流程图;
33.图12是示意性地图示出了根据本发明实施方式的基于单端 rdma的读取tlp流程的流程图;和
34.图13是示意性地图示出了根据本发明实施方式的远程pcie分析 的框图。
具体实施方式
概述
35.设备分解允许包括诸如固态盘(ssd)或图形处理单元(gpu) 之类的计算设备的计算服务器在多个远程客户端之间共享设备或其 部分。可以被远程客户端分解和共享的服务器中的计算设备为了简洁 在下文中将其称为“设备”。
36.根据本发明的实施方式通常使用标准网络和标准网络协议来提 供用于高效设备分解的装置和方法,其具有低cpu开销、低存储要 求和良好响应时间。
37.在实施方式中,设备可以耦合到快速外围组件互连(pcie)总线, 并通过设备在pcie上交换的事务层分组(tlp)来与远程客户端进行 通信;在设备和客户端之间通过网络对设备透明地(并且在一些实施 方式中对客户端透明地)隧道传递tlp。
38.尽管以下实施方式主要是指pcie和pcie tlp,但是在替代实施 方式中也可以使用其他系统总线和总线协议;例如,在一些实施方式 中,可以使用计算快速链路(cxl)或nvlink。
39.在一些实施方式中,服务器可以包括跨网络网桥(cnb),其通 过pcie总线监视tlp,确定tlp是否发往远程客户端,并且如果是, 则通过网络向目的地客户端发送对应的消息。在一个实施方式中, cnb还接收发往设备的网络消息,并在pcie上生成对应的tlp。
40.在一些实施方式中,可以使用双向隧道传递,其中服务器和对等 客户端都包括cnb;在其他实施方式中,使用单端隧道传递 (single-end-tunneling),其中只有服务器包括cnb,并且客户端发 起的通信通过其他方式来完成(这种方式将在下文中描述)。
41.在实施方式中,服务器的设备可以被分解为可以同时被分配给多 个客户端的虚拟功能。在一些实施方式中,单个客户端可以同时访问 多于一个服务器中的虚拟功能。
42.在一个实施方式中,cnb将tlp转换成远程直接存储器访问 (rdma)读取和/或写入消息,并使用rdma通过网络协议传输消 息,诸如infiniband或聚合以太网上的rdma(roce)技术(用于 roce背景,例如参见shpiner等人的“roce rocks without pfc: detailed evaluation”,2017年,内核旁路网络研讨会论文集,第25-30 页(doi:10.1145/3098583.3098588))。在另一实施方式中,cnb将 tlp转换成rdma发送消息(下文将简称为send(发送)消息)。
43.以上,将描述五种示例通信模式以及对应的服务器和客户端配置:
44.·
全隧道传递send协议模式;
45.·
全隧道传递混合协议模式;
46.·
单端隧道传递rdma协议模式;
47.·
单端隧道传递send协议模式;和
48.·
混合模式
49.在实施方式中,服务器和客户端都维护队列对(qp)以处理对应 于tlp的网络消息。在一个实施方式中,qp包括一个或多个工作队 列来存储工作队列元素(wqe),这些工作
队列元素与被调度以在网 络上进行传送的网络分组有关;对于每个工作队列,可能有一个对应 的完成队列,它存储完成队列元素(cqe),其对应于工作队列中的 wqe。
50.在一些实施方式中,cnb被配置为维护读取和写入工作队列,并 以遵守pcie排序规则的顺序从工作队列发布wqe(用于由nic执行)。 在其他实施方式中,cnb被配置为以遵守相同缓存行排序规则的顺序 发布wqe。
51.根据一些实施方式,当将tlp转换成网络消息时,cnb被配置 为通过合并多个消息来提高性能。在send协议通信模式下,cnb 被配置为在每个send操作中隧道传递多个tlp。在rdma协议通 信模式中,对于rdma读取或rdma写入,cnb被配置为将针对相 邻地址范围的tlp序列合并为对应于连续pcie地址空间的单个消息。 将如下所述,如果合并可能违反排序规则,则合并也可能会受到限制。
52.在各种实施方式中,tlp隧道传递包括将基于消息的中断扩展 (msi-x)分组从计算机(服务器或客户端)隧道传递到单个或多个 对等体(或到对等体内的多个目的地)。
53.在一个实施方式中,cnb可以包括匹配寄存器,其存储用于tlp 报头的比较数据,包括“无关”字段。匹配寄存器还可以包括针对匹 配tlp的路由信息。当tlp横穿pcie总线时,cnb将tlp报头与 比较数据进行比较;如果发现匹配,则cnb可以根据tlp报头和存 储在对应的匹配寄存器中的路由信息将tlp隧道传递到qp,qp将 通过网络向对等体发送通信消息。
54.在一些实施方式中,隧道传递写入tlp包括:a)将tlp报头与 存储在匹配寄存器中的数据进行比较;b)确定tlp应该被隧道传递; c)为对应的网络分组设置流id;d)发送wqe以供执行;以及e) 接收cqe,它用信号通知wqe执行的完成。
55.在实施方式中,隧道传递读取tlp类似于隧道传递写入tlp,不 同之处在于,在d)之后,网络将接受来自对等体的响应消息,并在 接收到响应分组之后发送cqe。
56.根据实施方式,当cnb改变隧道传递的tlp的字段(诸如请求 方id或tag)时,cnb相应地修改tlp的ecec字段。在一个实 施方式中,ecrc被增量修改。
57.所使用的通信协议包括例如rdma发送、rdma写入和rdma 读取。在其他实施方式中,该协议可以包括非易失性存储器快速结构 (nvme-f)。进一步附加地或可替代地,可以使用任何其他合适的 协议。
58.本发明的另一个实施方式提供了一种用于远程pcie分析的系统, 包括具有耦合到网络的cnb和pcie的第一计算机。耦合到网络的第 二计算机可以远程分析第一计算机中的pcie事务,其中第一计算机 的cnb可以被配置为将pcie事务隧道传递给第二计算机以进行分析。 在一些实施方式中,分析软件在第二计算机上运行并且可以具有在第 一计算机中运行的代理。
59.总之,根据本发明的实施方式,设备分解由cnb提供,该cnb 使用标准通信协议将pcie tlp隧道传递到对等计算机并且响应于通 过网络从对等计算机接收到消息而将tlp注入到pcie总线中。cnb 还可以被用于远程pcie诊断。
60.所公开的技术可以被用于多种用例和环境中。在一些用例中,一 个或多个分解的设备包括gpu。在其他用例中,例如使用诸如 nvme-f之类的协议,所公开的cnb可以在存储应用中被使用。
61.在下面描述的实施方式中,客户端包括cpu,但是这种选择纯粹 是为了举例。在其
他实施方式中,所公开的技术可以被用于桥接在设备和任何其他类型的客户端之间,特别是诸如gpu之类的各种处理器之间。因此,术语“处理器”在本文中被用来指代cpu、gpu和其他合适的处理器类型。系统描述
62.在下面的描述中,我们将使用术语“服务器”和“客户端”;虽然可能存在客户端和服务器的其他定义,但就我们的目的而言,客户端是通过通信网络访问由服务器所提供的服务的计算机硬件设备或软件,而服务器是专用于运行满足其他计算机需求的服务的计算机。
63.尽管下文描述的实施方式涉及包括pcie系统总线的服务器和客户端,但是在替代实施方式中可以使用其他合适的系统总线,包括例如计算机快速链路(cxl)或nvlink。
64.图1是示意性地图示出了根据本发明实施方式的服务器100的架构的框图。服务器100耦合到网络102,诸如以太网或infinibandtm(或任何其他合适的通信网络),并且被配置为允许连接到网络的客户端(未示出)访问设备104。设备104服务作为可以根据所公开的实施方式分解的设备的示例。此类设备可以包括(但不限于)固态磁盘(ssd)或图形处理单元(gpu)、现场可编程门阵列(fpga)和深度学习推理引擎。
65.根据本发明的实施方式,电路和合适的软件分解设备并将其暴露给耦合到网络的客户端。
66.服务器100还包括cpu106、cpu本地存储器108(其存储本地cpu数据和指令)和随机存取存储器(ram)110。cpu106、设备104和ram110耦合到高速外围组件互连(pcie)高速系统总线112(在替代实施方式中可以使用其他合适的高速系统总线)。
67.cpu106通过pcie总线112和网络接口控制器(nic)114在网络102上横向传送通信分组。(虽然nic是以太网术语,但是在替代实施方式中可以使用其他类型的网络适配器,诸如infinibandtm主机通道适配器(hca),或任何其他合适的网络适配器。)
68.为了允许耦合到网络102的客户端处理器从设备104接收服务,服务器100还包括跨网络网桥(cnb)118。根据图1中所图示的示例实施方式,cnb118被配置为对cpu106透明地在pcie事务层分组(tlp)和对应的网络分组之间进行转换(tlp包括pcie总线上的一个或多个pcie事务)。
69.在一些实施方式中,cnb118包括用于连接到pcie总线112的总线接口,在本示例中为pcie接口120,以及被配置为执行各种cnb功能的桥接电路122。本文描述的各种cnb也可以具有这种一般结构。在一些实施方式中,虽然不是必须的,但是cnb118包括用于直接与nic114通信的附加接口。在下面的描述中(图1和后续图),为简洁起见,由桥接电路执行的动作被称为由cnb执行。
70.当服务器直接或通过ram110从客户端接收到发往设备104的分组时,cnb从nic114接收分组,并生成将数据写入设备和/或ram中的对应的pcietlp。当设备104发起与客户端的通信时,设备通过pcie生成tlp;cnb拦截tlp,将tlp转换为通信分组,并通过nic114将分组发送到网络。(分组和tlp之间的转换有时将被称为隧道传递。)
71.因此,根据图1的示例实施方式,设备104被分解并暴露给客户端;远程客户端可以使用tlp对服务器cpu透明地与设备通信;cnb对cpu透明地在客户端和设备之间横向传送的分组之间桥接到tlp。
72.如可以领会的那样,图1中所图示的服务器100的配置是示例配 置,其描述纯粹是为了概念清楚的缘故。在本发明的替代实施方式中 可以使用其他合适的配置。例如,cpu 106可以包括多个cpu;pcie 总线112可以是任何其他合适的总线;本地存储器108可以被省略, ram 110可以被省略。在一些实施方式中,可以存在本地存储器的和/或ram的层次结构;在其他实施方式中,可以存在多个高速系统总 线和多个设备。
73.根据本发明的一些实施方式,客户端计算机还可以包括与cnb118(图1)相似或相同的跨网络网桥。
74.图2是示意性地图示出了根据本发明实施方式的包括客户端和服 务器的网络200的框图。网络200包括分组交换网络102(图1), 其可以是以太网、infiniband
tm
或任何其他合适的网络,以及通过网 络通信的四个计算机:第一客户端202、第二客户端204、第一服务 器206和第二服务器208。如可以领会的那样,附加的计算机可以耦 合到网络102,包括(但不限于)附加的服务器和附加的客户端。
75.客户端202包括cpu 210、存储器212、网络接口控制器nic 214 和跨网络网桥(cnb)216。根据图2中所图示的示例实施方式,上 面提及的所有客户端202的子单元通过系统总线(例如,pcie)互连。
76.当与耦合到网络102的服务器(例如,服务器206或服务器208) 通信时,cpu 210可以使用tlp将数据发送到远程服务器中的设备。 cnb 216被配置为拦截这样的tlp,并且使用例如完全rdma协议 或rdma协议的send部分(将在下面描述)对cpu透明地将tlp 变换为网络分组;nic 214然后将分组发送到远程服务器。
77.cnb 216还被配置为从远程服务器中的设备接收发往存储器212 的分组,将输入数据变换为tlp并将数据直接写入到存储器212中。
78.客户端204包括cpu 218、存储器220和nic 222。客户端204 不包括cnb,因此,为了访问服务器206或208中的设备,客户端 204可以使用诸如rdma之类的技术。客户端204不知道远程服务器 的实现,特别是不知道远程服务器是否包括cnb。
79.服务器206包括通过pcie系统总线互连的cpu 224、存储器226、 nic 228和设备230。像服务器100(图1)一样,服务器206支持隧 道传递并直接在网络分组和tlp之间进行转换。服务器206不知道远 程客户端的实现,特别是不知道远程客户端是否包括cnb。
80.服务器208是更复杂服务器的示例,包括cpu 232、存储器234、 两个nic 236、cnb 238和两个设备——设备0 240和设备1 242。这 两个设备可以是相同的或不同的类型;两个nic可以同时传送分组, 增加通信带宽。cnb 238耦合到两个nic,并在通过任一nic横向传 送的分组和对应的tlp之间进行转换。
81.因此,根据图2中所图示的示例配置,各种客户端和服务器可以 通过网络彼此通信,包括具有或不具有cnb的服务器和客户端。服 务器中的设备被分解并暴露给客户端。向客户端或服务器添加cnb 对软件是透明的。此外,向服务器添加cnb对所服务的客户端是透 明的,向客户端添加cnb对提供服务的服务器是透明的。
82.如应当领会的那样,网络200的配置,包括客户端202、204和 服务器206、208,是纯粹为了概念清楚的缘故而描述的示例配置。在 本发明的替代实施方式中可以使用其他合适的配置。例如,在一些实 施方式中,一些服务器也可以兼作客户端,并且一些客户端可以通过 其他网络元件访问服务器;在其他实施方式中,一些服务器和/或客户 端可以包括多
个pcie总线,而在其他实施方式中,一些服务器和/或 客户端可以是多个耦合的计算机的聚合。
83.图3是示意性地图示出了根据本发明实施方式将设备的虚拟功能 分配到客户端cpu的框图300。在示例实施方式中,设备可以包括存 储设备(例如,ssd)或gpu,并且虚拟功能可以包括虚拟存储或处 理功能。
84.示出了三个客户端——客户端a 302、客户端b 304和客户端c306。客户端通过网络102(图1和图2)连接到两个设备——设备a308和设备b 310。在一些实施方式中,两个设备可以在两个独立的 服务器中;在其他实施方式中,这两个设备可以在同一服务器中。
85.根据图3中所图示的示例实施方式,两个设备中的每一个被划分 为多个虚拟功能(vf),这些虚拟功能被同时映射到客户端中的请求 实体(例如,虚拟机(vm))——设备a 308被划分为vf0 312、 vf1 314、vf2 316和vf3 318,而设备b 310被划分为vf0 320和 vf1 322。在设备到客户端的tlp中,vf可以通过客户端cpu在访 问设备时指定的地址,或者通过vf添加到网络传输的请求方id或 pas id来标识。
86.根据图3中所图示的示例实施方式,vf0 312和vf1 314中的每 一个都由具有不同地址范围的客户端a 302访问;客户端a可以在 vf0 312和vf1 314访问之间进行区分,因为它们包括不同的请求方 id或pasid字段(从客户端a返回到设备a的完成指示将包括相同 的请求方id字段)。此外,根据图3的示例实施方式,客户端b 304 被分配了单个vf-vf2 316,而客户端c306被分配了三个vf——设 备a 308的vf3 318、设备b 310的vf0 320和vf1 322。
87.在服务器侧,可以基于唯一的请求方id、pcie的进程地址空间 标识符(pasid),或者,基于地址范围,如果服务器包括输入输出 存储器管理单元(iommu),则可以区分由同一设备服务的不同客 户端。
88.需要注意的是,并不是所有的请求方id都需要被隧道传递;某 些功能可以由本地cpu处理而无需cnb干预。
89.如应当领会的那样,图3中所图示的配置是纯粹为了概念清楚的 缘故而描绘的示例配置。在本发明的替代实施方式中可以使用其他合 适的配置。例如,一些服务器-客户端通信可以通过专用网络来完成, 而一些服务器可以兼作客户端。通信模式
90.根据本发明的实施方式,在客户端连接到服务器时,可以使用至 少五种不同的客户端-服务器通信模式,如下表中所总结的那样 (“acked”是“确认”的缩写):
91.在替代实施方式中可以使用其他合适的模式,包括但不限于本文 的模式的组合;例如,在一个实施方式中,只有客户端具有cnb。
92.在一些通信模式中,客户端cpu可能不需要cnb,并且可以使 用任何合适的客户端cpu,如下文将描述的。全隧道传递发送协议
93.根据本发明的实施方式,可以设置全隧道传递send协议通信模 式,其中客户端和服务器都包括cnb,并且客户端和服务器中的tlp 都通过在网络上横向传送的send消息隧道传递到对等计算机 (send是rdma协议的一部分)。
94.图4是示意性地图示出了根据本发明实施方式的在全隧道传递 send协议通信模式中与远程计算机的通信的序列图400。由于全隧 道传递send协议通信模式中的序列是对称的(相对于客户端-服务 器),所以图4涉及:发起方(或“请求方”),包括cpu/设备/ram 和cnb;以及响应方(或“目标”),包括cpu/设备/ram和cnb。 发起方或响应方都可以是客户端或服务器。cpu/设备/ram是客户端 或服务器中的pcie耦合的电路的聚合;通常,客户端侧
不包括设备; 并且,在一些实施方式中,任一侧可以不包括pcie存储器。为简洁 起见,我们将在下面将cpu/ram/设备聚合称为cpu复合体。
95.图4图示出了以下对象之间的交互事件:发起方侧cpu复合体 402、发起方侧cnb 404、通信网络406、响应方侧cnb 408和响应 方侧cpu复合体410。(图4中所图示的cnb操作包括由cnb控制 但由nic的其他部分执行的操作。)图4描绘了写入(发起方到响应 方)流程,然后是读取流程。
96.(从顶部开始)前三个事件描绘了发起方到响应方的写入。该序 列以pcie写入事件412开始,其中发起方的cpu执行写入tlp。发 起方侧cnb拦截tlp,并根据地址范围或请求方id(或pasid)确 定tlp应被隧道传递到响应方(到服务器的远程设备,或客户端的存 储器),将来自tlp的数据封装在send消息中,并且在send事 件414中,通过网络406将send消息发送到响应方侧cnb 408。然 后,响应方侧cnb在写入pcie事件416中,生成与(事件412的) 发起方侧tlp相对应的tlp;cnb可以相对于响应方的pcie基地址 寄存器(bar)来对地址进行校正,以便指向响应方专用的地址范围。
97.接下来的六个事件描绘了发起方到响应方的读取。在pcie读取 事件418中,发起方的cpu从与响应方(存储器或设备)相关联的 地址范围中生成读取tlp。发起方侧cnb 404拦截tlp并将tlp解 释为读取请求。然后,cnb在send事件420中通过网络406向响 应方侧cnb 408发送对应于读取请求的send消息。响应方侧(或 请求方侧)cnb 408可以根据响应方pcie bar来改变地址(或请求 方id),并且在pcie读取事件422中,生成与发起方pcie中的读 取tlp相对应的读取tlp。
98.cpu复合体410接收pcie读取事件,并且在完成事件424中, 通过生成对应于完成事务的tlp来进行响应,就好像对由耦合到相同 pcie的cpu发起的读取请求进行响应一样。tlp由响应方侧cnb 408 拦截,其在send事件426中通过网络406发送封装完成tlp的send 消息。发起方侧cnb接收send消息,并且在完成事件428中生成 完成tlp,该完成tlp对应于事件424的响应方侧pcie完成tlp。
99.总之,图4中所图示的示例实施方式描述了具有发送通信模式的 全隧道传递,其中:
100.·
客户端和服务器都包含clb。
101.·
clb捕获tlp并将tlp封装在跨网络发送的send消息中。
102.·
响应于send消息,远程cnb注入tlp,并可以(在客户端侧) 将pcie请求方id修改为预期的本地请求方id,或者关于设备(或 虚拟设备)与远程pcie中的bar的偏移,(在服务器侧)修改地址。
103.·
在读取tlp中,发起方clb存储读取请求标签,并发送对应的 send消息;响应方生成响应send分组,并将其发送给发起方;然 后发起方将响应隧道传递到本地pcie。全隧道传递混合协议
104.根据本发明的实施方式,可以在服务器和客户端之间设置全隧道 传递混合协议通信模式,其中客户端和服务器都包括cnb。客户端和 服务器中的tlp都隧道传递到对等体,在写入到设备时使用send 消息,并且在写入到客户端存储器时使用rdma协议。
105.图5是示意性地图示出了根据本发明实施方式的在全隧道传递混 合协议通信模式中与远程计算机的通信的序列图500。由于全隧道传 递混合协议模式中的序列是对称的
(相对于客户端-服务器),图5 与上面的图4一样,涉及发起方和响应方,两者都包括cpu-ram
‑ꢀ
设备(“cpu复合体”)——发起方侧cpu复合体502和响应方侧 cpu复合体510。发起方侧还包括cnb 504,并且响应方侧还包括 cnb 508。
106.图5描绘了写入流程,然后是读取流程。(从顶部开始)前三个 事件描绘了发起方到响应方的写入,并且可以与图4中所图示的前三 个事件相同。该序列以pcie写入事件512开始,其中发起方的cpu 复合体在pcie上执行写入tlp。发起方的cnb拦截tlp,确定tlp 应被隧道传递到响应方,将来自tlp的数据封装在rdma写入消息 中,并且在rma写入事件514中,通过网络406将rdma写入消息 发送到响应方侧cnb 508。然后,响应方侧cnb在写入pcie事件 516中生成与(事件512的)发起方侧tlp相对应的tlp。
107.接下来的六个事件描绘了发起方到响应方的读取。在pcie读取 事件518处,发起方的cpu复合体从与响应方相关联的地址范围中 生成读取tlp。发起方侧cnb 504拦截tlp并将其解释为远程读取 请求;发起方的cpu复合体还存储用于读取tlp的标签id。接下来, 在send事件520中,发起方侧cnb通过网络406向响应方侧cnb508发送对应于读取请求的send消息,响应方侧cnb 508在pcie 读事件522中生成与发起方的pcie中的读取tlp相对应的读取tlp (事件518)。
108.响应方侧cpu复合体510接收pcie读取事件,并且在完成事件 524中,通过生成完成tlp来进行响应,就好像对由耦合到相同pcie 的cpu发起的读取请求进行响应一样。tlp由响应方侧cnb 508拦 截,其在send事件526中通过网络406发送封装从tlp返回的数 据的send消息。rdma写入协议绕过发起方侧cnb,并被发起方 的cpu复合体处理,发起方的cpu复合体可以生成对应的tlp,以 将输入数据写入本地ram中(发起方的cpu还将标签与所存储的标 签进行比较,以处理无序返回的分组)。单端隧道传递rdma协议
109.根据本发明的另外实施方式,服务器和客户端之间可以设置单端 隧道传递rdma协议通信模式,其中只有服务器包括cnb;因此, 在实施方式中,服务器可以服务不包括cnb的客户端。此外,在实 施方式中,服务器不知道对等客户端的配置,其可能包括或可能不包 括cnb。
110.图6a是示意性地图示出了根据本发明实施方式的在单端隧道传 递rdma协议通信模式中服务器发起的与远程客户端的通信的序列 图600。
111.图6a图示出了客户端侧cpu/ram 602、客户端侧nic 604、通 信网络406、服务器侧cnb 606、服务器侧设备608和服务器侧cpu610之间的交互事件。图6a描绘了写入(服务器到客户端)序列, 然后是读取序列。
112.(从顶部开始)前三个事件描绘了服务器到客户端的写入。该序 列从pcie写入事件612开始,其中服务器的设备生成写入tlp。服 务器侧cnb 606拦截tlp,确定tlp应被隧道传递到远程客户端(例 如,基于地址范围),将来自tlp的数据封装在rdma写入消息中, 并且在rdma写入事件614中通过网络406向客户端侧cnb 604发 送rdma写入消息。然后,客户端侧cnb在pcie写入事件616中 生成与(事件612的)服务器侧tlp相对应的tlp。
113.接下来的八个事件描绘了服务器到客户端的读取。在pcie读取 事件618处,服务器的设备从与远程客户端相关联的地址范围中生成 读取tlp。服务器侧cnb 606拦截tlp并将其解释为来自客户端的 读取请求。cnb存储用于读取tlp的标签id,并且在rdma读取 事
件620中,通过网络406向客户端侧nic 604发送对应于读取请求 的rdma读取消息,客户端侧nic 604在pcie读取事件622中生成 与服务器pcie中的pcie读取tlp相对应的读取tlp(事件618)。
114.客户端cpu 602接收tlp读取消息,并且在完成数据事件624 中,通过完成指示和返回的数据在通过网络到服务器的消息中进行响 应。该消息由服务器侧cnb 606接收,其在完成事件626中生成完成 事务。
115.因此,根据图6a中所图示的示例实施方式,具有cnb的服务器 可以与不包括cnb的客户端通信;在服务器侧,通信是cpu透明的。单端隧道传递发送协议
116.根据本发明的实施方式,可以在服务器和客户端之间设置单端隧 道传递send协议通信模式,其中服务器包括cnb,客户端包括减少 功能性的cnb代理(其可以由软件实现)。
117.图6b是示意性地图示出了根据本发明实施方式的在单端隧道传 递send协议通信模式中服务器发起的与远程客户端的通信的序列图 650。图6b图示出了客户端侧cpu/ram 652、客户端侧cnb代理 654、通信网络406、服务器侧cnb 656、服务器侧设备658和服务器 侧cpu 660之间的交互事件。图6b描绘了写入(服务器到客户端) 流程,随后是读取流程和隧道完成信令。
118.(从顶部开始)前三个事件描绘了服务器到客户端的写入。该序 列从pcie写入事件662开始,其中服务器的设备在pcie上生成写入 tlp。服务器侧cnb拦截tlp,确定tlp应被隧道传递到远程客户 端(例如,基于地址范围),将来自tlp的数据封装在send消息 中,并且在send事件664中通过网络406向客户端侧cnb代理654 发送send消息。然后,cnb代理654将在写入pcie事件666中生 成与(事件662的)服务器侧tlp相对应的tlp。
119.接下来的八个事件描绘了服务器到客户端的读取。在pcie读取 事件668处,服务器的设备从与远程客户端相关联的地址范围中生成 tlp。服务器侧cnb 656拦截tlp并将其解释为读取请求。cnb存 储用于读取tlp的标签id,并且在send事件670中,通过网络406 向客户端侧cnb代理654发送与读取请求相对应的send消息,客 户端侧cnb代理654在pcie读取事件672中生成与服务器pcie中 的读取tlp相对应的读取tlp(事件668)。
120.客户端的cpu/ram 652接收send消息,并且在完成事件674 中,通过生成完成tlp来进行响应,就好像对由耦合到相同pcie的 设备发起的读取请求进行响应一样。tlp被客户端侧cnb代理654 拦截,其在send事件676中通过网络406发送封装完成tlp的send 消息。服务器侧cnb接收消息,比较并生成完成tlp,该完成tlp 对应于客户端侧pcie完成写入事件674。混合通信模式
121.在本发明的又一些实施方式中,服务器和客户端之间可以设置混 合通信模式,其中服务器仅包括cnb。
122.混合通信模式类似于单端隧道传递rdma协议,不同之处在于 它不是完全设备直通的(整个设备由远程客户端控制)——设备由服 务器的cpu控制。
123.客户端的cpu借助于显式网络请求(例如,nvme-f命令包) 直接与服务器的cpu通信,后者继而又将请求递送给cnb。显式网 络请求包括客户端发送给设备的地址。然后,响
应于客户端已发送的 地址,设备将从本地存储器执行tlp读取/写入。
124.在一个实施方式中,当混合通信模式可操作时,服务器的cnb 被配置为使用rdma协议将具有客户端发送的地址的tlp隧道传递 回客户端。
125.如应当领会的那样,上述各种通信模式是作为示例引用的示例模 式,并且仅仅为了概念清楚的缘故而被示出。根据所公开的技术的客 户端-服务器通信模式不限于上文的描述。在替代实施方式中,可以 使用其他合适的模式。例如,包括cnb的客户端可以与不包括cnb 或包括cnb代理的服务器通信。在一些实施方式中,可以在单个服 务器和/或单个客户端中使用多个cnb。cnb发送的消息可以由nic 响应于cnb控制指示来发送,也可以由nic和cnb之间的协作来发 送。tlp有时可以包括多个tlp并且一个消息可以包括多个消息。多个队列和合并
126.根据定义,pcie强制执行事务排序(下面的写入指的是发布的写 入事务);例如,写入事务不能绕过写入,读取不能绕过写入,写入 可以绕过写入并且读取可以绕过读取)。在支持较弱排序形式的本发 明的一些实施方式中,其中排序由缓存的结构来保证(例如,tlp以 相同的缓存行或缓存中使用的地址范围的相同子集为目标,诸如页 面),可以调用多个并发队列对,和/或可以使用wqe的合并。(在 一些实施方式中,作为附加或代替合并,可以使用wqe的压缩;在 一个实施方式中,wqe可以被加密。)
127.图7a示意性地图示出了根据本发明实施方式的遵守pcie排序规 则的具有多个并发队列的pcie隧道传递的框图700。根据图7a中所 图示的示例实施方式,跨网络桥接装置维护单个写入队列702、第一 读取队列704、第二读取队列706和第三读取队列708。写入队列702 包括必须串行执行的写入请求——写入请求w0 710的执行必须先于 写入请求w1 712的执行,而写入请求w1 712的执行必须先于写入请 求w3 714的执行。
128.队列704、706和708存储可以并行或以任何顺序执行的请求—— 读取请求r0 716、读取请求r2 718和读取请求r3 720。然而,在(从 对等计算机)接收到针对对应写入的网络完成指示(指示写入请求已 被递送)之前,不可以执行读取请求。
129.为了改善延迟,在一些实施方式中,一些读取wqe被存储在写 入队列702中并且将在先前的写入wqe之后立即被执行,而无需等 待完成指示。在减少延迟的同时,这种技术也降低了队列并行度,并 且可能会降低性能;因此,存储在队列702中的读取wqe的量应该 根据期望的性能/延迟折衷来进行仔细调整。
130.因此,并发队列遵守pcie排序规则。
131.图7b是示意性地图示出了根据本发明实施方式的遵守相同缓存 行(或缓存地址子集)排序规则的具有多个并发队列的pcie隧道传 递的框图750。在实施方式中,相同缓存行排序规则意味着仅当两次 访问的地址在同一缓存行中时才应保持排序。cnb可以包括散列表, 以快速检查两个地址是否被包含在同一缓存行中,并且如果是,则对 缓存访问进行排序。
132.第一队列752存储写入请求w0 754,随后是(并且因此必须按 时间顺序在之前)读取请求r0 756。第二队列758存储写入请求w1760;第三队列762存储读取请求r2 764;并且,第四队列764存储 读取请求r3 770,随后是写入请求w3 772。根据图7b中所图示的示 例实施方式,通过四个队列之间的基于散列的队列选择来保证相同缓 存行排序。刷新指示
133.根据实施方式,当采用宽松的排序(诸如相同缓存行)时,设备 可能仍然偶尔需要有序执行。例如,设备可以将多个数据记录以宽松 的顺序写入到存储器,然后写入数据就绪标签,指示所有记录都被存 储在存储器中。数据就绪应在所有数据记录写入都完成之后被写入。
134.为此,在实施方式中,例如通过发送特定的tlp、匹配requestor_id/ 地址/pasid或通过特殊的cnb接口,设备被配置为发出刷新指示。 cnb被配置为在检测到刷新指示时停止桥接写入tlp,直到cnb接 收到针对所有未完成网络请求的网络完成指示。合并
135.根据本发明的实施方式,clb可以合并多个tlp;这在协议报头 相对于数据有效负载较大时可能会提高性能。
136.在上述的全隧道传递send协议和单端隧道传递send协议通信 模式中,cnb被配置为在每个send操作中隧道传递多个tlp。
137.在基于rdma的通信模式下,对于rdma读取,cnb被配置为:
138.·
维护未决读取tlp的群组(以下将被称为“会话”)列表,其 中每个会话包括相同地址范围中的tlp(例如,会话中的最低地址和 最高地址之间的距离不超过1kb)。
139.·
如果tlp的地址在现有会话的地址范围内,则向现有会话添加 新的tlp;否则——为tlp打开新会话。
140.·
当尺寸足够大或计时器到期时终止会话。或者tlp的数量,; 计时器到期变型。
141.·
对于终止的会话——将对应的tlp整合为单个(如果可能的 话——连续的)tlp,封装在rdma消息中并进行发送。
142.在一些实施方式中,当需要严格的pcie排序时,cnb被配置为 仅当事务以连续地址为目标时才合并写入tlp。在一个实施方式中, 当需要相同缓存行排序时,cnb被配置为避免合并未被映射到相同缓 存行的读取和写入。在实施方式中,会话可以在第一tlp被合并时终 止;在另一实施方式中,会话相对于tlp之间的到达时间而终止。在 一些实施方式中,会话可以在字节数或tlp(任何tlp或预设类型的 tlp)的数量超过预设阈值时终止,在其他实施方式中,可以应用任 何其他合适的标准来终止会话。msi-x处理
143.pcie-3(和进一步的修订版)支持消息信号中断扩展 (message-signaled-interrupt-extended)(msi-x),通过专用tlp 将多达2,048个中断传输到多个目的地。根据本发明实施方式的cnb 将msi-x tlp隧道传递到对等计算机。
144.图8是示意性地图示出了根据本发明实施方式的pcie msi-x中 断隧道传递的框图800。
145.设备802通过本地pcie总线生成pcie msi-x tlp。cnb 804识 别msi-x事务,并访问表806以将msi-x tlp转换为对应的rdma 扩展可靠连接(xrc)消息(在一些实施方式中,不需要表806,并 且cnb根据pcie msi-x消息的地址或数据来构建消息)。
146.队列对808通过本地nic 810和网络812向客户端发射rdma 消息。在客户端中,远程nic 812将消息引导到队列对816。
147.单个qp确保有序执行;xrc扩展传输报头(xrceth)指定客 户端(例如,不同的vm)中的xrc目标818,对应于msi-x目标。 xrc目标向msi-x电路发送对应的msi-x中断,msi-x电
路由客户 端msi配置进程822预先配置。每个msi-x电路820可以存储针对 预配置的中断目标之一与服务器发送的中断数据相对应的中断数据。
148.如应当领会的那样,图8中所图示的msi-x隧道传递的服务器和 客户端配置是示例配置。在替代实施方式中可以使用其他合适的配置。 例如,在一些实施方式中,客户端可以包括cnb,其可以将xrc转 换为msi-c tlp。
149.图9是示意性地图示出了根据本发明实施方式的跨网络桥接装置 中的消息路由900的框图。服务器902通过网络904与第一客户端906 和第二客户端908通信。服务器902包括设备a 910、设备b 912和 cpu 914。设备和cpu通过pcie系统总线916进行通信。服务器902 还包括被配置为通过网络将tlp隧道传递给客户端的cnb 918;以 及nic 920。
150.根据图9中所图示的示例实施方式,服务器分配三个队列对(qp) 以与客户端计算机中的对应qp通信——qp a 922,其被配置为通过 网络与qp a’924通信;qp b 926,其被配置为与qp b’928通信; 以及qp c 930,其被配置为与qp c’932通信。qp a’由第一客户端 906维护,而qp b’928和qp c’932均由第二客户端908维护。
151.cnb 918被配置为监视pcie总线并检测由设备910、912之一发 起并发往客户端计算机的tlp。根据图9中所图示的示例实施方式, 设备a tlp可以被隧道传递到第一客户端906中的qp a’924,或者 到第二客户端928中的qp b’928,而设备b tlp可以仅被隧道传递 到第二客户端中的qp c’932。
152.为此,cnb 918包括匹配寄存器——匹配寄存器934存储qp a 匹配规则,匹配寄存器936存储qp b匹配规则,并且匹配寄存器938 存储qp c匹配规则。根据图9中所图示的示例实施方式,如果匹配 寄存器934检测到匹配,则cnb将tlp导向至qp a——例如,pcietlp由设备a生成,接收方id=0,并且地址=0x200。如果tlp由设 备a生成,且接收方id=1,则cnb进一步将tlp导向至qp b,而 不管地址如何(由匹配寄存器938定义);如果tlp由设备b生成, 接收方id=3且地址=0x8000(由匹配寄存器938定义),则导向至 qp b。
153.在全隧道传递配置中,客户端的cnb中的匹配寄存器将被配置 为匹配tlp地址,其中每个地址表示远程bar地址。匹配寄存器将 匹配请求方id和服务器侧的地址。在一些实施方式中,当发生冲突 匹配时将应用优先级匹配;例如,0到0x1000可以去到隧道1,但 0x200-0x300可以覆盖并去到隧道2。
154.通常,与匹配寄存器的比较被视为预定义标准的示例实现。仅当 tlp与预定义标准匹配时,cnb才转换并发送给定的tlp。需要注 意的是,如果cnb没有检测到任何匹配,则tlp不会被隧道传递(例 如,当tlp指向本地pcie地址时)。
155.如应当领会的那样,上面参考图9描述的服务器902和cnb 918 的配置是作为示例引用的示例配置,并且仅仅为了概念清楚的缘故而 被示出。根据所公开的技术的服务器和cnb不限于上文的描述。在 替代实施方式中,可以使用其他合适的配置。例如,匹配寄存器934、 936和938可以被存储在基于散列的ram表中,或者被存储在三元 内容可寻址存储器(tcam)中。
156.图10是示意性地图示出了根据本发明实施方式的具有跨网络网 桥的服务器1000的框图。服务器包括设备1002(例如gpu或ssd)、 pcie总线1004、cnb 1006、cpu 1008(例如arm)、网络适配器 1010和ram 1012。cnb包括匹配寄存器1014、tlp注入电路1016 和隧道网关1018。
157.匹配寄存器1014被配置为检测应该被隧道传递到客户端的tlp 并且将这种匹配的tlp用信号通知给cnb的其他电路。匹配寄存器 1014还被配置为将其他tlp直接导向至cpu。
158.在一个实施方式中,为了通过网络发送分组,cnb 1006生成与 匹配的tlp相对应的工作队列条目(wqe)并将wqe输出到ram1012(在写入每个wqe记录之后,cnb可以发送门铃指示)。网络 适配器1010读取wqe,并且在完成先前的(或更高优先级的)wqe 之后,通过网络发送所请求的消息,并向cnb发送对应的完成队列 条目(cqe)。
159.如可以领会的那样,本文描述的工作队列机制是作为示例引用的。 替代实施方式可以使用其他机制在cpu和网络适配器之间传送分组 发送/接收请求。
160.为了从客户端到设备桥接服务器接收的响应读取分组,cpu被配 置为经由ram 1012向cnb发送读取响应指示。tlp注入电路生成 对应于读取响应的tlp,并将tlp注入pcie中。
161.当服务器接收到完成指示时,cpu 1008向cnb 1006的隧道网关 1018发送对应的指示,后者将(在tlp注入电路中)生成tlp以向 设备指示完成。
162.根据图10中所图示的示例实施方式,cnb 1006处理分组和tlp 路由和控制。分组的有效负载(以及在一些实施方式中的部分报头) 直接在ram和pcie之间横向传送,可能通过检查/添加校验和、对 准数据、校正(增量或通过重新计算)tlp ecrc字段以反映更改的 请求方id和tag字段等的电路(为简单起见,未示出此类电路)。
163.如可以领会的那样,以上参考图10描述的服务器1000的配置是 作为示例引用的示例配置,并且仅仅为了概念清楚的缘故而被示出。 根据所公开的技术的服务器不限于上文的描述。在替代实施方式中, 例如,匹配寄存器1014可以将非隧道传递的tlp直接发送到网络适 配器而不是cpu。在另一实施方式中,cnb将门铃记录写入ram中 (或者,例如写入cnb内的可寻址位置),并将门铃指示发送到网 络适配器1010。
164.图11是示意性地图示出了根据本发明实施方式的基于单端 rdma的写入tlp流程的流程图1100。该流程由参考图10描述的服 务器电路执行(以下描述中的所有服务器电路和所指明的单元编号均 参考图10)。
165.流程开始于send-tlp步骤1102,其中设备1002通过pcie总 线发起写入tlp。接下来,在确定隧道传递步骤1104中,匹配寄存 器1014将tlp报头与预先存储的比较数据进行比较,确定tlp是否 应该被隧道传递,并且如果是,则根据匹配寄存器中存储的路由信息 设置流id(流id可以指示打开的qp之一)。
166.如果tlp应该被隧道传递,则cnb在构建wqe步骤1106中构 建对应于tlp的wqe,将wqe发送到ram 1012,并且递增生产方 索引。接下来,在发送门铃步骤1108处,cnb在ram中写入对应 于流参数的门铃记录,并发送门铃指示。
167.在网络控制器发送该分组之后,网络控制器在发送cqe步骤1110 中向cnb发送指示对应wqe完成的cqe。cnb在匹配流id步骤 1112中检查cqe,将流id与所有未决wqe的流id进行比较,并 递增对应的消费方索引。在步骤1112之后流程结束。(上面提到的 生产方和消费方索引对于wqe与可能被乱序接收的cqe的匹配很有 用。)
168.图12是示意性地图示出了根据本发明实施方式的基于单端 rdma的读取tlp流程的流程图1200。与参考图11描述的写入tlp 示例一样,读取tlp流程由参考图10描述的服务
来实现。
180.前面描述的所有计算机、处理器、cpu等可以包括一个或多个通 用处理器,它们被用软件编程以执行本文描述的功能。例如,软件可 以以电子形式通过网络或从主机下载到处理器,或者它可以可替代地 或附加地被提供和/或被存储在非暂时性有形介质上,诸如磁、光、或 电子存储器。
181.尽管本文描述的实施方式主要解决通信网络上的tlp桥接,但是 本文描述的方法和系统也可以被使用在其他应用中,诸如在设备仿真 中。
182.因此应该领会,上述实施方式是作为示例引用的,并且本发明不 限于上文具体示出和描述的内容。相反,本发明的范围包括上文描述 的各种特征的组合和子组合,以及是现有技术的并且本领域技术人员 在阅读前述描述后会想到的并且未在本文中公开的变化和修改。
技术特征:
1.一种跨网络桥接装置,包括:用于连接到系统总线的总线接口;和桥接电路,所述桥接电路被配置为:在(i)在耦合到所述系统总线并由所述系统总线所服务的一个或多个本地设备与处于跨网络远离所述装置的一个或多个远程处理器之间进行交换的系统总线事务与(ii)传达所述系统总线事务的数据单元之间进行转换,以用于作为网络分组通过所述网络向所述远程处理器发射以及从所述远程处理器接收。2.根据权利要求1所述的装置,其中所述本地设备中的一个或多个包括图形处理单元(gpu)。3.根据权利要求1所述的装置,其中所述本地设备中的一个或多个包括存储设备,并且其中所述网络分组中的一个或多个包括nvme-over-fabrics(nvme-f)命令。4.根据权利要求1所述的装置,其中所述数据单元被格式化为所述网络分组,并且其中所述桥接电路被配置为向网络适配器发射所述网络分组以及从所述网络适配器接收所述网络分组。5.根据权利要求4所述的装置,其中所述桥接电路被配置为维护多个队列对(qp),每个qp被指派给相应本地系统总线设备和相应远程处理器之间的相应连接,并且通过调度所述多个qp来发射和接收所述网络分组。6.根据权利要求5所述的装置,其中所述桥接电路被配置为维护在所述qp中排队的多个工作队列元素,其中每个工作队列元素被配置为定义所述系统总线事务中的一个或多个。7.根据权利要求1所述的装置,其中所述桥接电路被配置为通过将所述系统总线事务中的两个或更多个合并在单个工作队列元素中来产生数据单元。8.根据权利要求1所述的装置,其中所述桥接电路被配置为将出站数据单元写入到存储器以作为网络分组通过所述网络发射,并且从所述存储器读取作为所述网络分组通过所述网络接收的入站数据单元。9.根据权利要求1所述的装置,其中在所述数据单元和所述系统总线事务之间进行转换时,所述桥接电路被配置为修改所述系统总线事务中的一个或多个系统总线事务的一个或多个属性。10.根据权利要求1所述的装置,其中所述系统总线包括快速外围组件互连(pcie)总线。11.根据权利要求1所述的装置,其中所述系统总线事务包括pcie事务层分组(tlp)。12.根据权利要求1所述的装置,其中所述系统总线包括计算快速链路(cxl)总线或nvlink总线。13.根据权利要求1所述的装置,其中所述数据单元包括第3层网络分组。14.根据权利要求1所述的装置,其中所述系统总线事务包括pcie事务,并且其中所述数据单元包括远程直接存储器访问(rdma)分组。15.根据权利要求1所述的装置,其中系统总线事务包括pcie事务,并且其中所述数据单元将作为send消息分组而被发射。16.根据权利要求1所述的装置,其中所述桥接电路被配置为识别所述系统总线事务中的一个或多个包括消息信号中断(msi-x),并且响应于所述识别,将包括所述msi-x的所述
系统总线事务转换为一个或多个rdma扩展可靠连接(xrc)消息。17.根据权利要求1所述的装置,其中所述桥接电路被配置为仅响应于识别给定系统总线事务匹配预定义标准而转换所述给定系统总线事务。18.根据权利要求1所述的装置,其中所述桥接电路被配置为仅响应于识别给定系统总线事务没有与本地系统总线地址交换而转换所述给定系统总线事务。19.根据权利要求1所述的装置,其中所述本地设备中的至少一个包括由所述系统总线所服务的物理设备。20.根据权利要求19所述的装置,其中所述本地设备中的一个或多个包括在所述物理设备中指派的虚拟化设备。21.根据权利要求1所述的装置,其中在所述数据单元和所述系统总线事务之间进行转换时,所述桥接电路被配置为在出现在所述数据单元中的网络地址和出现在所述系统总线事务中的对应设备地址之间进行转换。22.一种跨网络桥接装置,包括:用于连接到系统总线的总线接口;和桥接电路,所述桥接电路被配置为:在(i)在耦合到所述系统总线并由所述系统总线所服务的本地处理器与处于跨网络远离所述装置的一个或多个远程处理器之间进行交换的系统总线事务与(ii)传达所述系统总线事务的数据单元之间进行转换,以用于作为网络分组通过所述网络向所述远程设备发射以及从所述远程设备接收。23.根据权利要求22所述的装置,其中所述数据单元被格式化为所述网络分组,并且其中所述桥接电路被配置为向网络适配器发射以及从所述网络适配器接收所述网络分组。24.根据权利要求22所述的装置,其中所述桥接电路被配置为将出站数据单元写入到存储器以作为网络分组通过所述网络发射,并且从所述存储器读取作为所述网络分组通过所述网络接收的入站数据单元。25.一种远程系统总线分析装置,包括:包括系统总线的第一计算机;跨网络网桥(cnb),所述cnb被配置为将在所述系统总线上交换的系统总线事务转换为网络分组,并通过网络发射所述网络分组;和第二计算机,所述第二计算机被配置为通过所述网络从所述cnb接收所述网络分组,从接收到的所述网络分组中提取通过所述第一计算机的所述系统总线交换的所述系统总线事务,并分析所述系统总线事务。26.根据权利要求25所述的系统,其中所述系统总线包括快速外围组件互连(pcie)总线。27.一种跨网络桥接方法,包括:操作耦合到系统总线并由所述系统总线所服务的一个或多个本地设备;以及使用桥接电路,在(i)在所述一个或多个本地设备与处于跨网络的一个或多个远程处理器之间进行交换的系统总线事务与(ii)传达所述系统总线事务的数据单元之间进行转换,以用于作为网络分组通过所述网络向所述远程处理器发射以及从所述远程处理器接收。
28.根据权利要求27所述的方法,其中所述本地设备中的一个或多个包括图形处理单元(gpu)。29.根据权利要求27所述的方法,其中所述本地设备中的一个或多个包括存储设备,并且其中所述网络分组中的一个或多个包括nvme-over-fabrics(nvme-f)命令。30.根据权利要求27所述的方法,其中所述数据单元被格式化为所述网络分组,并且包括:向网络适配器发射和从所述网络适配器接收所述网络分组。31.根据权利要求30所述的方法,还包括维护多个队列对(qp),每个qp被指派给相应本地系统总线设备和相应远程处理器之间的相应连接,并且通过调度所述多个qp来发射和接收所述网络分组。32.根据权利要求31所述的方法,其中维护所述qp包括:维护在所述qp中排队的多个工作队列元素,其中每个工作队列元素被配置为定义所述系统总线事务中的一个或多个。33.根据权利要求27所述的方法,其中在所述系统总线事务和所述数据单元之间进行转换包括:通过将所述系统总线事务中的两个或更多个合并在单个工作队列元素中来产生数据单元。34.根据权利要求27所述的方法,并且包括:将出站数据单元写入到存储器以作为网络分组通过所述网络发射,并且从所述存储器读取作为所述网络分组通过所述网络接收的入站数据单元。35.根据权利要求27所述的方法,其中在所述数据单元和所述系统总线事务之间进行转换包括:修改所述系统总线事务中的一个或多个系统总线事务的一个或多个属性。36.根据权利要求27所述的方法,其中所述系统总线包括快速外围组件互连(pcie)总线。37.根据权利要求27所述的方法,其中所述系统总线事务包括pcie事务层分组(tlp)。38.根据权利要求27所述的方法,其中所述系统总线包括计算快速链路(cxl)总线或nvlink总线。39.根据权利要求27所述的方法,其中所述数据单元包括第3层网络分组。40.根据权利要求27所述的方法,其中所述系统总线事务包括pcie事务,并且其中所述数据单元包括远程直接存储器访问(rdma)分组。41.根据权利要求27所述的方法,其中系统总线事务包括pcie事务,并且其中所述数据单元将作为send消息分组而被发射。42.根据权利要求27所述的方法,其中在所述系统总线事务和所述数据单元之间进行转换包括:识别所述系统总线事务中的一个或多个包括消息信号中断(msi-x),并且响应于所述识别,将包括所述msi-x的所述系统总线事务转换为一个或多个rdma扩展可靠连接(xrc)消息。43.根据权利要求27所述的方法,其中在所述系统总线事务和所述数据单元之间进行转换包括:仅响应于识别给定系统总线事务匹配预定义标准而转换所述给定系统总线事务。44.根据权利要求27所述的方法,其中在所述系统总线事务和所述数据单元之间进行转换包括:仅响应于识别给定系统总线事务没有与本地系统总线地址交换而转换所述给定系统总线事务。
45.根据权利要求27所述的方法,其中所述本地设备中的至少一个包括由所述系统总线所服务的物理设备。46.根据权利要求45所述的方法,其中所述本地设备中的一个或多个包括在所述物理设备中指派的虚拟化设备。47.根据权利要求27所述的方法,其中在所述数据单元和所述系统总线事务之间进行转换包括:在出现在所述数据单元中的网络地址和出现在所述系统总线事务中的相应设备地址之间进行转换。48.一种跨网络桥接方法,包括:操作耦合到系统总线并由所述系统总线所服务的本地处理器;以及使用桥接电路在(i)在所述本地处理器和位于跨网络的一个或多个远程设备之间进行交换的系统总线事务与(ii)传达所述系统总线事务的数据单元之间进行转换,以用于作为网络分组通过所述网络向所述远程设备发射以及从所述远程设备接收。49.根据权利要求48所述的方法,其中所述数据单元被格式化为所述网络分组,并且包括:向网络适配器发射和从所述网络适配器接收所述网络分组。50.根据权利要求48所述的方法,其中并且包括:将出站数据单元写入到存储器以作为网络分组通过所述网络发射,并且从所述存储器读取作为所述网络分组通过所述网络接收的入站数据单元。51.一种远程系统总线分析方法,包括:使用跨网络网桥(cnb),将在第一计算机的系统总线上交换的系统总线事务转换为网络分组,并通过网络发射所述网络分组;以及在第二计算机中,通过所述网络从所述cnb接收所述网络分组,从接收到的所述网络分组中提取通过所述第一计算机的所述系统总线交换的所述系统总线事务,并分析所述系统总线事务。52.根据权利要求51所述的方法,其中所述系统总线包括快速外围组件互连(pcie)总线。
技术总结
一种跨网络桥接装置包括总线接口和桥接电路。总线接口被配置用于连接至系统总线。桥接电路被配置为在(i)在耦合到系统总线并由系统总线所服务的一个或多个本地设备与处于跨网络远离该装置的一个或多个远程处理器之间进行交换的系统总线事务与(ii)传达系统总线事务的数据单元之间进行转换,以用于作为网络分组通过网络向远程处理器发射以及从远程处理器接收。理器接收。理器接收。
技术研发人员:丹尼尔
受保护的技术使用者:迈络思科技有限公司
技术研发日:2021.09.03
技术公布日:2022/3/8