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

跨总线存储器映射的制作方法

2022-12-06 22:21:53 来源:中国专利 TAG:


1.本发明总体上涉及硬件存储设备,并且更具体地涉及联网硬件存储设备。


背景技术:

2.例如,通过使用linux tcp栈,单个操作系统内的零复制(zerocopy)是已知的。
3.pcie(外围组件互连高速)(也缩写为pci-e)是高速串行计算机扩展总线标准的示例,尤其在维基百科关于pci_express的条目中有所描述。
4.以下文章:lwn.net/articles/752188,在线可获得,描述了在(linux内核)4.14中添加的“启用数据的零复制传输(enables zero-copy transmission of data)”msg_zerocopy特征,增加了“零复制接收的实现将

必须映射

分组缓冲区到用户空间存储器中(implementation of zero-copy reception will

have to map

packet buffers into user-space memory)”。
5.和是已知的产品。
6.–
这些是下一代云smartnic和i/o处理单元(ipu)解决方案,针对任何工作负荷大规模地传递空前的数据中心安全性、性能和效率。继续mellanox在高性能云结构中的创新,dx和通过引入切边硬件加速引擎和类中最好的软件可编程性使关键任务应用程序不可能成为可能。对于超大规模、企业和电信环境,它们提供新的安全和效率水平,具有最高的投资回报(roi)。
7.dx smartnic提供多达25、50或100gb/s的两个端口或200gb/s的单个端口、由50gb/s pam4 serdes技术供电的以太网连接和pcie 4.0主机连接。所述dx硬件卸载引擎包括ipsec和内联tls动态数据密码术、高级网络虚拟化、融合以太网上rdma(roce)、以及结构上nvme(nvme-of)存储加速。
8.ipu在单个片上系统(soc)中将dx的所有高级能力与强大的arm处理器核心、高性能存储器接口以及灵活的处理能力的阵列集成。
9.这里在线描述了基于以太网或混合协议结构的数据中心的rdma:mellanox.com/sites/default/files/related-docs/whitepapers/roce_in_the_data_center.pdf。
10.维基百科陈述了:“在计算中,远程直接存储器访问(rdma)是从一个计算机的存储器到另一个计算机的存储器的直接存储器访问,而不涉及任何一个的操作系统。这允许高吞吐量、低等待时间联网,这在大规模并行计算机集群中尤其有用。rdma通过使网络适配器能够将数据从线直接传输到应用程序存储器或者从应用程序存储器直接传输到线来支持零复制联网,从而消除在应用程序存储器和操作系统中的数据缓冲区之间复制数据的需要。这样的传输不需要由cpu、高速缓存或上下文切换完成工作,并且传输与其他系统操作并行地继续。这减少了消息传输中的延迟。”11.然而,维基百科添加“该策略呈现与未将请求的完成通知给目标节点的事实相关
的若干问题(单侧通信)”。
12.在此尤其描述了数据中心中的联网卸载的使用:mellanox.com/files/doc-2020/sb-melanox-nvme-snap.pdf。
[0013]“套接字”典型地包括在网络上运行的第一和第二程序之间的双向通信链路的端点(典型地,ip地址和端口号)。套接字可以绑定到使tcp层能够识别数据将被发送的应用程序的端口号。
[0014]
nvme/tcp是块存储协议的示例。nvme是示例协议,然而,本文中对其的引用不是旨在限制性的,并且更一般地,可以替代地采用任何适当的本地或pci存储协议。
[0015]
传输控制协议/互联网协议(tcp/ip)是可以被多个计算机用来在它们自身之间通信的联网协议的示例。


技术实现要素:

[0016]
某些实施例设法减少存储分级缓冲区副本。
[0017]
某些实施例寻求提供单个设备(例如.卡)暴露于多个pcie总线,其中软件被配置为从一个pcie总线映射存储器,以由不同的pcie总线访问,例如,使用跨pcie映射和/或事务。存储器密钥可以用于描述缓冲区(存储器);密钥可以被定义为表示例如跨pcie(gvmi)映射,如本文所描述的。然而,在pcie ntb(非透明桥)实施例中,不需要提供存储器密钥。相反,传统rdma通过具有定义

