CN115113973A - 可配置设备接口 - Google Patents

可配置设备接口 Download PDF

Info

Publication number
CN115113973A
CN115113973A CN202210162744.8A CN202210162744A CN115113973A CN 115113973 A CN115113973 A CN 115113973A CN 202210162744 A CN202210162744 A CN 202210162744A CN 115113973 A CN115113973 A CN 115113973A
Authority
CN
China
Prior art keywords
descriptor
format
virtual
nic
access
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210162744.8A
Other languages
English (en)
Inventor
P·G·酷奇
A·齐立钦
J·于
C·梁
C·刘
Z·杨
G·曹
X·刘
Z·闻
Z·陈
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN115113973A publication Critical patent/CN115113973A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • G06F13/4072Drivers or receivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17312Routing techniques specific to parallel machines, e.g. wormhole, store and forward, shortest path problem congestion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请公开了可配置设备接口。本文中所描述的示例涉及一种装置,该装置包括驱动器可访问的描述符格式变换器。在一些示例中,驱动器和描述符格式变换器共享对传送和接收描述符的访问。在一些示例中,基于与设备相关联的描述符的格式不同于与驱动器相关联的描述符的第二格式,描述符格式变换器用于:执行描述符从该格式到第二格式的变换并存储按第二格式的经变换的描述符以供设备进行访问。在一些示例中,设备用于访问经变换的描述符;设备用于将经变换的描述符的内容修改为标识至少一个工作请求;并且描述符格式变换器用于将已修改的经变换的描述符变换为该格式并存储经变换的已修改的经变换的描述符以供驱动器进行访问。

Description

可配置设备接口
描述
图1描绘了宾客系统与网络接口控制器(NIC)之间的分组和描述符复制的已知方式的示例。虚拟功能(VF)驱动器(VDEV驱动器)104为用于分组接收(Rx)和传送(Tx)活动两者的分组缓冲区和描述符分配存储器。描述符包含指向已经在其中分配分组缓冲区的存储器区域的指针。VF驱动器104利用这些描述符地址对NIC 120的VF接口(例如,VF可分派设备接口(ADI)或虚拟站接口(VSI))进行编程。
当分组被接收时,NIC 120通过直接存储器访问(DMA)将该分组复制到下一Rx描述符中标识的存储器位置并更新Rx描述符,这进而向VF驱动器104通知数据已经准备好被处理。对于分组传送,在VF驱动器104具有含要传送的数据的缓冲区之后,VF驱动器104完成Tx描述符,并且NIC 120将该描述符标识为已经被更新的并发起从缓冲区到NIC 120的DMA传输。NIC 120传送分组并写回至Tx描述符,并且向VF驱动器104提供分组已经被传送的通知。
存在具有各种能力和功能的多个NIC供应商。不同的NIC可以支持不同的描述符格式。然而,由于改变或更新的NIC,诸如防火墙供应商之类的开发者或者虚拟网络功能(VNF)开发者面临挑战,这来自于为了解决潜在的驱动器不兼容或接口技术(例如,virtio-net、
Figure BDA0003514661780000011
以太网自适应虚拟功能)的改变以维持对最新一代的NIC的使用而进行的产品的反复更新和重新验证。对内核固件或驱动器的更新可能导致与VF驱动器(例如,内核和/或轮询模式驱动器(PMD))不兼容以及与NIC不兼容。单根I/O虚拟化(SR-IOV)(在本文中描述)允许NIC向虚拟机提供对该NIC资源的单独访问。如果NIC供应商仅保证特定的SR-IOV VF驱动器将与特定的实体功能(PF)驱动器一起工作,则不保证虚拟机(VM)中的VF驱动器将继续按预期工作,并且测试、重新验证或驱动器修改可能被需要。
现代工作负荷和数据中心设计可能在CPU核上施加联网开销。由于更快的联网(例如,每链路25/50/100/200Gb/s或其他速度),CPU核执行对网络通信量的分类、跟踪和定向。可以由CPU使用智能NIC(SmartNIC)将复杂的Open vSwitch(开放式虚拟交换机,OVS)或网络存储相关操作迁移至智能NIC的FPGA或SOC。对设备的接口(诸如virtio)可以由虚拟机(VM)使用、由容器使用、或者在裸机场景中使用。对于virtio的描述,参见“虚拟I/O设备(VIRTIO)版本1.1”,委员会规范草案01/公共审阅草案01(2018年12月20日)及其变型、修订、早期版本或后期版本。
Figure BDA0003514661780000021
可缩放IOV(S-IOV)和单根I/O虚拟化(SR-IOV)可使用隔离的共享实体功能(PF)资源和多个虚拟功能(VF)及对应的驱动器向设备提供虚拟机和容器访问。对于SR-IOV的描述,参见单根I/O虚拟化和共享规范修订版(2010年)及其变型、早期版本或对其的更新。对于SIOV的描述,参见
Figure BDA0003514661780000022
可缩放I/O虚拟化技术规范(2018年6月)。
通过使用S-IOV来访问设备,虚拟机和容器访问对虚拟设备(vdev)进行仿真的软件仿真层,并且vdev可访问设备的输入输出(IO)队列。对于S-IOV,vdev与可分派设备接口(ADI)相对应,该可分派设备接口(ADI)具有其自身的存储器映射的I/O(MMIO)空间和IO队列。SR-IOV PF提供发现、管理和配置为快速外围组件互连(PCIe)设备。PCIe在快速外围组件互连(PCI)基本规范1.0(2002年)及其早期版本、后期版本和变型中作为示例进行描述。VF允许对设备的控制,并且是从实体功能导出的。利用SR-IOV,VF具有其自身的独立配置空间、基址寄存器(BAR)空间和输入输出(IO)队列。
VF(SR-IOV)或ADI(S-IOV)可以以通行方式(全通行或中介通行方式)被分派至容器,这提供了与实体设备实例相关联的一个虚拟设备(例如,VF或ADI)。SR-IOV可以提供128-256个VF,而S-IOV可以提供数千个ADI。然而,容器部署的数量可能超过可用VF的数量。换言之,虚拟设备的最大数量可能受通过硬件虚拟化方法预设的虚拟接口的数量的限制,并且可能不存在足够的虚拟接口用于分派给所有部署的容器。相应地,由于缺少虚拟接口,设备IO队列可能并非可用于所有部署的容器。
例如,云服务提供商(CSP)(诸如在多云或混合云环境中)跨单个实体计算节点上的多个VM部署成千上万个容器实例(例如,每一VM约2000个容器),这些VM利用单个网络接口和单个存储设备接口。在使用SR-IOV的情况下,如果容器或应用的数量超过SR-IOV支持的最大VF,则可能无法提供用于256个容器以上的数量的容器的队列。
图2提供使用虚拟主机或虚拟数据路径加速(vDPA)的系统的概览。vDPA允许VM或容器与设备之间的连接使用virtio被建立,以提供在VM内执行的virtio驱动器与SR-IOVVF之间的数据平面以及由vDPA应用管理的控制平面。例如,在数据平面开发套件(DPDK)发布18.05和QEMU版本3.0.0中支持vDPA。vDPA驱动器可以在virtio驱动器与设备之间设置virtio数据平面接口。vDPA提供从VM到设备的数据路径,VM可借以与作为virtio设备的设备(例如,virtio-blk存储设备或virtio-net网络设备)进行通信。通过使用vDPA,设备的数据平面利用virtio环一致性布局(例如,virtqueue)。vDPA可以与SR-IOV和SIOV结合来进行操作。可以支持对使用vDPA来访问设备的容器和VM的实时迁移。实时迁移可以包括改变执行容器或VM的一个或多个计算或存储器资源,以将存储器、存储和网络或结构连接性转移至目的地。
附图说明
图1描绘了宾客系统与网络接口控制器(NIC)之间的分组和描述符复制的已知方式的示例。
图2提供使用虚拟主机或虚拟数据路径加速(vDPA)的系统的概览。
图3示出了其中驱动器与描述符变换器进行通信的示例。
图4A描绘了传送描述符变换的示例。
图4B描绘了接收描述符变换的示例。
图5示出在多个设备的情况下对描述符变换的使用的示例。
图6描绘在多个设备的情况下利用描述符变换对多个宾客虚拟环境的使用的示例。
图7A-7C描绘用于配置和使用描述符格式变换的过程。
图8提供可提供用于容器的队列的各实施例的概览。
图9描绘了用于向虚拟化执行环境分配设备的队列的示例过程。
图10描绘了经由虚拟主机目标进行的队列访问的示例。
图11描绘请求、数据访问和响应序列的示例。
图12示出virtio队列的示例配置,其提供了逐队列配置。
图13描绘系统。
图14描绘示例环境。
具体实施方式
描述符的变换
各实施例提供了虚拟接口与各种NIC之间的兼容性。在一些示例中,可以使用SR-IOV、
Figure BDA0003514661780000041
SIOV、或其他设备虚拟化或共享技术将NIC作为虚拟设备来访问。至少为了提供虚拟接口与各种NIC之间的兼容性,各实施例提供了与分组传送或接收相结合的描述符格式转换,以使得虚拟化执行环境(VEE)除了用于传送或接收分组的NIC以外可以利用NIC的驱动器。各实施例提供了一种描述符格式转换器(例如,硬件和/或软件)来标识去往或来自用于分组传送或分组接收的NIC的描述符的可用性,将描述符变换为另一接口格式,并且随后将经变换的描述符编写为VEE驱动器或PDM可以读取并作用于其上的描述符格式。例如,开发者或客户可以开发利用特定的NIC或利用特定的虚拟接口(例如,virtio-net、vmxnet3、iavf、e1000、AF_XDP、ixgbevf、i40evf等等)并且保持对此类接口的使用而不论到支持不同描述符格式的不同NIC的改变的应用或其他软件。
例如,应用或VEE可以利用(例如,下一代防火墙(NGFW)或负载平衡器)可以使用虚拟化接口(例如,virtio-net或vmxnet3),利用具有vSwitch旁路的SR-IOV(其中NIC通过直接存储器访问(DMA)将数据直接复制到由虚拟防火墙配置的缓冲区并直接从该缓冲区复制数据),并且向描述符转换器披露描述符以提供虚拟化接口与NIC之间的兼容性。各实施例可以经由NIC或结构接口促进资源(例如,计算资源、存储器资源、加速器资源)的使用的向外扩展。
图3描绘示例系统。宾客VEE 302可以包括任何类型的应用、服务、微服务、云原生微服务、工作负荷或软件。例如,VEE 302可以执行虚拟网络功能(VNF)、下一代防火墙、虚拟专用网络(VPN)、负载平衡,基于数据平面开发套件(DPDK)、存储性能开发套件(SPDK)、开放数据平面(OpenDataPlane)、网络功能虚拟化(NFV)、软件定义的联网(SDN)、演进分组核心(EPC)或5G网络切分中的一者或多者来执行分组处理。NFV的一些示例实现方式在欧洲电信标准协会(ETSI)规范或来自ETSI的开源Mano(开源NFV管理和编排)小组的开源NFV管理和编排(MANO)中进行描述。
VNF可以包括服务链或者在通用可配置硬件(诸如防火墙、域名系统(DNS)、高速缓存或网络地址转换(NAT))上执行的虚拟化任务序列,并且可以在VEE中运行。VNF可以一起链接成为服务链。在一些示例中,EPC是至少用于长期演进(LTE)接入的3GPP专用核心架构。5G网络切分可以提供多个虚拟化和独立逻辑网络在同一实体网络基础设施上的复用。
微服务可以是使用服务的集中式管理来独立地部署的。管理系统可以采用不同的编程语言来编写并且使用不同的数据存储技术。微服务可以通过以下各项中的一项或多项来表征:对(到可独立部署的服务的)细粒度接口、多语言编程(例如,采用多种语言编写以捕捉采用单语言不可用的附加功能和效率的代码)、或者轻量型容器或虚拟机部署、以及分散式连续微服务交付的使用。在一些示例中,微服务可以使用协议(例如,应用编程接口(API)、超文本传输协议(HTTP)资源API、消息服务、远程过程调用(RPC)或谷歌RPC(gRPC))与一个或多个其他微服务进行通信。
VEE可以至少包括虚拟机或容器。VEE可以在裸机(例如,单租户)或托管(例如,多租户)环境中执行。虚拟机(VM)可以是运行操作系统以及一个或多个应用的软件。VM可由规范、配置文件、虚拟盘文件、非易失性随机存取存储器(NVRAM)设置文件和日志文件来定义,并且由主机计算平台的实体资源备份。VM可以是被安装在发起专用硬件的软件上的OS或应用环境。终端用户在虚拟机上具有如同他们将在专用硬件上所具有的相同体验。被称为管理程序的专业化软件完全对PC客户端或服务器的CPU、存储器、硬盘、网络和其他硬件资源进行仿真,从而使虚拟机能够共享资源。管理程序可对彼此隔离的多个虚拟硬件平台进行仿真,从而允许虚拟机在同一底层实体主机上运行
Figure BDA0003514661780000061
FreeBSD、VMWare、
Figure BDA0003514661780000062
服务器操作系统。
容器可以是应用、配置和依赖关系的软件包,因此,应用能够在一个计算环境到另一计算环境之间可靠地运行。容器可共享安装在服务器平台上的操作系统,并且作为隔离的进程运行。容器可以是包含软件运行所需的任何内容(诸如,系统工具、库和设置)的软件包。容器并不像传统软件程序那样被安装,这允许容器与其他软件隔离且与操作系统自身隔离。隔离可以包括由特定容器而并非另一容器对可寻址存储器或存储的区域的所准许的访问。容器的隔离性质提供若干益处。首先,容器中的软件将在不同环境中以相同方式运行。例如,包括PHP和MySQL的容器可在Linux计算机和
Figure BDA0003514661780000063
机器两者上以完全相同的方式运行。其次,容器提供增加的安全性,因为软件将不影响主机操作系统。虽然安装的应用会更改系统设置并修改资源(诸如,
Figure BDA0003514661780000064
注册表),但是容器仅能够修改该容器内的设置。
实体PCIe连接的NIC 330(例如,SR-IOV VF、S-IOV VDEV或PF)可以被选择作为将接收和传送分组或在VEE 302的请求下执行工作的设备。各实施例可以利用计算快速链路(CXL)(例如,计算快速链路规范修订2.0、版本0.7(2019年)、及其早期版本、后期版本和变型)来提供主机与NIC 330或灵活描述符表示器(FDR)320之间的通信。虚拟设备(VDEV)驱动器304可以向FDR 320发送配置命令,以将FDR 320连接至由VEE 302暴露的虚拟化接口。注意,尽管对NIC作出引用,但另外或替代地,NIC 330可以包括存储控制器、存储设备、基础设施处理单元(IPU)、数据处理单元(DPU)、加速器(FPGA)、或硬件队列管理器(HQM)。
用于VEE 302的VDEV驱动器304可以为描述符分配内核存储器并且为分组缓冲区分配系统存储器,并且对FDR 320进行编程以访问那些描述符。例如,VDEV驱动器304可以向FDR 320指示描述符缓冲区位置(例如,Tx或Rx)。VDEV驱动器304可以与FDR 320而不是NIC330进行通信,以提供用于分组传送(Tx)的描述符或访问用于分组接收(Rx)的描述符。VDEV驱动器304可以为分组缓冲区以及Rx或Tx描述符环分配存储器,并且描述符环(队列)可以是FDR 320可访问的并且一些描述符环可以是NIC 330可访问的。
不论实体VF或SIOV NIC 330被用于分组传送还是接收,VEE 302都可以利用相同的虚拟化接口(例如,VDEV驱动器304)。虚拟化接口的示例包括但不限于virtio-net、vmxnet3、iavf、e1000、AF_XDP、ixgbevf、i40evf等等。在一些示例中,由VEE 302使用的虚拟化接口可以与Open vSwitch(开放式虚拟交换机)或数据平面开发套件(DPDK)相结合地工作。相应地,尽管使用不同于NIC 330的NIC(诸如来自不同的供应商或不同型号的NIC),但虚拟化接口和软件生态系统仍可以继续被使用。例如,在其中VEE 302被迁移以供在另一CPU插槽上执行的场景中,FDR 320可以执行描述符格式转换,以使得VEE 302可以利用同一虚拟接口来与由另一核使用的NIC进行通信。
在图3的系统中,VDEV驱动器304与FDR 320进行通信,该FDR 320作为NIC(或其他设备)与VDEV驱动器304进行交互。例如,图3的NIC 330可以像是图1的NIC 120那样与VDEV驱动器304进行交互。在图1的系统中,VDEV驱动器104直接与NIC 120通信,以配置对队列和描述符环的访问。在一些示例中,VDEV驱动器304也可以与NIC 330通信,以配置对队列和描述符环的访问。例如,在图1中可以使用NIC类型A,而在图3中可以使用NIC类型B,其中,NIC类型A和NIC类型B使用不同的Rx或Tx描述符格式,但是FDR 320提供描述符格式转换,以使得VDEV驱动器304提供并处理用于NIC类型A的描述符并且NIC 330处理NIC类型B的描述符。
在一些示例中,FDR 320可以披露到一个或多个服务器上运行的VEE的多个接收虚拟接口。虚拟接口可以具有不同的类型,例如一些虚拟接口可以是virtio-net一致性接口,一些虚拟接口可以是iafv一致性接口,其他虚拟接口可以是i40evf一致性接口。例如,VEE可以利用来自供应商A的NIC A,NIC A被呈现为来自供应商B的NIC B(或来自供应商A的另一NIC)的SR-IOV VF。VEE 302可能并非对NIC A的所有功能和能力均具有访问权,但将能够使用被编程为访问NIC B的VF的VEE。VEE可以与虚拟交换机(vSwitch)通信,这允许VEE之间的通信。
在一些示例中,PF主机驱动器314可以初始化FDR 320并将FDR 320连接至NIC330。在一些示例中,FDR 320可以为NIC 330分配Rx/Tx描述符环。在初始化之后,FDR 320可以包含Rx/Tx环的两个副本,诸如用于NIC 330的Rx/Tx环和用于VDEV驱动器304的Rx/Tx环。FDR 320可以利用描述符转换322来执行对Rx或Tx描述符的描述符变换,以使得用于NIC330的Rx/Tx环中的描述符是用于VDEV驱动器304的Rx/Tx环中的对应Rx或Tx描述符的变换。在一些示例中,FDR 320可以使用SR-IOV或SIOV来访问作为VF或PF的NIC 330,或者NIC 330可以使用SR-IOV或SIOV来访问作为VF或PF的FDR 320。
例如,FDR 320可以被实现为分立的PCIe设备,诸如连接至电路板并且CPU或XPU可访问的扩充卡。例如,FDR 320可以是使用虚拟接口作为虚拟设备可访问的。在一些示例中,FDR 320可以被实现为在VEE中执行的进程、用户空间中的插件、或其他软件。
例如,对于分组接收,NIC 330可以通过直接存储器访问(DMA)将数据复制到目的地位置并向受FDR 320管理的描述符环提供Rx描述符。例如,Rx描述符可以包括以下各项中的一项或多项:存储器(例如,实体或虚拟存储器)中的分组缓冲区地址、存储器(例如,实体或虚拟存储器)中的头部缓冲区地址、状态、长度、VLAN标签、错误、分段校验和、过滤标识符等等。例如,NIC 330可以更新Rx描述符以标识数据在缓冲区中的目的地位置。NIC 330可以更新Rx描述符,以指示NIC 330已经将数据写入到缓冲区并且可以执行其他动作,该动作诸如从接收到的分组移除虚拟局域网(VLAN)标签。FDR 320可以确定NIC 330(例如,通过轮询NIC 330或经由NIC 330的中断)何时更新Rx描述符或向由FDR 320管理的环添加Rx描述符。在被配置成用于对描述符进行变换的情况下,FDR 320可以将Rx描述符变换为由VDEV驱动器304识别并且可由其正确地读取的格式。但如果不需要描述符变换,则FDR 320可以允许Rx描述符在不进行变换的情况下是可用的。FDR 320可以将经变换的Rx描述符提供至VDEV驱动器304可访问的描述符环。VDEV驱动器304可以确定Rx描述符可由VEE 302用于进行处理。VEE 302可以根据经变换的Rx描述符在目的地缓冲区中标识接收到的数据。
例如,对于分组传送,VDEV驱动器304可以将分组置于存储器缓冲区中并写入到Tx描述符。例如,传送描述符可以包括以下各项中的一项或多项:分组缓冲区地址(例如,实体或虚拟地址)、层2标签、VLAN标签、缓冲区尺寸、偏移、命令、描述符类型等等。描述符字段和格式的其他示例至少在
Figure BDA0003514661780000091
以太网自适应虚拟功能规范(2018年)中进行描述。VDEV驱动器304向FDR 320指示Tx描述符可用于访问。在被配置成用于对描述符进行变换的情况下,FDR 320可以将Tx描述符变换为由NIC 330识别并且可由其正确地读取的格式。但如果不需要描述符变换,则FDR 320可以允许Tx描述符在不进行变换的情况下是可用的。FDR320可以监测由VDEV驱动器304提供的Tx描述符,将当前写入的Tx描述符变换为由NIC 330使用的描述符格式,在经变换的Tx描述符地址中包括要传送的数据缓冲区的地址,并将经变换的描述符写入到NIC 330正在监测的环中。NIC 330可以从由FDR 320管理的描述符环读取Tx描述符,并且NIC 330可以通过DMA复制操作来访问来自经变换的(或未经变换的)Tx描述符中标识的存储器缓冲区的分组数据。
图4A和图4B描绘了用于接收描述符的描述符格式变换的示例,但变换可以应用于传送描述符。描述符变换可以包括将描述符的字段的全部或子集复制到具有另一格式的描述符中的字段。描述符变换可以包括将值插入到具有另一格式的描述符的一个或多个字段中,即使这些值在正在被变换的描述符中不存在。各示例涉及VDEV驱动器将空描述符提供至FDR或描述符变换器并且FDR或描述符变换器将接收到的分组的描述符提供至VDEV驱动器。
如图4A中所示,VDEV驱动器将描述符400提供至FDR或描述符变换器。该Rx描述符是传统
Figure BDA0003514661780000092
82599NIC格式。VDEV驱动器可提供位[63:0]中的缓冲区地址值。字段VLAN标签、错误、状态、分段校验和、以及长度被初始化为0并且可以在由NIC进行分组接收时被填入。
Figure BDA0003514661780000093
E800NIC被使用的情况下,FDR或描述符变换器可将描述符格式400转换成Rx描述符格式402。FDR或描述符变换器可以将缓冲区地址位复制到具有描述符格式402的对应位,将原始的传统16字节描述符变换为32字节描述符。
如图4B中所示,NIC将与接收到的分组相对应的Rx描述符提供回到VDEV驱动器。NIC接收分组,将其DMA到缓冲区地址,并将Rx描述符标记为完成。FDR或描述符变换器可以对采用格式450的Rx描述符进行变换并提取对应的字段以将这些字段插入描述符格式452中。可以执行变换和映射,诸如按位的字段长度被改变并且仅有效位被复制。例如,描述符450的L2TAG1中的信息可以被变换并被传达在描述符452的VLAN标签中;描述符450的字段“错误”中的信息可以被变换并被传达在描述符452的字段“错误”中;描述符450的“状态”中的信息可以被变换并被传达在描述符452的“状态”中;并且描述符450的“长度”中的信息可以被变换并且其信息被传达在描述符452的“长度”中。在NIC描述符中不存在分段校验和,因此如果需要则FDR可计算原始校验和并将其值提供至VDEV驱动器。
再次参考图3,通过使用控制路径,VDEV驱动器304可配置隧道封装/解封装,或者迁移至FDR 320或在NIC 330上执行的某个软件。
图5示出将多个NIC用于VEE的示例。FDR 510可以提供用于NIC 520-0的描述符环512-0以及用于NIC 520-1的描述符环512-1。在该示例中,在VEE 502中执行的用于编号为0的设备的VDEV驱动器504-0和用于编号为1的设备的VDEV驱动器504-1可以与FDR 510通信。FDR 510可以执行传送描述符和接收描述符从可由NIC 520-0和520-1正确地读取的格式到可由虚拟接口、在VEE 502中执行的相应的用于编号为0的设备的VDEV驱动器504-0和用于编号为1的设备的VDEV驱动器504-1正确地读取的格式的描述符转换,并且反之亦然。在一些示例中,NIC 520-0可以支持与由NIC 520-1使用的Tx和Rx描述符格式相同或不同的Tx和Rx描述符格式。虽然示出了两个NIC,但是可以使用利用相同或不同的Tx或Rx描述符格式的任何数量的NIC。可以利用FDR 510的多个实例。
图6描绘了使用多个宾客VEE的实例,该多个宾客VEE利用多个NIC。FDR 610可以提供用于NIC 620-0的描述符环612-0以及用于NIC 620-1的描述符环612-1。在该示例中,用于VEE 602-0的VDEV驱动器604-0和用于VEE 602-1的VDEV驱动器604-1可以与FDR 610通信。FDR 610可以执行传送描述符和接收描述符从可由NIC 620-0和620-1正确地读取的格式到可由虚拟接口(即,相应的VDEV驱动器604-0和VDEV驱动器604-1)正确地读取的格式的描述符转换,并且反之亦然。在一些示例中,NIC 620-0可以支持与由NIC 620-1使用的Tx和Rx描述符格式相同或不同的Tx和Rx描述符格式。虽然示出了两个NIC,但是可以使用利用相同或不同的Tx或Rx描述符格式的任何数量的NIC。可以利用FDR 610的多个实例。
图7A描绘了用于设置对描述符变换和NIC的使用的示例过程。在702处,可以在描述符格式变换器与VEE之间形成连接。例如,描述符格式变换器可以被表示为到VEE的PCIe端点,诸如虚拟设备(例如,VF或virtio)或PF。例如,虚拟接口驱动器可以设置描述符格式变换器与VEE之间的连接。
在704处,描述符格式转换器可以被设置以向NIC提供对描述符的访问。例如,PF主机驱动器可以初始化描述符格式变换器并将其连接至NIC,因此描述符格式变换器可以分配Rx或Tx描述符环以供NIC访问,并且NIC将访问来自由描述符格式变换器标识的环的描述符。例如,PF主机驱动器可以将NIC编程为在由描述符格式变换器管理并被分配供NIC使用的存储器区域中标识传送和接收描述符环。在一些示例中,描述符格式变换器可以将NIC的虚拟功能ADI(例如,VF或ADI)编程为使用由描述符格式变换器管理的存储器区域中的描述符对描述符进行读取或写入。NIC可以访问来自由描述符格式变换器管理的描述符环的描述符。可由NIC访问的描述符环可以被分配在描述符格式变换器存储器中或在系统存储器中。在一些示例中,可以为传送描述符和接收描述符分配单独的环。可以针对设备执行其他设置操作,诸如将支持DMA的I/O总线连接至主存储器的输入-输出存储器管理单元(IOMMU)配置、中断设置等等。
在706处,虚拟接口可以设置要由描述符格式变换器执行的描述符变换,以使得由NIC接收或者由VEE或其虚拟接口读取的描述符格式可以被正确地读取。描述符变换的方式可以被指定用于逐位和/或逐字段地将源描述符变换为目的地描述符。
在708处,在VEE的启动时,VEE可以执行PCIe发现并且发现描述符格式变换器。VEE可以像与NIC直接通信那样,使用虚拟设备驱动器从受管理并被分配给描述符格式变换器的环读取描述符或向该环写入描述符。
图7B描绘了用于在针对分组传送的NIC的情况下使用描述符变换的示例过程。在750处,与分组传送请求相结合,VEE将传送描述符更新为标识要传送的数据。在其他示例中,对于NIC或其他设备,传送描述符可以指示工作请求。在752处,描述符格式变换器可以访问来自传送描述符环的描述符并基于其配置来执行该描述符的变换。描述符格式变换包括以下各项中的一项或多项:将一个或多个字段从第一描述符复制到第二描述符;扩展或收缩第一描述符中的一个或多个字段中的内容并将经扩展或经收缩的内容写入到第二描述符中的一个或多个字段;对第二描述符的一个或多个字段填入内容或使其保持空白,其中此类一个或多个字段在第一描述符中是未完成的;等等。在一些示例中,对于描述符转换,可以应用逐位的转换方案。第一描述符可以具有由虚拟接口驱动器生成的格式,并且第二格式可以是可由NIC读取的格式。在一些示例中,如果设备驱动器使用的描述符格式被NIC支持,则没有描述符格式变换被执行。描述符格式变换器可以将指向经变换的描述符的指针置于传送描述符环中以供NIC进行访问。
在754处,NIC可以基于对来自由描述符格式变换器管理的描述符环的传送描述符的访问来执行分组传送。NIC可以通过DMA操作基于传送描述符中的缓冲区信息从存储器缓冲区复制有效载荷数据。NIC可以更新传送描述符以指示传送完成。经更新的传送描述符可以由描述符格式变换器变换为可由虚拟接口驱动器读取的格式。
图7C描绘了用于响应于分组接收而对NIC使用描述符变换的示例过程。在770处,与分组接收相结合,NIC可以读取接收描述符以标识接收到的分组的有效载荷的部分的、在存储器中的数据存储位置。NIC可以完成接收描述符中的字段,以便指示校验和验证或其他分组元数据。可以在由描述符格式变换器管理的环中标识接收描述符。NIC可以使用DMA操作将接收到的分组的有效载荷复制到接收描述符中标识的目的地缓冲区位置。在其他示例中,对于NIC或其他设备,接收描述符可以指示工作请求。
在772处,描述符格式变换器可以访问来自接收描述符环的描述符并基于其配置来执行该描述符的变换。格式变换包括以下各项中的一项或多项:将一个或多个字段从第一描述符复制到第二描述符;扩展或收缩第一描述符中的一个或多个字段中的内容并将经扩展或经收缩的内容写入到第二描述符中的一个或多个字段;对第二描述符的一个或多个字段填入内容或使其保持空白,其中此类一个或多个字段在第一描述符中是未完成的;等等。在一些示例中,对于描述符转换,可以应用逐位的转换方案。第一描述符可以具有可由NIC读取并由NIC修改的格式,并且第二格式可以是可由虚拟接口驱动器读取的格式。描述符格式变换器可以将指向经变换的描述符的指针置于接收描述符环中以供虚拟接口驱动器进行访问。在一些示例中,如果NIC使用的描述符格式被设备驱动器正确地读取,则没有描述符格式变换被执行。
在774处,虚拟接口驱动器可以访问经变换的接收描述符并允许VEE访问通过经变换的接收描述符引用的分组有效载荷数据。
尽管在图7A-图7C中描述的示例参照NIC或网络接口设备,但各实施例可以应用于针对诸如加速器、硬件队列管理器(HQM)、队列管理设备(QMD)、存储控制器、存储设备、加速器等等之类的设备的任何工作负荷描述符格式变换。
数量可配置的可访问设备队列
图8提供了可提供用于在VM或裸机环境中运行的N个容器的队列的各实施例的概览。各实施例通过配置被配置成在vDPA应用810中活跃的虚拟设备的数量来配置用于由VEE访问(例如,读取或写入)的设备820中的队列(VQ)的数量。可以使用诸如virtio之类的其他框架。在一些示例中,vDPA应用810在用户空间中运行,但是可在内核空间中运行。在一些示例中,vDPA应用810可以基于使用DPDK或QEMU开发的vDPA框架。在一些示例中,vDPA应用810中活跃的虚拟设备可以是虚拟主机目标。为了提供队列到VEE的1:1映射,虚拟主机目标(例如,vhost-tgt)的数量可以通过输入参数来确定但是可能不超过virtio队列或设备820中可用的队列的数量。
vDPA应用810中的虚拟设备(例如,虚拟主机目标)可以为VEE(例如,VM 802及其容器或者在裸机环境804中运行的容器)提供控制平面和数据平面。设备820(例如,存储控制器或网络接口)中的IO队列(VQ)可以逐一地由对应的虚拟设备访问。可通过增加或减少vDPA应用810中的活跃虚拟设备的数量来增加或减少为VF(SR-IOV)或ADI(SIOV)分配的设备820中的IO队列并向部署的VEE分派这些IO队列。VF或ADI可以提供vDPA应用810中的虚拟设备与设备820之间的连接性以用于租户隔离。单个隔离实例(例如,VF或ADI)可以与VEE相关联。以此种方式可以实现设备820的共享与IO队列的隔离。虚拟设备可以要么具有专用实体队列对,要么与其他虚拟设备共享实体队列对。
VEE与vDPA应用810之间的接口可以通过虚拟主机库被实现为虚拟主机目标。在VEE中执行的virtio驱动器可以通过vDPA框架或应用810连接至虚拟主机目标和设备820。vDPA框架或应用810可以将虚拟主机目标连接至设备820。当设备820支持SR-IOV时,通过PF或VF进行的访问可以被利用。vDPA应用810可以与作为设备的PF或VF进行交互。在一些示例中,使用SIOV将VEE连接至SmartNIC可以提供对virtio队列的特征的访问,该特征包括速率限制和队列调度等。可以使用设备820至VEE之间的数据平面通行来降低数据或描述符传输中的延迟。
在一些示例中,虚拟设备使用virtio驱动器来与VEE进行通信。描述符可以使用virtio环从VEE被传递至虚拟设备,并被提供至设备820的对应IO队列。在一些示例中,vDPA应用810中所配置的虚拟设备可以访问描述符virtio环。Virtio数据平面可以从VEE被映射到设备820的VF。
下文是具有配置数量的虚拟主机目标的vDPA应用810的示例伪代码。
Figure BDA0003514661780000141
Figure BDA0003514661780000151
使用vDPA应用810的各实施例可以提供缩放VEE和设备820中的对应队列的数量的灵活性。各实施例允许将常用的接口(诸如virtio驱动器)用于VEE对vDPA应用810进行访问。在一些情况下,可能不需要对VEE或在VEE中运行的软件作出驱动器修改来支持一对一的VEE对设备队列访问。
图9描绘了用于向虚拟化执行环境分配设备的队列的示例过程。在902处,在设备启动时,可以在设备中分配数个输入输出(IO)队列。例如,可以在设备中分配最大准许数量的IO队列。在一些示例中,设备包括存储控制器、存储设备、网络接口卡、硬件队列管理器(HQM)、加速器等等。
在904处,在中间应用中,可以分配数个虚拟目标,其中虚拟目标的数量与被一对一地分配给VEE的IO队列的数量相对应。例如,中间应用可以是使用DPDK或QEMU开发的vDPA应用。例如,在设备处所分配的IO队列之中,IO队列的数量可以通过在vDPA应用中添加虚拟主机目标或删除vDPA应用中的虚拟主机目标来设置。根据vDPA应用中的虚拟主机目标的数量,IO队列的数量可以增加或减少。可以在vDPA应用启动时或者通过远程过程调用(RPC)命令来指定虚拟主机目标和对应的IO队列的数量。
图10描绘了由VEE经由虚拟主机目标进行的队列访问的示例。在一些示例中,VEE与虚拟主机目标之间的输入输出(IO)处理可以通过virtio队列(virtqueue)来实现。在一些示例中,virtio队列可以用于传输与描述符表中的描述符相对应的可用的(avail)环索引和/或与描述符表中的描述符相对应的已使用的环条目索引。在一些示例中,VEE和虚拟主机目标共享对virtqueue的读取和写入访问,并且vDPA应用提供virtqueue中的条目到设备的虚拟队列(VQ)的通行。vDPA应用可以提供VEE的virtio驱动器与(多个)IO队列之间以及虚拟主机目标与(多个)IO队列之间的通信。
在一些示例中,为了向设备发送IO请求(例如,读取或写入),VEE可以定位来自主机中的存储器中所存储的描述符表、并且由VEE与vDPA应用(被示出为vDPA)共享(在1002处)的空闲(可用)描述符条目。在该示例中,空闲条目是具有索引0的描述符(desc 0)。VEE将IO请求填充到desc 0中,填充可用的(avail)环尾条目值0,并通过经由virtio驱动器发送通知事件来通知虚拟主机目标。描述符可以标识IO请求,包括请求(req)、数据和响应(rsp)。描述符可以指定命令(例如,读取或写入)、要访问的数据在存储器中的地址、要访问的数据的长度、以及诸如扇区或响应状态之类的其他信息。描述符可以指向存储器中由设备使用直接存储器访问(DMA)操作可访问的地址。在1004处,设备可以经由virtqueue来访问描述符。VEE可以等待来自虚拟主机目标的反馈并检查已使用的环以查看哪个IO请求是完成的,并且将完成描述符设置为空闲。
特定的虚拟主机目标可以被VEE的驱动器发送的通知触发,以对可用的(avail)环进行检查,从而确定哪个描述符(desc)包括来自VEE的IO请求。虚拟主机目标可以处理可用的(avail)环中的描述符。在由描述符指定的IO操作完成后,主机目标可更新已使用的环以在响应状态中指示完成并通过发送通知事件来通知VEE。
在一些示例中,如果设备是存储控制器或存储设备(例如,在一个或多个非易失性存储器设备的情况下),对于对存储设备的访问,可以使用单个virtqueue来发送请求并接收响应。VEE可以使用virtqueue来提供可用的环索引以向虚拟主机目标传递可用的环索引,并且虚拟主机目标可以用已使用的环索引向VEE更新virtqueue。向存储写入可以是写入命令,从存储读取可以是读取命令。对于写入或读取命令,描述符表中的空闲条目可以被标识并用命令来填充,从而指示写入或读取、数据应被写入何处或应从何处被读取。描述符可以经由virtqueue在可用环的尾条目处被标识,并且随后虚拟主机目标可以被通知可用的描述符。在虚拟主机目标完成IO操作之后,它可以写入对状态的处理的结果,随后更新已使用的环,并将描述符的索引值写入在已使用的环的尾条目中随后通知VEE。VEE可以经由virtqueue读取已使用的环并获得描述符,以确定IO请求是否被成功完成并且数据处于数据指针指向的存储器中。在一些示例中,通过使用本文中描述的实施例,可以使用描述符格式转换来修改描述符。
在一些示例中,如果设备是网络设备,则可以使用两个virtqueue,诸如接收virtqueue和传送virtqueue。传送virtqueue可以被VEE用来向虚拟主机目标传送请求。接收virtqueue可以被VEE用来接受来自虚拟主机目标的请求。不同的virtqueue可以提供独立的通信。
图11描绘virtio块请求(req)、数据访问和响应(rsp)格式序列的示例。代码段struct virtio_blk_req可以表示virtio块请求的格式。
图12示出提供逐队列配置的virtio队列的配置的示例伪代码,包括msix_vector(msix_向量)、enable(使能)和notify_off(通知_关闭)的配置。相应地,队列可以单独地被配置和启用。
图13描绘示例系统。本文中的设备(例如,加速器、网络接口、存储设备等等)中的任何设备可以利用本文中所描述的描述符格式转换。系统1300包括处理器1310,该处理器1310提供对用于系统1300的指令的处理、操作管理和执行。处理器1310可以包括任何类型的微处理器、中央处理单元(CPU)、图形处理单元(GPU)、处理核、或用于为系统1300提供处理的其他处理硬件或处理器的组合。处理器1310控制系统1300的整体操作,并且可以是或可以包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑器件(PLD)等等或此类设备的组合。
在一个示例中,系统1300包括耦合至处理器1310的接口1312,该接口1312可以表示用于需要较高带宽连接的系统组件(诸如存储器子系统1320或图形接口组件1340或加速器1342)的较高速的接口或高吞吐量接口。接口1312表示接口电路,其可以是独立组件或被集成到处理器管芯上。在存在的情况下,图形接口1340对接至图形组件,以用于向系统1300的用户提供视觉显示。在一个示例中,图形接口1340可以驱动向用户提供输出的高清(HD)显示器。高清可以指具有约100PPI(像素每英寸)或更高的像素密度的显示器,并且可以包括诸如全高清(例如,1080p)、视网膜显示器、4K(超高清即UHD)或其他的格式。在一个示例中,显示器可以包括触摸屏显示器。在一个示例中,图形接口1340基于存储器1330中所存储的数据或基于由处理器1310执行的操作或基于这两者来生成显示。在一个示例中,图形接口1340基于存储器1330中所存储的数据或基于由处理器1310执行的操作或基于这两者来生成显示。
加速器1342可以是可以由处理器1310访问或使用的可编程或固定功能转移引擎。例如,加速器1342之中的加速器可以提供压缩(DC)能力、诸如公钥加密(PKE)之类密码学服务、密码、散列/认证能力、解密、或其他能力或服务。在一些实施例中,另外或替代地,加速器1342之中的加速器提供诸如本文中所描述的字段选择控制器能力。在一些情况下,加速器1342可以被集成到CPU插槽(例如,到包括CPU并提供与CPU的电气接口的主板或电路板的连接器)。例如,加速器1342可以包括单核或多核处理器、图形处理单元、逻辑执行单元、单级或多级高速缓存、可用于独立地执行程序或线程的功能单元、专用集成电路(ASIC)、神经网络处理器(NNP)、可编程控制逻辑、以及诸如现场可编程门阵列(FPGA)之类的可编程处理元件。加速器1342可以提供多个神经网络、CPU、处理器核、通用图形处理单元,或者图形处理单元可以被变成可用于由人工智能(AI)或机器学习(ML)模型使用。例如,AI模型可以使用或包括以下各项中的任一项或其组合:强化学习方案、Q学习方案、深度Q学习或异步优势行为方-评论方(A3C)、组合式神经网络、循环组合式神经网络、或其他AI或ML模型。可以使得多个神经网络、处理器核或图形处理单元可用于由AI或ML模型使用。
存储器子系统1320表示系统1300的主存储器,并且提供用于由处理器1310执行的代码或者用于执行例程的数据值的存储。存储器子系统1320可以包括一个或多个存储器设备1330,诸如只读存储器(ROM)、闪存、随机存取存储器(RAM)的一种或多种变体(诸如DRAM)、或其他存储器设备或此类设备的组合。存储器1330存储并主控操作系统1332以提供用于指令在系统1300中的执行的软件平台,等等。另外,应用1334可以在来自存储器1330的OS 1332的软件平台上执行。应用1334表示具有其自身的操作逻辑以执行一个或多个功能的执行的程序。进程1336表示向OS 1332或一个或多个应用1334或组合提供辅助功能的代理或例程。OS 1332、应用1334和进程1336提供用于为系统1300提供功能的软件逻辑。在一个示例中,存储器子系统1320包括存储器控制器1332,该存储器控制器1332是用于生成命令并向存储器1330发出命令的存储器控制器。将理解,存储器控制器1322可以是处理器1310的实体部分或接口1312的实体部分。例如,存储器控制器1322可以是与处理器1310一起被集成到电路上的集成存储器控制器。
尽管没有具体地图示,但是将理解,系统1300可以包括设备之间的一个或多个总线或总线系统,诸如存储器总线、图形总线、接口总线或其他总线。总线或其他信号线可以将组件通信地或电气地耦合在一起,或者将组件既通信地又电气地耦合。总线可以包括实体通信线、点对点连接、桥、适配器、控制器、或其他电路系统或组合。总线可以包括例如以下各项中的一项或多项:系统总线、外围组件互连(PCI)总线、超传输或工业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)、或电气和电子工程师协会(IEEE)标准1394总线(火线)。
在一个示例中,系统1300包括接口1314,该接口1314可以耦合至接口1312。在一个示例中,接口1314表示接口电路,其可以包括独立组件和集成电路系统。在一个示例中,多个用户接口组件或外围组件耦合至接口1314,或者这两者均耦合至接口1314。网络接口1350向系统1300提供通过一个或多个网络与远程设备(例如,服务器或其他计算设备)通信的能力。网络接口(例如,NIC)1350可以包括以太网适配器、无线互连组件、蜂窝网络互连组件、USB(通用串行总线)、或其他基于有线或无线标准的接口或专有接口。网络接口1350可以将数据传送至处于同一数据中心或机架的设备或传送至远程设备,这可以包括发送存储器中所存储的数据。网络接口1350可以接收来自远程设备的数据,这可以包括将接收到的数据存储到存储器中。各实施例可以与网络接口1350、处理器1310和存储器子系统1320结合使用。
网络设备1350的一些示例是基础设施处理单元(IPU)或数据处理单元(DPU)的部分或者被IPU或DPU利用。IPU或DPU可以包括网络接口,其中一个或多个可编程或固定功能处理器用于处理可以已经被CPU执行的操作的转移。IPU或DPU可以包括一个或多个存储器设备。在一些示例中,IPU或DPU可以执行虚拟交换机操作,管理存储事务(例如,压缩、密码学、虚拟化),并且管理在其他IPU、DPU、服务器或设备上执行的操作。
在一些示例中,网络接口1350中的队列可以如本文中所描述的、使用vDPA应用中所配置的虚拟目标来增加或减少,并且可以是使用VEE可访问的。
在一个示例中,系统1300包括一个或多个输入/输出(I/O)接口1360。I/O接口1360可以包括用户可以通过其与系统1300对接(例如,音频对接、字母数字对接、触觉/触摸对接或其他对接)的一个或多个接口组件。外围接口1370可以包括上面没有具体提到的任何硬件接口。外围设备一般是指依赖性地连接至系统1300的设备。依赖性连接是系统1300向在其上执行操作、并且用户与其进行交互的软件平台或硬件平台或这两者提供的连接。
在一个示例中,系统1300包括用于以非易失性方式存储数据的存储子系统1380。在一个示例中,在某些系统实现方式中,存储1380的至少某些组件可以与存储器子系统1320的组件重叠。存储子系统1380包括(多个)存储设备1384,其可以是或可以包括用于以非易失性方式存储大量数据的任何常规介质,诸如一个或多个基于磁性、固态或光学的盘、或组合。存储1384以持久状态来保持代码或指令和数据1386(例如,不论对系统1300的供电的中断,值均被保留)。存储1384一般可以被认为是“存储器”,但存储器1330典型地是向处理器1310提供指令的正在执行或操作的存储器。尽管存储1384是非易失性的,但存储器1330可以包括易失性存储器(例如,如果对系统1300的供电中断,则数据的值或状态是不确定的)。在一个示例中,存储子系统1380包括用于与存储1384对接的控制器1382。在一个示例中,控制器1382是接口1314或处理器1310的实体部分,或者可以包括处理器1310和接口1314两者中的电路或逻辑。
易失性存储器是在对设备的供电中断的情况下其状态(以及由此其中所存储的数据)是不确定的存储器。动态易失性存储器要求对设备中所存储的数据进行刷新以维持状态。动态易失性存储器的一个示例包括DRAM(动态随机存取存储器)或某种变型(诸如同步DRAM(SDRAM))。易失性存储器的另一示例包括高速缓存或静态随机存取存储器(SRAM)。本文所描述的存储器子系统可与数种存储器技术兼容,这些存储器技术诸如DDR3(双倍数据速率版本3,最初由JEDEC(联合电子设备工程委员会)于2007年6月27日发布),DDR4(DDR版本4,由JEDEC于2012年9月发布的初始规范),DDR4E(DDR版本4),LPDDR3(低功率DDR版本3,JESD209-3B,由JEDEC于2013年8月发布),LPDDR4(LPDDR版本4,JESD209-4,最初由JEDEC于2014年8月发布),WIO2(宽输入/输出版本2,JESD229-2,最初由JEDEC于2014年8月发布),HBM(高带宽存储器,JESD325,最初由JEDEC于2013年10月发布),LPDDR5(目前在由JEDEC进行讨论),HBM2(HBM版本2,目前在由JEDEC进行讨论),或其他存储器技术或存储器技术的组合,以及基于此类规范的变型或扩展的技术。JEDEC标准可在www.jedec.org获得。
非易失性存储器(NVM)设备是即使到设备的供电中断其状态也是确定性的存储器。在一些实施例中,NVM设备可包括块可寻址存储器设备,诸如NAND技术,或更具体地,多阈值级NAND闪存(例如,单级单元(“SLC”)、多级单元(“MLC”)、四级单元(“QLC”)、三级单元(“TLC”)或某种其他NAND)。NVM设备可包括字节可寻址就地写入三维交叉点存储器设备、或其他字节可寻址就地写入NVM设备(也被称为持久性存储器),诸如单级或多级相变存储器(PCM)或带开关的相变存储器(PCMS)、
Figure BDA0003514661780000221
OptaneTM存储器、使用硫属化物相变材料(例如,硫属化物玻璃)的NVM设备、包括金属氧化物基底、氧空位基底和导电桥随机存取存储器(CB-RAM)的电阻式存储器、纳米线存储器、铁电随机存取存储器(FeTRAM、FRAM)、结合忆阻器技术的磁阻随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、基于自旋电子磁结存储器的设备、基于磁隧穿结(MTJ)的设备、基于DW(畴壁)和SOT(自旋轨道转移)的设备、基于晶闸管的存储器设备、上述任何的组合或其他存储器。
功率源(未描绘)向系统1300的组件提供功率。更具体地,功率源典型地对接至系统1300中的一个或多个电源以向系统1300的组件提供功率。在一个示例中,电源包括用于插入到墙壁插座中的AC到DC(交流到直流)适配器。此类AC功率可以是可再生能源(例如,太阳能)功率源。在一个示例中,功率源包括DC功率源,诸如,外部AC到DC转换器。在一个示例中,功率源或电源包括用于通过接近充电场来充电的无线充电硬件。在一个示例中,功率源可包括内部电池、交流供应、基于动作的电源、太阳能电源、或燃料电池源。
在示例中,系统1300可以使用处理器、存储器、存储、网络接口和其他组件的互连的计算橇板来实现。可以使用诸如PCIe、以太网或光学互连(或其组合)之类的高速互连。
图14描绘包括多个计算机架1402的环境1400,每个计算机架1402包括架顶(Topof Rack,ToR)交换机1404、舱管理器1406和多个经池化的系统屉(drawer)。环境1400中的各种设备可以使用本文中所描述的实施例来进行描述符格式转换、和/或使用对vDPA应用中的虚拟目标进行通行的描述符来进行的虚拟队列访问。一般而言,经池化的系统屉可包括经池化的计算屉和经池化的存储屉。任选地,经池化的系统屉还可包括经池化的存储器屉和经池化的输入/输出(I/O)屉。在所图示的实施例中,经池化的系统屉包括
Figure BDA0003514661780000231
Figure BDA0003514661780000232
经池化的计算屉1408、和
Figure BDA0003514661780000233
安腾TM(ATOMTM)经池化的计算屉1410、经池化的存储屉1412、经池化的存储器屉1414、以及经池化的I/O屉1416。每个经池化的系统屉经由高速链路1418连接至ToR交换机1404,该高速链路诸如以太网链路或硅光子(SiPh)光学链路。
计算机架1402中的多个计算机架1402可经由其ToR交换机1404(例如,到舱级交换机或数据中心交换机)互连,如由到网络1420的连接所图示。在一些实施例中,计算机架1402的群组作为单独的舱而经由(多个)舱管理器1406进行管理。在一些实施例中,使用单个舱管理器来管理舱中的所有机架。替代地,可使用分布式舱管理器来进行舱管理操作。
环境1400进一步包括管理接口1422,该管理接口1422用于管理环境的各方面。这包括管理机架配置,其中对应的参数被存储为机架配置数据1424。环境1400可以用于计算机架。
本文中的实施例可在各种类型的计算和联网装备中实现,这些计算和联网装备诸如在数据中心和/或服务器场环境中采用的那些交换机、路由器、机架和刀片式服务器。数据中心和服务器场中使用的服务器包括阵列式服务器配置,诸如基于机架的服务器或刀片式服务器。这些服务器经由各种网络规定而通信地被互连,这些网络规定诸如利用局域网(LAN)之间适当的交换和路由设施将服务器集合分区为LAN以形成私有内联网。例如,云托管设施可典型地采用具有众多服务器的大型数据中心。刀片包括被配置成用于执行服务器型功能的单独的计算平台,即“卡片上服务器”。相应地,每个刀片包括常规服务器常见的组件,包括主印刷电路板(主板)和安装至该板的其他组件,主印刷电路板提供用于耦合适当的集成电路(IC)的内部布线(例如,总线)。
可使用硬件元件、软件元件或两者的组合来实现各示例。在某些示例中,硬件元件可包括器件、组件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等等)、集成电路、ASIC、PLD、DSP、FPGA、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等等。在某些示例中,软件元件可包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号,或其任何组合。确定是否使用硬件元件和/或软件元件来实现示例可能根据任何数量的因素而不同,这些因素诸如,如对于给定实现方式所期望的所需的计算速率、功率电平、热容限、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其他设计或性能约束。注意,在本文中硬件、固件和/或软件元件可合称或单独地称为“模块”或“逻辑”。处理器可以是硬件状态机、数字控制逻辑、中央处理单元、或者任何硬件、固件和/或软件元件的一个或多个组合。
一些示例可使用制品或至少一种计算机可读介质来实现,或者可被实现为制品或至少一种计算机可读介质。计算机可读介质可包括用于存储逻辑的非瞬态存储介质。在一些示例中,非瞬态存储介质可包括能够存储电子数据的一种或多种类型的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移除存储器或不可移除存储器,可擦除存储器或不可擦除存储器,可写入存储器或可重写存储器等等。在一些示例中,逻辑可包括各种软件元件,诸如软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号或其任何组合。
根据一些实施例,计算机可读介质可包括用于存储或维持指令的非瞬态存储介质,这些指令在由机器、计算设备或系统执行时使得机器、计算设备或系统执行根据所描述示例的方法和/或操作。指令可包括任何合适类型的代码,如源代码、经编译的代码、经解释的代码、可执行代码、静态代码、动态代码等等。指令可根据预定义的计算机语言、方式或语法来实现,以用于指令机器、计算设备或系统执行某一功能。指令可使用任何合适的高级的、低级的、面向对象的、可视的、经编译的和/或经解释的编程语言来实现。
至少一个示例的一个或多个方面可由存储在至少一个机器可读介质上的表示性指令来实现,指令表示处理器内的各种逻辑,指令在由机器、计算设备或系统读取时使得该机器、计算设备或系统制造用于执行本文中所描述的技术的逻辑。被称为“IP核”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
短语“一个示例”或“示例”的出现不一定全部指代同一示例或实施例。本文中描述的任何方面可以与本文中描述的任何其他方面或类似方面组合,不论这些方面是否相对于同一附图或要素来描述。在附图中描绘的框功能的划分、省略或包括无法推断出用于实现这些功能的硬件组件、电路、软件和/或元件一定要被划分、省略或包括在各实施例中。
可以使用表达“耦合的”和“连接的”以及它们的派生词来描述一些示例。这些术语并不必旨在作为彼此的同义词。例如,使用术语“连接的”和/或“耦合的”的描述可指示两个或更多元件彼此处于直接的物理或电接触。然而,术语“耦合的”还可以意味着两个或更多个元件彼此未直接接触,但仍然彼此进行合作或交互。
本文中的术语“第一”、“第二”等不指示任何顺序、数量或重要性,而是用于在要素之间进行区分。本文中的术语“一(“a”和“an”)”不指示对数量的限制,而是指示存在至少一个所引用的项。本文中参考信号使用的术语“断言的”指示信号的状态,其中信号是活跃的,并且这可以通过向信号施加逻辑0或逻辑1的任何逻辑电平来实现。术语“接着”或“在……之后”可以指代紧接着或跟在另一个或另一些事件之后。也可以根据替代实施例执行步骤的其他序列。此外,可以取决于特定应用添加或移除附加步骤。可以使用变化的任何组合,并且受益于本公开的本领域普通技术人员将理解本公开的许多变型、修改和替代实施例。
除非专门另外陈述,否则应理解诸如短语“X、Y或Z中的至少一个”之类的分隔语言在一般用于呈现项、项目等可以是X、Y或Z或其任何组合(例如,X、Y和/或Z)的上下文之内。因此,此类分隔语言一般不旨在暗示并且不应暗示某些实施例需要至少一个X、至少一个Y或至少一个Z各自都存在。此外,除非专门另外陈述,否则还应理解诸如短语“X、Y和Z中的至少一个”之类的分隔语言意味着X、Y、Z或其任何组合,包括“X、Y和/或Z”。
下文提供本文中公开的设备、系统和方法的说明性示例。设备、系统和方法的实施例可包括以下所描述的示例中的任何一个或多个以及其任何组合。
本文示出的流程图提供各种过程动作的序列的示例。流程图可以指示要由软件或固件例程执行的操作、以及物理操作。在一些实施例中,流程图可以图示有限状态机(FSM)的状态,有限状态机可以采用硬件和/或软件来实现。尽管以特定顺序或次序示出,但是除非另行指出,否则这些动作的次序可被更改。因此,所图示的实施例应当仅被理解为示例,并且过程可按不同次序来执行,并且一些动作可被并行地执行。另外,在各实施例中,一个或多个动作可以被省略;由此,并非所有动作在每一个实施例中都是必要的。其他过程流程是可能的。
本文所描述的各种组件可以是用于执行所描述的操作或功能的装置。本文中所描述的每个组件包括软件、硬件、或者软件和硬件的组合。组件可以被实现为软件模块、硬件模块、专用硬件(例如,专用硬件、专用集成电路(ASIC)、数字信号处理器(DSP)等)、嵌入式控制器、硬连线电路等等。
示例1包括一种方法,该方法包括:向设备提供对描述符的访问,其中,该描述符包括字段的组织和字段尺寸的第一格式;基于描述符的第一格式不同于与第二设备相关联的描述符的第二格式而进行以下步骤:执行描述符从第一格式到第二格式的变换,以及存储按第二格式的经变换的描述符以供第二设备进行访问;以及基于描述符的第一格式与描述符的第二格式相匹配,存储描述符以供第二设备进行访问。
示例2包括一个或多个其他示例,其中,第一格式与驱动器相关联并且示例2包括:基于第二设备提供具有第二格式的第二描述符而进行以下步骤:执行第二描述符从第二格式到与驱动器相关联的第一格式的变换,以及存储经变换的第二描述符以供驱动器进行访问。
示例3包括一个或多个其他示例并且包括:第二设备访问经变换的描述符;第二设备将经变换的描述符的内容修改为标识工作请求;执行已修改的经变换的描述符到第一格式的变换;以及存储经变换的已修改的经变换的描述符以供驱动器访问。
示例4包括一个或多个其他示例并且包括:基于第二设备到第三设备的改变、以及第三设备与不同于描述符的第一格式的描述符格式相关联,利用第二设备的驱动器基于描述符变换将描述符传输至第三设备或传输来自第三设备的描述符。
示例5包括一个或多个其他示例,其中,第二设备包括以下各项中的一项或多项:网络接口控制器(NIC)、基础设施处理单元(IPU)、存储控制器、和/或加速器设备。
示例6包括一个或多个其他示例并且包括:执行中间应用,该中间应用被配置有一个或多个虚拟目标以供进行描述符标识符从一个或多个虚拟化执行环境VEE到第二设备的一个或多个对应队列的传输,其中,虚拟目标与VEE一对一地相对应并且虚拟目标与第二设备的队列一对一地相对应。
示例7包括一个或多个其他示例,其中,中间应用基于虚拟数据路径加速(vDPA)。
示例8包括一个或多个其他示例并且包括一种装置,该装置包括:描述符格式变换器,该描述符格式变换器是驱动器可访问的,其中:驱动器和描述符格式变换器共享对传送描述符和接收描述符的访问,并且基于与设备相关联的描述符的格式不同于与驱动器相关联的描述符的第二格式,描述符格式变换器用于:执行描述符从格式到第二格式的变换,以及存储按第二格式的经变换的描述符以供设备进行访问。
示例9包括一个或多个其他示例,其中:设备用于访问经变换的描述符;设备用于将经变换的描述符的内容修改为标识至少一个工作请求;并且描述符格式变换器用于将已修改的经变换的描述符变换为该格式并存储经变换的已修改的经变换的描述符以供驱动器进行访问。
示例10包括一个或多个其他示例,其中:基于与设备相关联的描述符的格式同与驱动器相关联的描述符的第二格式相匹配,描述符格式变换器用于存储描述符以供设备进行访问。
示例11包括一个或多个其他示例,其中:设备包括以下各项中的一项或多项:网络接口控制器(NIC)、基础设施处理单元(IPU)、存储控制器、和/或加速器设备。
示例12包括一个或多个其他示例并且包括服务器,该服务器用于执行虚拟化执行环境(VEE)以经由描述符格式变换器来请求由设备进行工作执行或者接收来自设备的至少一个工作请求。
示例13包括一个或多个其他示例并且包括一种非瞬态计算机可读介质,包括存储于其上的指令,该指令如果由一个或多个处理器执行则使得该一个或多个处理器用于:执行中间应用,该中间应用被配置有一个或多个虚拟目标以供进行描述符标识符从一个或多个虚拟化执行环境(VEE)到一个或多个对应的设备队列的传输,其中,虚拟目标与VEE一对一地相对应并且虚拟目标与设备队列一对一地相对应。
示例14包括一个或多个其他示例,其中,中间应用与虚拟数据路径加速(vDPA)相一致。
示例15包括一个或多个示例,其中,被分配给VEE的设备队列的数量基于中间应用中所配置的虚拟目标的数量。
示例16包括一个或多个其他示例,其中,至少一个虚拟目标包括虚拟主机目标。
示例17包括一个或多个示例并且包括:在设备启动时,在设备中配置最大数量的设备队列。
示例18包括一个或多个其他示例,其中,设备包括以下各项中的一项或多项:网络接口控制器(NIC)、基础设施处理单元(IPU)、存储控制器、和/或加速器设备。
示例19包括一个或多个其他示例,其中,描述符标识符从一个或多个VEE到一个或多个对应设备队列的传输包括使用对应的虚拟队列进行的通信。
示例20包括一个或多个其他示例并且包括一种非瞬态计算机可读介质,包括存储于其上的指令,该指令如果由一个或多个处理器执行则使得一个或多个处理器用于:准许网络接口控制器(NIC)接收来自虚拟功能驱动器的分组传送请求并向该虚拟功能驱动器指示分组接收,其中,由虚拟功能提供至NIC的描述符的格式不同于与NIC相关联的通信。
示例21包括一个或多个其他示例,其中:虚拟功能驱动器用于使用描述符变换器来与NIC进行通信,其中:描述符变换器用于接收来自虚拟功能驱动器的描述符,网络接口控制器用于与描述符变换器交互,虚拟功能驱动器用于支持第一描述符格式,网络接口控制器用于支持第二描述符格式,并且第一描述符格式不同于第二描述符格式。