rdma连接’的一对hw设备(卡或其他)来跨pcie边界。每个设备可仅处理本地pcie缓冲区,但rdma连接可在这些设备之间传送缓冲区。
[0018]
某些实施例设法提供跨总线存储器映射。
[0019]
更一般地,某些实施例设法改善iops(每秒io操作)和/或减少延迟。
[0020]
本发明的范围尤其包括以下实施例:
[0021]
实施例1.一种计算机化的系统,用于主机与第二操作系统之间的有效交互,所述主机具有第一操作系统,所述系统包括:
[0022]
子系统,例如在所述第二操作系统上,所述子系统通常直接从所述主机本地的缓冲区提取数据,其中所述系统可操作用于将存储器从可以与所述第一操作系统相关联的一个总线映射到可以与所述第二操作系统相关联的不同总线,并且通常从所述不同总线访问所述存储器,从而例如通过跨总线存储器映射来仿真所述第一操作系统与所述第二操作系统之间的连接。
[0023]
实施例2.根据任一前述实施例所述的系统,其中所述第一操作系统具有到所述第二操作系统的包括多个层的pci型连接。
[0024]
实施例3.根据任一前述实施例所述的系统,其中所述子系统包括网络栈。
[0025]
实施例4.根据任一前述实施例所述的系统,其中所述网络栈被配置为识别在所述第二操作系统自身的存储器外部的缓冲区,所述缓冲区允许所述第二操作系统上的软件从所述第一操作系统访问所述缓冲区。
[0026]
实施例5.根据任一前述实施例所述的系统,其中所述主机本地的所述缓冲区驻留在所述主机上。
[0027]
实施例6.根据任一前述实施例所述的系统,其中所述系统还包括在所述主机上的应用程序,所述应用程序:
[0028]
打开仿真nvme上的存储体,从而提供打开的文件;
[0029]
在本地存储器中分配存储器块,并将称为缓冲区b的数据写入所述存储器块中;
[0030]
写入所述打开的文件,从而定义写入调用;以及
[0031]
提供内核驱动程序,所述内核驱动程序处理所述写入调用并用所述缓冲区b准备nvme封装体。
[0032]
实施例7.根据任一前述实施例所述的系统,其中所述系统包括nvme仿真软件和tcp软件栈,所述nvme仿真软件和tcp软件栈协作以通过允许跨设备存储器密钥传递通过多个软件层来提供跨总线映射,从而允许所述第二操作系统上的软件从所述第一操作系统访问所述主机本地的缓冲区。
[0033]
实施例8.根据任一前述实施例所述的系统,其中所述第一操作系统还被配置为控制操作,从而允许所述跨设备存储器密钥传递通过所述多个软件层,其中所述操作包括:
[0034]
操作25.主机的nvme驱动程序c将指向缓冲区b的请求发布至经由dpu管理的nvme仿真设备d,并且nvme仿真设备d将(d所仿真的)nvme设备暴露给所述主机;
[0035]
操作30.nvme仿真设备d向dpu上的nvme仿真设备d的管理器e给出nvme请求就绪并且管理器e将nvme请求的副本获取到管理器e的本地存储器的通知;
[0036]
操作35.管理器e例如通过访问管理器e的本地存储器上的所述nvme请求的副本来理解所述nvme请求引用缓冲区b,所述缓冲区b作为客户端主机存储器的一部分,具有不同pcie总线或功能的;
[0037]
操作40.管理器e在所述dpu上运行的nvme-tcp启动器驱动程序f上启动具有执行新请求的属性的该新请求,并且所述新请求或其属性包括本地请求信息和远程的缓冲区(b)的内容;
[0038]
操作50.nvme-tcp启动器驱动程序f经由在所述dpu上的tcp用户空间栈g保持连接至目标的tcp套接字;
[0039]
操作53.nvme-tcp启动器驱动程序f向vma tcp用户空间栈g传递所述dpu本地存储器中的所述请求的nvme-tcp格式化报头,并且所述报头经由bsd发送api从f传递至g;
[0040]
操作57.nvme-tcp启动器驱动程序f向vma tcp用户空间栈g传递缓冲区b的内容,并且缓冲区b的内容经由扩展发送api从g传递至g;
[0041]
操作60.tcp用户空间栈g管理tcp栈和hw发送队列,以向本地pcie功能总线发送所述dpu存储器流部分和所述主机存储器流部分,而不复制缓冲区b或一个或更多个所述存储器流部分;
[0042]
操作70.nvme-tcp启动器驱动程序f从所述目标获取关于发送的所述nvme-tcp请求的nvme-tcp响应;
[0043]
操作75.响应地,nvme-tcp启动器驱动程序f释放缓冲区b作为tcp用户空间栈g中的被确认的相关tcp流部分。
[0044]
实施例9.根据任一前述实施例所述的系统,其中所述存储器密钥包括rdma密钥。
[0045]
实施例10.根据任一前述实施例所述的系统,其中所述存储器密钥包括dma密钥。
[0046]
实施例11.一种用于主机与远程目标之间的有效交互的方法,所述方法包括:
[0047]
提供具有第一操作系统的主机和具有第二操作系统的远程目标,所述第二操作系统具有与所述第一操作系统的pci型连接;以及
[0048]
与所述远程目标共享驻留在所述主机上的至少一个缓冲区,包括为所述目标提供对所述至少一个缓冲区的零复制访问,从而提供跨多个操作系统的双零复制。
[0049]
实施例12.根据任一前述实施例所述的方法,其中所述主机和目标中的至少一个使用非透明桥(ntb)用于通过pcie接口的域间通信。
[0050]
实施例13.根据任一前述实施例所述的方法,其中包括arm处理器核心的阵列的i/o处理单元(ipu)被部署在所述主机与网络之间,并且其中在所述arm处理器核心上的snap tcp存储使用至少一个xgvmi存储器密钥零复制来自所述主机的pcie访问。
[0051]
实施例14.根据任一前述实施例所述的方法,并且其中第一复制操作从所述主机至所述ipu发生,并且第二复制从cpu存储器至tcp栈发生。
[0052]
实施例15.根据任一前述实施例所述的方法,并且其中所述方法包括以下操作,从而通过减少存储分级缓冲区副本来增加ipos和/或减少延迟和/或减少cpu利用率:
[0053]
操作10.客户端主机上的应用程序在所述主机的本地存储器上准备远程数据缓冲区b;
[0054]
操作15.所述主机应用程序请求所述客户端主机上的nvme驱动程序c将远程缓冲区b写入存储体;
[0055]
操作20.所述客户端主机上的所述nvme驱动程序c准备指向缓冲区b的nvme请求;
[0056]
操作25.所述主机的nvme驱动程序c将指向缓冲区b的所述请求发布至经由所述dpu管理的nvme仿真设备d,并且nvme仿真设备d将nvme设备暴露于所述客户端主机,其中所述nvme仿真设备d仿真所述nvme设备;
[0057]
操作30.nvme仿真设备d向dpu上的nvme仿真设备d的管理器e通知nvme请求已准备好,并且管理器e将所述nvme请求的副本获取到管理器e的本地存储器;
[0058]
操作35.管理器e理解所述nvme请求引用缓冲区b,所述缓冲区b是所述客户端主机存储器的一部分,因此具有不同的pcie总线或功能;
[0059]
操作40.管理器e在所述dpu上运行的nvme-tcp启动器驱动程序f上启动具有执行新请求的属性的该新请求,并且所述新请求或其属性包括本地请求信息和所述远程数据缓冲区b的内容;
[0060]
操作50.nvme-tcp启动器驱动程序f在所述dpu上保持经由vma tcp用户空间栈g连接至目标的tcp套接字;
[0061]
操作53.nvme-tcp启动器驱动程序f向vma tcp用户空间栈g传递在所述dpu本地存储器中的所述请求的所述nvme-tcp格式化报头,并且所述报头可经由bsd发送()(send())api从nvme-tcp启动器驱动程序f传递至vma tcp用户空间栈g;
[0062]
操作57.nvme-tcp启动器驱动程序f向vma tcp用户空间栈g传递缓冲区b的内容,并且缓冲区b的内容经由扩展发送api从nvme-tcp启动器驱动程序f传递至vma tcp用户空间栈g;
[0063]
操作60.tcp用户空间栈g管理tcp栈和hw发送队列,以向本地pcie功能总线发送所述dpu存储器流部分和主机存储器流部分,而不复制缓冲区b或一个或更多个所述存储器流部分;
[0064]
操作70.nvme-tcp启动器驱动程序f从所述目标获取关于发送的所述nvme-tcp请求的nvme-tcp响应;以及
[0065]
操作75.响应地,nvme-tcp启动器驱动程序f释放缓冲区b作为在vma tcp用户空间栈g中的经确认的相关tcp流部分。
[0066]
实施例16.根据任一前述实施例所述的方法,其中所述ipu包括vma,并且其中网络栈除了使用指针之外还使用存储器密钥识别存储要通过所述网络发送的数据的缓冲区。
[0067]
实施例17.根据任一前述实施例所述的方法,其中所述网络栈直接从驻留在处于不同pcie域中的所述主机上的所述缓冲区提取将通过所述网络发送的数据。
[0068]
实施例18.根据任一前述实施例所述的方法,其中所述远程目标经由所述主机不知道的网络被联网至所述主机。
[0069]
实施例19.根据任一前述实施例所述的系统,其中ntb(非透明桥)用于允许所述第二操作系统上的软件从所述第一操作系统访问所述主机本地的缓冲区。
[0070]
实施例20.根据任一前述实施例所述的系统,其中所述ntb(非透明桥)由所述第二操作系统上的vma使用。
[0071]
实施例21.根据任一前述实施例所述的系统,其中所述网络栈被配置为使用存储器密钥而不是指针来识别所述缓冲区。
[0072]
实施例22.根据任一前述实施例所述的系统,其中nvme-tcp启动器驱动程序将所述缓冲区的内容传递至所述网络栈中的tcp用户空间栈。
[0073]
实施例23.根据任一前述实施例所述的系统,其中所述第二操作系统包括多个arm cpu。
[0074]
实施例24.根据任一前述实施例所述的系统,其中基于arm的nvme-tcp仿真软件将所述缓冲区传递至vma中的tcp套接字。
[0075]
实施例25.根据任一前述实施例所述的系统,并且其中所述第二操作系统直接从驻留在处于不同pcie域中的所述主机上的缓冲区提取将通过网络发送的数据。
[0076]
实施例26.根据任一前述实施例所述的系统,其中所述网络栈包括vma。
附图说明
[0077]
图1是示出根据本发明的实施例提供的用于跨总线存储器映射的系统的简化框图。
[0078]
图2至图5是可用于创建存储器密钥的表。
具体实施方式
[0079]
如在此所使用的术语“存储器密钥”(mkey)旨在包括具有指针的上下文,并且还具有附加属性,例如,指针的附加属性,其描述以下中的至少一个:如何访问存储器指针(例如,读、写、原子、全部)、哪个或哪些实体可以访问指针(例如,保护密钥)、可以进行什么转换以提供虚拟到物理映射、以及跨gvmi信息,如本文所描述的。
[0080]
可以理解,指针在计算机编程领域中是已知的,例如,如在维基百科的“指针_(计算机_编程)(pointer_(computer_programming))”上的条目中所描述的,并且cpu(和其他外围设备)可以在存储器空间中处理数据(如果它们在寄存器中或者由指针指向的话)。例
如在mellanox.com/related-docs/prod_software/mellanox_ofed_linux_user_manual_v4_3.pdf中描述了存储器密钥。
[0081]
mkey及其创建描述于例如9ellanox.com/related-docs/user_manuals/ethernet_adapters_programming_manual.pdf中。例如,该手册中描述的create_mkey命令生成新的mkey。新mkey对象的上下文可以从输入邮箱获取。通常,硬件提供mkey索引作为输出参数。当访问这个对象时,这个索引可以被软件用作句柄。
[0082]
vhca是虚拟主机通道适配器。vhca和vhca id尤其在共同拥有的美国专利us 9397960b2中描述,其公开内容通过引用并入本文。在该cisco专利:https://patents.google.com/patent/us20080123672中描述了多上下文单逻辑虚拟主机通道适配器,其公开内容通过引用并入本文。已知具有多个虚拟功能(vf),每个虚拟功能将自身作为独立的vhca呈现给主机,而不知道vhca的网络仅可观察到单个hca。用于在多个vhca之间共享相同物理端口的方法是已知的,并且例如在download.lenovo.com/servers/mig/2020/05/28/21936/mlnx-lnvgy_dd_nic_cx.ib-5.0-2.1.8.0-0_rhe17_x86-64.pdf(第284页)中描述。
[0083]
术语“gvmi”(又称为访客虚拟机标识符(gvmi))通常表示硬件结构;gvmi通常是虚拟机的访客操作系统的名称。示例gvmi是vhca_id(又名“vhca id”)或vhca标识符。
[0084]
术语“跨gmvi mkey”是指存在于例如x6dx中的硬件结构,其描述于以下www链接:nvidia.com/en-us/networking/ethernet/mellano-6-dx。术语xgvmi、跨gvmi和跨域gvmi在本文中通常可互换使用。可以理解,网络适配器,如x6dx,具有支持跨gvmi mkey的hw部分,结合在内部核心上运行的固件来操作。该固件通常暴露由编程者参考手册(又名prm)记录的受保护的命令接口,该编程者参考手册在此处可用:mellanox.com/related-docs/user_manuals/ethernet_adapters_programming_manual.pdf。
[0085]
然而,应当理解,可使用任何合适的以太网网络适配器驱动程序,其支持所描述的跨gvmi mkey。该固件的代码可采取命令并将该命令映射到hw配置中。这仅是示例实现,其在保持命令相同方面提供灵活性,即使在新硬件版本出来时也是如此。在由以上固件实现的设备api中,这可以被展示为:“create_mkey with access_mode=0x6:crossing_vhca_mkey”。
[0086]
图1示出了根据本发明实施例的用于跨总线存储器映射的系统,该系统通常促进nvme-tcp加速上的存储nvme仿真。图1的系统通常包括以下的全部或任何合适的子集:
[0087]
在主机(又名客户端主机)上的客户端应用程序(又名“性能应用程序”或“perf”)。要理解的是,在图1中的主机操作系统上驻留的软件通常控制下文中描述的操作10-75;
[0088]
dpu(例如,)
[0089]
客户端主机上的nvme驱动程序(也称为主机的nvme驱动程序c);
[0090]
在所述dpu上运行的nvme-tcp启动器驱动程序f;
[0091]
dpu上的vma tcp用户空间栈g;
[0092]
vhca;
[0093]
gvmi a和b,通常在硬件中实现,其中任一者或两者可由vhca替代;通常,gvmi a被
定义为网络设备。通常,gvmi b包括nvme仿真(pcie,例如)设备,其将nvme设备暴露给客户端主机,并经由dpu来管理;
[0094]
第二操作系统上的软件(例如,),用于从所述第一操作系统访问主机本地的缓冲区;
[0095]
vma中的tcp套接字;以及
[0096]
nvme-tcp仿真软件,其将缓冲区b传递至vma tcp套接字,其可在上实现或作为实现。
[0097]
跨gvmi存储器密钥(又名跨gvmi-mkey)被配置成用于从一个gvmi(例如gvmi a)获取缓冲区,并在另一侧使用与第2个gvmi(例如gvmi b)相同的缓冲区。
[0098]
dpu是数据处理器的一个可能的示例,数据处理器通常是片上系统,也称为soc,其通常包括:
[0099]
软件可编程的多核心cpu,其可以具有arm架构,通常耦合到其他soc组件,和/或
[0100]
高性能网络接口,用于以网络的剩余部分的速度(又名线路速率)解析、处理并传送数据至例如gpu和/或cpu;和/或
[0101]
可编程加速引擎,其卸载应用程序(例如,ai)和/或机器学习和/或安全和/或电信和/或存储,从而改善应用程序的性能。
[0102]
应当理解,本文中的某些实施例有利于减少由来自主机(例如x86)存储器的nvme有效载荷至从dpu cpu核心nvme仿真软件(例如,)管理的tcp分组有效载荷的复制开销引起的等待时间和cpu使用。
[0103]
通常,nvme仿真软件(例如,)配置所述网络接口卡(nic)硬件以发送至少一个nvme-tcp分组,使得所述tcp报头从所述本地dpu存储器收集,而所述tcp有效载荷从远程pcie总线上的所述主机(x86)存储器直接收集。由此,排除或跳过多达两个跳过副本和分级缓冲区。
[0104]
某些实施例的特定优点是网络接口卡(nic)硬件通常从跨多个pcie总线扩展的多个存储器地址收集单个分组。软件用于从它们各自的pcie总线转换和/或映射和/或管理这些存储器地址,并且硬件被相应地配置以发送这样的分组。
[0105]
i/o处理单元(ipu)是片上系统(soc),其包括smartnic,例如,dx,arm处理器核心阵列,高性能存储器接口,以及灵活的处理能力。smartnic可以包括硬件卸载引擎,其具有ipsec和内联tls运动中数据密码术、和/或网络虚拟化、和/或聚合以太网上rdma(roce)、和/或结构上nvme(nvme-of)存储加速,例如如在:mellanox.com/news/press_release/mellanox-introduces-revolutionary-connectx-6-dx-and-bluefield-2-secure-cloud-smartnics-and-io中在线描述的。arm处理器是基于高级risc机器(arm)的risc(精简指令集计算机)架构的cpu,例如如在:whatis.techtarget.com/definition/arm-processor#:~:text=an%20arm%20processor%20is%20one,bit%20risc%20multi%2dcore%20processors中在线描述的。
[0106]
图1的系统可以结合已知的技术使用,例如和/或vma和/或tcp套接字和/
或libibverbs和/或但这些并非旨在限制。例如,图1中的第二操作系统可以包括如本文中所描述的多个arm cpu、arm处理器核心的阵列(诸如ipu,又名(arm)),或者可替代地,可以根本不是基于arm的,并且可以替代地可以说,是x86或者可以基于任何其他适当的cpu架构。mellanox nvme(软件定义的网络加速处理)是例如通过将块存储设备仿真到主机来实现nvme存储的硬件加速虚拟化的框架或技术的示例。例如,pcie总线上的nvme驱动程序可被仿真,从而使得联网存储看起来像本地nvme ssd。主机os/管理程序(hypervisor)可利用其标准nvme驱动程序,其不知道通信由nvme而不是由物理驱动程序终止。然后,可经由nvme向数据应用逻辑并通过网络传输至存储目标,例如,在以太网或无限带宽协议上。可替代地,可以采用实现硬件中存储器储虚拟化和/或实现用于capex和opex节省的存储资源的优化和/或被配置为通过卸载联网和存储数据路径两者来释放计算机节点cpu资源并且优选地实现基于任何网络协议的集成到任何存储解决方案中的任何其他合适的技术。
[0107]
关于[副本#2],应当意识到,该在线链接:kernel.org/doc/html/v4.15/networking/msg_zerocopy.html”提供零复制标记的linux套接字定义。tcp栈实施(vma)可添加对具有msg_zerocopy标记的发送的支持。具有msg_zercoopy标记的send()调用的实现可以使用应用缓冲区指针作为参考,而不将其复制到中间缓冲区中。tcp栈可管理用于发送tcp分组的参考缓冲区指针,并且一旦接收到覆盖整个发送缓冲区大小的tcp ack,tcp栈可仅释放缓冲区上的参考。tcp套接字所有者(spdk启动器)可在由tcp栈实施(vma)支持时调用具有msg_zerocopy的发送。具有msg_zercoopy的send()的调用者的实现可以将发送的缓冲区放在一边,直到接收到tcp栈完成发送的指示,并且接收到确认。
[0108]
关于[副本#1],其可以包括zerocopy(例如,主机->),可以将api添加到tcp栈(例如,vma)以提供跨gvmi mkey,使得vma可以稍后检测标记的物理地址(又名“pa”)作为主机存储器,并且可以将此跨域gmvi存储器密钥用于收集在hw中的pcie。准备跨gvmi mkey的可以在tcp套接字初始化中将跨gvmi mkey传递给vma。可以通过适当地标记外部主机缓冲区指针来完成将tcp缓冲区发信令为可能需要与(比如)vma之间的跨gvmi mkey的“外部主机存储器”。例如,可相应地设置物理地址的msb。可以在(比如)vma中添加逻辑以检测标记的pa作为主机外部存储器缓冲区,并且可以使用跨gmvi vma来设置mkey)至具有跨gvmi mkey的原始qp(sq/tis)上的具有数据缓冲区sge的硬件。
[0109]
为了简单起见,本说明书通过举例的方式引用snap
tm
。然而,这样的引用不旨在限制性的,并且更一般地,可以采用通过向主机暴露存储pcie设备接口(或使主机能够访问存储pcie设备)来向主机仿真nvme(或空白-blk)存储pcie设备的任何存储设备仿真器(例如,smartnic服务)。
[0110]
提供以下操作方法,单独地或与图1的系统结合,或更一般地与以下各项的全部或任何子集结合:
[0111]
a.客户端主机上的应用程序(又名主机应用程序a)
[0112]
b.客户端主机存储器上的数据缓冲区(又名缓冲区b)
[0113]
c.客户端主机上的nvme驱动程序(又名主机的nvme驱动程序c)
[0114]
d.nvme仿真设备(将nvme设备暴露给客户端主机,并且经由dpu管理)
[0115]
e.在dpu上的nvme仿真设备管理器,例如
[0116]
f.nvme-tcp启动器驱动程序f,运行在比如dpu上
[0117]
g.vma(比如)tcp用户空间栈g,其可以在dpu上。
[0118]
该方法通常包括适当排序的以下操作的全部或任何子集,例如,如下:
[0119]
操作10.客户端主机上的应用程序在主机的本地存储器上准备远程数据缓冲区b;
[0120]
操作15.所述主机应用程序请求所述客户端主机上的nvme驱动程序c将远程缓冲区b写入存储体;
[0121]
操作20.主机的nvme驱动程序c准备指向缓冲区b的nvme请求;
[0122]
操作25.主机的nvme驱动程序c将指向缓冲区b的请求发布至经由dpu管理的nvme仿真设备d,并且nvme仿真设备d将nvme设备暴露至客户端主机,该nvme仿真设备d仿真该nvme设备;
[0123]
操作30.nvme仿真设备d向dpu上的nvme仿真设备d的管理器e给出nvme请求就绪并且管理器e将nvme请求的副本获取到管理器e的本地存储器的通知;
[0124]
操作35.管理器e例如通过访问管理器e的本地存储器上的所述nvme请求的副本来理解nvme请求引用缓冲区b,该缓冲区b作为客户端主机存储器的一部分,从而具有不同的pcie总线或功能;
[0125]
操作40.管理器e在dpu上运行的nvme-tcp启动器驱动程序f上启动具有执行新请求的属性的该新请求,该新请求或其属性包括本地请求信息和远程数据缓冲区b的内容;
[0126]
操作50.nvme-tcp启动器驱动程序f经由dpu上的vma(比如)tcp用户空间栈g保持连接至目标的tcp套接字;
[0127]
操作53.nvme-tcp启动器驱动程序f将dpu本地存储器中的该请求的nvme-tcp格式化报头传递给vma tcp用户空间栈g,该报头可以经由bsd send()api从nvme-tcp启动器驱动程序f传递给vma tcp用户空间栈g;
[0128]
操作57.nvme-tcp启动器驱动程序f将缓冲区b的内容传递至vma tcp用户空间栈g。缓冲区b的内容可经由扩展发送api从nvme-tcp启动器驱动程序f传递至vma tcp用户空间栈g;因此,vma变得能够使用存储器密钥而不是指针id(识别)缓冲区。
[0129]
操作60.vma tcp用户空间栈g管理tcp栈和hw发送队列,以向本地pcie功能总线发送dpu存储器流部分和主机存储器流部分,而不复制缓冲区b或存储器流部分;
[0130]
操作70.nvme-tcp启动器驱动程序f从所述目标获取关于发送的nvme-tcp请求的nvme-tcp响应;以及
[0131]
操作75.响应地,nvme-tcp启动器驱动程序f释放缓冲区b作为vma tcp用户空间栈g中的经确认(ack)的相关tcp流部分。
[0132]
相对于本文仅通过示例的方式描述的特定实施例,许多变化是可能的。仅给出几个示例:
[0133]
在此的系统和方法可以结合到任何适合的系统中,例如像snap、nvidia mellanox
或vma。然而,应当理解,vma的使用仅是一个可能的实施例。vma是一个可能的tcp/ip栈解决方案,但是可替代地,在非vma解决方案中,可提供tcp/ip栈,tcp/ip栈被修改,例如如本文所述,处理跨gvmi mkey。应当认识到,vma(或者mellanox消息加速器(mellanox messaging accelerator))是网络栈的示例;其他示例包括但不限于linux tcp栈、mtcp、seastar以及在线描述的其他网络栈,例如在dpdk的生态系统页面上,该页面在以下链接处可在线获得:dpdk.org/ecosystem/。
[0134]
此外,本发明不专用于pci类型的连接(例如,专用于pci或pcie连接),并且可以扩展到除pci和pcie之外的总线。
[0135]
此外,可以采用任何适当的方法来创建存储器密钥。例如,图2、图3、图4、图5表示的表226-229在mellanox.com/related-docs/user_manuals/ethernet_adapters_programming_manual.pdf中。这些分别表示示例create_mkey输入结构布局(图2)、示例create_mkey输入结构字段描述(图3)、示例create_mkey输出结构布局(图4)和示例create_mkey输出结构字段描述(图5)。
[0136]
而且,基于ntb(非透明桥)的方法可以取代跨域gvmi存储器密钥(又名“跨gvmi mkey”)的使用,如在此描述的,例如通过提供被配置成允许vma使用ntb(例如,如在跨gvmi mkey解决方案中)来允许第二操作系统上的软件(例如)从第一操作系统访问主机本地的缓冲区的软件。
[0137]
此外,如所描述的,根据某些实施例,vma直接从驻留在处于不同pci或pcie域中的主机上的缓冲区提取将通过网络发送的数据。可以采用任何适当的实现方式来使vma这样做。对于存储相关的解决方案,主机上的应用程序可执行以下的所有或任何合适的子集:
[0138]
阶段a.打开仿真nvme上的存储体(例如:打开(“路径”));和/或
[0139]
阶段b.分配本地存储器(例如:malloc())并且将其数据写入所分配的存储器块[例如,如在此参照操作10所描述的];和/或
[0140]
阶段c.write()至打开的文件[例如,如在此参照操作15所描述的];和/或
[0141]
阶段d.内核驱动程序可处理write()调用,且可准备具有缓冲区b的nvme封装体,通常来自阶段b,例如,如本文参考操作20所描述的。
[0142]
如本文中所使用的,术语不透明是与“透明的”的连接相反。例如,pcie ntb(非透明桥)可以用于提供多个cpu、gpu和fpga之间的连接。当使用pcie(透明)桥时,所有pcie总线(一直到所有端点)对给定根复合体(root complex)可见。相反,非透明桥在独立的pcie总线和每个根复合体rc之间转发pcie流量,将ntb(非透明桥)看作端点设备,而根复合体和桥另一侧的设备对于rc是不可见的,例如,如在以下在线位置处所描述的:missinglinkelectronics.com/devzone/index.php/fpga-debug-ntb。
[0143]
vma(voltaire消息传递加速器(voltaire messaging accelerator))是一种示例数据加速技术。nvidia的vma(作为开放源发布)增强了跨广泛行业(例如,高频交易(hft)平台和web 2.0集群)的基于消息的和流式应用程序的性能。vma暴露具有内核旁路架构的标准套接字api,从而实现用于多播、udp单播和tcp流式传输的用户空间联网。vma可以在盒外使用,例如,由于内置的预先配置的简档,例如,用于延迟和流式传输。vma在以下在线位置进行描述:docs.mellanox.com/category/vma和docs.mellanox.com/display/vmav911/
introduction to vma;应理解的是,其他加速技术可以包括vma提供的特征、特性和功能的子集。
[0144]
在本说明书中提及的所有出版物和专利文献的公开内容,以及在其中直接或间接引用的出版物和专利文献的公开内容,通过引用的方式并入本文,除了主题放弃或否认。
[0145]
应当理解,如果需要,本发明的软件组件可以以rom(只读存储器)形式实现。如果需要,软件组件通常可以使用常规技术在固件或硬件中实现。还应当理解,软件组件可被实例化,例如:作为计算机程序产品,或在有形介质上。在一些情况下,有可能将软件组件实例化为可由适当的计算机解释的信号,尽管在本发明的某些实施例中可以排除这种实例化。
[0146]
应当理解,为了清楚起见,在单独实施例的上下文中描述的本发明的各种特征也可在单个实施例中以组合的方式提供。相反,为了简洁起见,在单个实施例的上下文中描述的本发明的各种特征也可单独地提供,或以任何合适的子组合提供。
[0147]
本领域技术人员应当理解,本发明不受在上文中具体示出和描述的限制。相反,本发明的范围由所附权利要求及其等同物限定。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献