Claims (21)

1.一种方法,包括:
向设备提供对描述符的访问,其中,所述描述符包括字段的组织和字段尺寸的第一格式;
基于所述描述符的所述第一格式不同于与第二设备相关联的描述符的第二格式而进行以下步骤:
执行所述描述符从所述第一格式到所述第二格式的变换,以及
存储按所述第二格式的经变换的描述符以供所述第二设备进行访问;以及
基于所述描述符的所述第一格式和与所述第二设备相关联的描述符的所述第二格式相匹配,存储所述描述符以供所述第二设备进行访问。
2.如权利要求1所述的方法,其中,所述第一格式与驱动器相关联并且所述方法包括:
基于所述第二设备提供具有所述第二格式的第二描述符而进行以下步骤:
执行所述第二描述符从所述第二格式到与所述驱动器相关联的所述第一格式的变换,以及
存储经变换的第二描述符以供所述驱动器进行访问。
3.如权利要求1所述的方法,包括:
所述第二设备访问经变换的描述符;
所述第二设备将经变换的描述符的内容修改为标识工作请求;
执行已修改的经变换的描述符到所述第一格式的变换;以及
存储经变换的已修改的经变换的描述符以供所述驱动器访问。
4.如权利要求1所述的方法,包括:
基于所述第二设备到第三设备的改变、以及所述第三设备与不同于所述描述符的所述第一格式的描述符格式相关联,利用所述第二设备的驱动器基于描述符变换将描述符传输至所述第三设备或传输来自所述第三设备的描述符。
5.如权利要求1所述的方法,其中,所述第二设备包括以下各项中的一项或多项:网络接口控制器NIC、基础设施处理单元IPU、存储控制器和/或加速器设备。
6.如权利要求1所述的方法,包括:
执行中间应用,所述中间应用被配置有一个或多个虚拟目标以供进行描述符标识符从一个或多个虚拟化执行环境VEE到所述第二设备的一个或多个对应队列的传输,其中,所述虚拟目标与VEE一对一地相对应并且所述虚拟目标与所述第二设备的队列一对一地相对应。
7.如权利要求6所述的方法,其中,所述中间应用基于虚拟数据路径加速vDPA。
8.一种装置,包括:
描述符格式变换器电路系统,所述描述符格式变换器电路系统是驱动器可访问的,其中:
所述驱动器和所述描述符格式变换器电路系统共享对传送描述符和接收描述符的访问,并且
基于与设备相关联的描述符的格式不同于与所述驱动器相关联的描述符的第二格式,所述描述符格式变换器电路系统用于:
执行所述描述符从所述格式到所述第二格式的变换,以及
存储按所述第二格式的经变换的描述符以供所述设备进行访问。
9.如权利要求8所述的装置,其中:
所述设备用于访问经变换的描述符;
所述设备用于将经变换的描述符的内容修改为标识至少一个工作请求;并且
所述描述符格式变换器电路系统用于将已修改的经变换的描述符变换为所述格式并存储经变换的已修改的经变换描述符以供所述驱动器访问。
10.如权利要求8所述的装置,其中:
基于与所述设备相关联的描述符的格式同与所述驱动器相关联的描述符的所述第二格式相匹配,所述描述符格式变换器电路系统用于存储所述描述符以供所述设备进行访问。
11.如权利要求8所述的装置,其中,所述设备包括以下各项中的一项或多项:网络接口控制器NIC、基础设施处理单元IPU、存储控制器、和/或加速器设备。
12.如权利要求8所述的装置,包括:
服务器,所述服务器用于执行虚拟化执行环境VEE以经由所述描述符格式变换器来请求由所述设备进行工作执行或者接收来自所述设备的至少一个工作请求。
13.一种非瞬态计算机可读介质,包括存储于其上的指令,所述指令如果由一个或多个处理器执行则使得所述一个或多个处理器用于:
执行中间应用,所述中间应用被配置有一个或多个虚拟目标以供进行描述符标识符从一个或多个虚拟化执行环境VEE到一个或多个对应设备队列的传输,其中,虚拟目标与VEE一对一地相对应并且所述虚拟目标与设备队列一对一地相对应。
14.如权利要求13所述的计算机可读介质,其中,所述中间应用与虚拟数据路径加速vDPA相一致。
15.如权利要求13所述的计算机可读介质,其中,被分配给VEE的设备队列的数量基于所述中间应用中所配置的虚拟目标的数量。
16.如权利要求13所述的计算机可读介质,其中,至少一个虚拟目标包括虚拟主机目标。
17.如权利要求13所述的计算机可读介质,包括:
在设备启动时,在设备中配置最大数量的设备队列。
18.如权利要求13所述的计算机可读介质,其中,所述设备包括以下各项中的一项或多项:网络接口控制器NIC、基础设施处理单元IPU、存储控制器、和/或加速器设备。
19.如权利要求13所述的计算机可读介质,其中,描述符标识符从所述一个或多个VEE到一个或多个对应设备队列的传输包括使用对应的虚拟队列进行的传输。
20.一种非瞬态计算机可读介质,包括存储于其上的指令,所述指令如果由一个或多个处理器执行则使得所述一个或多个处理器用于:
准许网络接口控制器NIC接收来自虚拟功能驱动器的分组传送请求并向所述虚拟功能驱动器指示分组接收,其中,由所述虚拟功能提供至所述NIC的描述符的格式不同于与所述NIC相关联的通信。
21.如权利要求20所述的计算机可读介质,其中:
所述虚拟功能驱动器用于使用描述符变换器来与所述NIC进行通信,其中:
所述描述符变换器用于接收来自所述虚拟功能驱动器的描述符,
所述NIC与所述描述符变换器通信地耦合,
所述虚拟功能驱动器用于支持第一描述符格式,
所述NIC用于支持第二描述符格式,并且
所述第一描述符格式不同于所述第二描述符格式。
CN202210162744.8A 2021-03-22 2022-02-22 可配置设备接口 Pending CN115113973A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/208,744 2021-03-22
US17/208,744 US20210232528A1 (en) 2021-03-22 2021-03-22 Configurable device interface

Publications (1)

Publication Number Publication Date
CN115113973A true CN115113973A (zh) 2022-09-27

Family

ID=76969464

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210162744.8A Pending CN115113973A (zh) 2021-03-22 2022-02-22 可配置设备接口

Country Status (3)

Country Link
US (1) US20210232528A1 (zh)
CN (1) CN115113973A (zh)
DE (1) DE102022102788A1 (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201808820D0 (en) * 2018-05-30 2018-07-11 Nordic Semiconductor Asa Direct memory access controller
US11416435B2 (en) * 2019-09-03 2022-08-16 Pensando Systems Inc. Flexible datapath offload chaining
US11561916B2 (en) * 2020-01-13 2023-01-24 Hewlett Packard Enterprise Development Lp Processing task deployment in adapter devices and accelerators
CN115088238A (zh) * 2020-02-10 2022-09-20 上海诺基亚贝尔股份有限公司 用于基于事件机器的应用的数据传输
US11962518B2 (en) 2020-06-02 2024-04-16 VMware LLC Hardware acceleration techniques using flow selection
US11669473B2 (en) * 2020-06-26 2023-06-06 Advanced Micro Devices, Inc. Allreduce enhanced direct memory access functionality
US11436177B2 (en) * 2020-07-24 2022-09-06 Dell Products L.P. Floating device location identification system
US11636053B2 (en) 2020-09-28 2023-04-25 Vmware, Inc. Emulating a local storage by accessing an external storage through a shared port of a NIC
US11875172B2 (en) 2020-09-28 2024-01-16 VMware LLC Bare metal computer for booting copies of VM images on multiple computing devices using a smart NIC
US11792134B2 (en) 2020-09-28 2023-10-17 Vmware, Inc. Configuring PNIC to perform flow processing offload using virtual port identifiers
US20220100432A1 (en) 2020-09-28 2022-03-31 Vmware, Inc. Distributed storage services supported by a nic
US12021759B2 (en) 2020-09-28 2024-06-25 VMware LLC Packet processing with hardware offload units
US11593278B2 (en) * 2020-09-28 2023-02-28 Vmware, Inc. Using machine executing on a NIC to access a third party storage not supported by a NIC or host
CN114238183B (zh) * 2021-12-13 2023-10-20 中科驭数(北京)科技有限公司 实现Virtio设备的系统、方法和介质
US11995024B2 (en) 2021-12-22 2024-05-28 VMware LLC State sharing between smart NICs
US11863376B2 (en) 2021-12-22 2024-01-02 Vmware, Inc. Smart NIC leader election
US11928367B2 (en) 2022-06-21 2024-03-12 VMware LLC Logical memory addressing for network devices
US11899594B2 (en) 2022-06-21 2024-02-13 VMware LLC Maintenance of data message classification cache on smart NIC
US11928062B2 (en) 2022-06-21 2024-03-12 VMware LLC Accelerating data message classification with smart NICs
CN116069711B (zh) * 2023-04-07 2023-07-14 浪潮电子信息产业股份有限公司 直接内存访问控制器、异构设备、内存访问方法及介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9256441B2 (en) * 2012-10-24 2016-02-09 Intel Corporation System and method providing forward compatibility between a driver module and a network interface
US9910692B2 (en) * 2016-01-26 2018-03-06 Intel Corporation Enhanced virtual function capabilities in a virtualized network environment
US11074013B2 (en) * 2018-08-07 2021-07-27 Marvell Asia Pte, Ltd. Apparatus and methods for providing quality of service over a virtual interface for solid-state storage

Also Published As

Publication number Publication date
US20210232528A1 (en) 2021-07-29
DE102022102788A1 (de) 2022-09-22

Similar Documents

Publication Publication Date Title
US20210232528A1 (en) Configurable device interface
EP3754498B1 (en) Architecture for offload of linked work assignments
US20200319812A1 (en) Intermediary for storage command transfers
US11941458B2 (en) Maintaining storage namespace identifiers for live virtualized execution environment migration
EP3706394B1 (en) Writes to multiple memory destinations
US20220029929A1 (en) Technologies that provide policy enforcement for resource access
CN110858185A (zh) 可扩展输入/输出(i/o)虚拟化(s-iov)架构中的虚拟设备构成
US12008359B2 (en) Update of boot code handlers
US11934330B2 (en) Memory allocation for distributed processing devices
US11681625B2 (en) Receive buffer management
US20210117244A1 (en) Resource manager access control
US20210149587A1 (en) Technologies to provide access to kernel and user space memory regions
US20220086226A1 (en) Virtual device portability
US20200358721A1 (en) Buffer allocation for parallel processing of data
US20220138021A1 (en) Communications for workloads
EP4030284A1 (en) Virtual device portability
US20210157626A1 (en) Prioritizing booting of virtual execution environments
US11748136B2 (en) Event notification support for nested virtual machines
US20220214908A1 (en) Function start-up technologies
US12026110B2 (en) Dynamic interrupt provisioning
US20210149821A1 (en) Address translation technologies
US20200210359A1 (en) Dynamic interrupt provisioning
US20230333921A1 (en) Input/output (i/o) virtualization acceleration
US20220350499A1 (en) Collaborated page fault handling

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination