CN106560791B - 高效虚拟i/o地址转换 - Google Patents
高效虚拟i/o地址转换 Download PDFInfo
- Publication number
- CN106560791B CN106560791B CN201610876727.5A CN201610876727A CN106560791B CN 106560791 B CN106560791 B CN 106560791B CN 201610876727 A CN201610876727 A CN 201610876727A CN 106560791 B CN106560791 B CN 106560791B
- Authority
- CN
- China
- Prior art keywords
- network interface
- interface controller
- translation
- descriptor
- bus address
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/404—Coupling between buses using bus bridges with address mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/17—Interprocessor communication using an input/output type connection, e.g. channel, I/O port
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/781—On-chip cache; Off-chip memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Information Transfer Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
Abstract
本申请公开高效虚拟I/O地址转换。一种方法包括使用网络接口控制器来监测发送环,其中,该发送环包括存储描述符的圆形环数据结构,其中,描述符描述数据并且包括提供该数据的虚拟存储位置的客户总线地址。该方法还包括使用该网络接口控制器来确定已将描述符写入该发送环。该方法进一步包括使用网络接口控制器来尝试检索客户总线地址的转换。该方法包括使用网络接口控制器从发送环读取描述符。
Description
技术领域
本公开总体上涉及虚拟机,诸如操作系统支持的虚拟机。更具体地,本公开涉及为虚拟机内的网络接口设备提供高效虚拟输入/输出(I/O)地址转换。
背景技术
本部分旨在向读者介绍下文所描述和/或要求的本披露的各个方面可能涉及的各个方面技术。这种讨论被认为有助于向读者提供背景信息以便于更好地理解本披露的各个方面。相应地,应当理解的是,这些陈述应该以此角度被解读,而并非承认其为现有技术。
高性能服务器网络可使用由管理程序托管的虚拟机架构。虚拟机继而又可使用映射至物理存储器地址的虚拟存储器地址以更高效地使用存储空间。主系统中的存储器管理单元可将虚拟地址转换成物理地址。高性能服务器网络还可使用高性能网络接口设备,诸如网络接口控制器(NIC)。当发送和接收数据时,可将数据在主系统与NIC之间传送。为了读取从主系统中发出的传出数据或将传入数据写入主系统,NIC可请求转换虚拟地址来访问期望的物理地址。这些转换请求可能引起延时,该延时可能负面地影响网络性能。
发明内容
下文陈述本文所公开的某些实施例的概述。应当理解的是,这些方面仅仅呈现为给读者提供这样的某些实施例的简要概述且这些方面不旨在限制本公开的范围。实际上,本公开可涵盖下文可能没有陈述的各个方面。
本实施例涉及用于通过使用定向输入/输出(I/O)支持技术增强高性能服务器网络的网络性能的系统和方法。具体地,本实施例涉及一种通过访问由管理程序托管的多个虚拟机中的未转换、虚拟“客户”总线地址并在适宜时间转换客户总线地址来使用定向I/O支持技术的高性能网络接口设备,诸如网络接口控制器(NIC)。NIC可发起对这些未转换客户总线地址的存储器事务,这引起I/O故障和转换请求。在适宜时间使用由定向I/O支持技术提供的能力请求转换可以减小或消除由于发起对这些未转换客户总线地址的多个存储器事务引起的延时。
在第一实施例中,一种方法包括使用网络接口控制器监测发送环,其中该发送环包括存储多个描述符的圆形环数据结构,其中,描述符描述数据并且包括提供该数据的虚拟存储位置的客户总线地址。该方法还包括使用该网络接口控制器来确定已将描述符写入该发送环。该方法进一步包括使用网络接口控制器来尝试检索该客户总线地址的转换。该方法包括使用网络接口控制器来从该发送环中读取该描述符。
在第二实施例中,一种方法包括使用网络接口控制器来监测接收环,其中该接收环包括存储多个描述符的圆形环数据结构,其中,描述符描述数据并且包括提供该数据的虚拟存储位置的客户总线地址。该方法还包括使用该网络接口控制器来确定已将描述符写入该接收环。该方法进一步包括使用网络接口控制器来尝试检索该客户总线地址的转换。该方法包括使用网络接口控制器来从该接收环中读取该描述符。
在第三实施例中,一种有形、非瞬态机器可读介质包括监测存储多个描述符的圆形环数据结构的机器可读指令,其中,描述符描述数据并且包括提供该数据的虚拟存储位置的客户总线地址。该机器可读介质还包括确定已将该描述符写入该圆形环数据结构的机器可读指令。该机器可读介质进一步包括确定何时已缓存该客户总线地址的转换的机器可读指令。该机器可读介质包括当已确定已缓存该转换时读取该转换的机器可读指令。该机器可读介质还包括当确定未缓存该转换时请求转换该客户总线地址的机器可读指令。该机器可读介质进一步包括从该圆形环数据结构中读取该描述符的机器可读指令。
可对本公开的各个方面做出上述这些特征的各种改良。这样的各个方面中还结合了进一步特征。可单独地或以任何组合地做出这样的改良和另外的特征。例如,下文关于一个或更多个所说明的实施例所讨论的各个特征可单独或以任何组合结合至本发明的任何上述方面中。在不限制要求保护的主题的情况下,上文呈现的简要概述仅仅希望使读者熟悉本公开的实施例的某些方面和背景。
附图说明
在阅读以下详细说明且在参考附图时可更好地理解本公开的各个方面,在附图中:
图1是展示根据一个实施例的包括内部输入/输出(I/O)总线互连件的系统的方框图;
图2是展示根据一个实施例的使用内部I/O总线互连标准的软件系统的方框图,该标准支持定向I/O支持技术;
图3是展示根据一个实施例的发送环的图解;
图4是展示根据一个实施例的发送数据的过程的图解;
图5是展示根据一个实施例的接收环的图解;
图6是展示根据一个实施例的接收数据的过程的图解;
图7是展示根据一个实施例的发送数据的方法的流程图;并且
图8是展示根据一个实施例的接收数据的方法的流程图。
具体实施方式
下文将描述一个或更多个具体实施例。为了努力提供对这些实施例的简明描述,本说明书中并未描述实际实施方式的全部特征。应当明白的是,在任何这样的实际实施方式的发展中,如同在任何工程或设计方案中,必须做出许多实施方式特定的决定以实现开发者的具体目标,诸如符合系统相关和业务相关约束,这些约束在不同的实施方式之间可以是不同的。而且,应当明白的是,开发工作可能是复杂又耗时的,但是对于得益于本公开的一般技术人员仍然是设计、制作和制造的常规工作。
如下文进一步详细地讨论,本公开的实施例通常涉及优化对虚拟机内的网络接口设备(诸如网络接口控制器(NIC))的虚拟输入/输出(I/O)地址转换。具体地,本实施例涉及通过访问由该管理程序托管的虚拟机中的未转换虚拟“客户”总线地址并在适宜时间转换该客户总线地址来使用定向I/O支持技术的NIC。术语“客户”在本公开中是指安装在主操作系统上并且在主操作系统的虚拟化平台上运行的虚拟机。客户总线地址是映射至主系统的物理存储地址的虚拟存储地址。主系统的处理器可以将非连续物理存储器(例如,来自各种不同来源的存储器,诸如主处理器的存储器、硬盘的存储器等)映射至虚拟存储器中的连续虚拟地址空间。附加地,主系统的软件可以扩展存储器能力以提供能够超过主系统的物理存储器的容量的虚拟地址空间,并因此涉及比可以物理地存在于该主系统上的存储器更大的存储器。处理器的地址转换硬件可以将客户总线地址转换为物理地址来访问所存储的数据。NIC可发起对这些未转换的客户总线地址的存储器事务,这引起I/O故障和转换请求。在适宜时间使用由该定向I/O支持技术提供的这些能力请求转换可减小或消除由于开始对这些未转换客户总线地址的多个存储器事务引起的延时。
综上所述,图1是展示根据一个实施例的包括内部I/O总线互连件11的系统10的方框图。I/O总线互连件11可以使用支持定向I/O支持技术的高速串行计算机扩展总线标准,诸如外围组件互连高速(PCIe)3.0或后续版本、因特尔快速通道互连(Intel QuickPathInterconnect)(QPI)等,例如,PCI 3.0支持单根I/O虚拟化(SR-IOV)。系统10可包括主系统22。主系统22可包括处理器14、主存储器16、根联合体(root complex)12和提供一个或更多个连接点20(例如,PCIe 3.0端口)的一个或更多个交换机18。根联合体12可将处理器14和主存储器16连接至系统10的一个或更多个交换机18。主存储器16可包括系统10的物理随机存取存储器(RAM)。主存储器16可包括分配给由任一个和/或两个NIC 24用来处理数据分组的发送环28和接收环30的存储器。根联合体12可以代表处理器14生成事务请求。根联合体12可以为分立设备或与处理器14集成。根联合体12可包括提供一个或更多个连接点20(例如,PCIe 3.0端口)的一个或更多个交换机18。系统10可进一步包括NIC 24。在一些实施例中,主系统22可包括NIC 24,其可经由I/O总线互连件11耦合至处理器14。应当理解,主系统22的处理器14可包括执行任务并且共享处理器14的结构的一个或更多个处理器。在一些实施例中,NIC 24可由端口20耦合至交换机18。NIC 24可包括片上存储器26。片上存储器26可包括分配给由主系统22和NIC 24用来处理数据分组的发送环28和接收环30的存储器。片上存储器26可包括存储在主存储器16中的数据的副本。例如,片上存储器26的发送环28和接收环30可包括存储在主存储器16的发送环28和接收环30中的数据的副本。在一些实施例中,片上存储器26可包括存储在主存储器16中的描述符的副本。
现在转向适用于系统10的虚拟机架构,图2是展示根据一个实施例的使用支持定向I/O支持技术的I/O总线互连件标准的软件系统40的方框图。软件系统40可包括一个或更多个虚拟机(VM)或客户机42。每个VM 42具有为NIC 24提供接口的虚拟功能(VF)驱动器44。软件系统40还可包括创建并且运行VM 42的管理程序或虚拟机监测器46。该软件系统使用I/O总线互连件标准(例如,高速串行计算机扩展总线标准)48,该标准支持实现对诸如NIC24的设备的访问的定向I/O支持技术。例如,I/O总线互连件标准48可使用PCIe 3.0或后续版本、英特尔QPI等。具体地,PCIe 3.0支持单根I/O虚拟化(SR-IOV)。SR-IOV可使得连接至交换机18的单个设备(诸如NIC 24)表现为多个单独设备。具体地,该软件系统可将NIC 24作为虚拟NIC 50暴露于每个VM 42。SR-IOV还可使得VM 42能够经由虚拟功能52访问NIC 24内的资源。VM 42可将这些资源看做虚拟NIC资源54。可利用Windows、Linux和这些操作系统的其它变体(例如,由英特尔数据平面开发套件(DPDK)、VM Ware、Xen等提供的框架)观察这种功能。
如上所述,NIC 24的主存储器16或片上存储器26可包括发送环28。图3是展示根据一个实施例的发送环28的图解。发送环28可由NIC 24用来处理由VF驱动器44格式化的分组。发送环28是当其端对端连接时(诸如圆形环),使用单个、固定大小缓冲区的数据结构。发送环28包括编号为0至n-1的条目70,其中每个条目70包括描述用于数据分组的存储器中的数据的物理片段82的描述符72。即,该分组可由一个或更多个片段82组成。例如,分组0可由片段0、1和2组成。描述符72可包括客户总线地址74,该客户总线地址是片段82的虚拟位置。描述符72可进一步尤其包括关于片段82的信息(例如,物理片段76的长度)、关于该分组的信息(例如,分组指示符78的终点)以及控制信息80。
转向发送数据的过程,VM 42的客户操作系统(OS)可将在单次调用中发送的一个或更多个分组提供至VF驱动器44。图4是展示根据一个实施例的发送数据的过程90的图解。VF驱动器44可从客户OS中接收分组94(方框92)并且将分组94分离为片段82。替代地,VF驱动器44可接收已由客户OS将分组94分离的片段82。在所展示的实例中,分组0由三个片段0、1和2组成。在这个时间期间,NIC 24正针对由VF驱动器44写入的描述符72(图3中所示)监测发送环28(方框96)。NIC 24能够通过使用例如由SR-IOV提供的地址转换服务(ATS)监测存储在主存储器16上的发送环28。具体地,ATS使得VM 42能够通过使用查找表将虚拟地址映射至对应的物理地址来执行往返于PCIe设备(例如,NIC 24)的直接存储器访问(DMA)事务。ATS还使得PCIe设备能够以相同方式对VM 42执行DMA事务。如果发送环28存储在NIC 24中的片上存储器26上,那么NIC 24可访问发送环28而不执行DMA事务。
VF驱动器44可将描述符0(图3中所示)写入发送环28中的第一条目70(方框98)。如图3中所描绘,描述符0可尤其包括是构成分组0的片段0的虚拟位置的客户总线地址74。在这个时间期间,NIC 24继续针对新描述符72监测发送环28(方框96)。VF驱动器44可将描述符1写入发送环28中的第二条目70(方框100)。描述符1可尤其包括是分组0的片段1的虚拟位置的客户总线地址74。大约在这个时间,NIC 24可确定已将描述符0写入发送环28(方框102)。在那种情况中,NIC 24可尝试检索和/或请求客户总线地址0(例如,描述符0中所含的客户总线地址74)的转换。NIC 24最终可接收客户总线地址0的已转换物理地址。VF驱动器44可将描述符2写入发送环28中的第三条目70(方框104)。描述符2可尤其包括是分组0的片段2的虚拟位置的客户总线地址74。大约在这个时间,NIC 24可确定已将描述符1写入发送环28(方框106)。在那种情况中,NIC 24可请求转换客户总线地址1(即,描述符1中所含的客户总线地址74)。NIC 24可进一步确定已将描述符2写入发送环28(方框108)。在那种情况中,NIC 24可请求转换客户总线地址2(即,描述符2中所含的客户总线地址74)。NIC 24最终可接收客户总线地址2的已转换物理地址。
一旦将这三个描述符0、1和2写入发送环28,VF驱动器44可通过写入NIC 24的门铃寄存器112中来通知(方框110)NIC 24。门铃寄存器112是NIC 24的寄存器,该寄存器使得软件(例如,VF驱动器44)能够写入寄存器使得通知NIC 24已将一或多个分组写入发送环28。在NIC 24从VF驱动器44中接收到(方框114)该通知之后,NIC 24可从发送环28中读取(方框116)描述符0、1和2。替代地,NIC 24可确定其在从发送环28中读取116描述符0、1和2之前就已接收到客户总线地址0、1和2的已转换物理地址。NIC 24接着可使用这些描述符0、1和2中的信息结合客户总线地址0、1和2的这些已转换物理地址来读取118片段0、1和2。NIC 24可将片段0、1和2组合120成分组0并且发送分组0。
如上文简要地提及,NIC 24可发起对这些未转换客户总线地址的存储器事务,从而引起I/O故障和转换请求。在发送数据的过程90导致一个或更多个客户总线地址74保持未转换的情况中,仍然可发生对未转换总线地址74发起存储器事务。然而,上述发送数据的过程90可减小或消除由对这些未转换总线地址74发起这些存储器事务引起的延时。
此外,一些实施例可使用定向I/O支持技术的地址转换缓存特征来进一步改进发送数据的过程90的延时和总性能特性。例如,PCIe支持地址转换缓存(ATC)特征以缓存并且再用地址转换。这尤其可有利于重复使用的公共客户总线地址74。
如上所述,NIC 24的主存储器16或片上存储器26还可包括接收环30。图5是展示根据一个实施例的接收环30的图解。接收环30可由VF驱动器44用来向NIC 24提供接收缓冲区。接收环28是在其端对端连接时(诸如圆形环)使用单个、固定大小缓冲区的数据结构。接收环30包括编号为0至n-1的条目130,其中每个条目130包括描述数据的完整分组94的描述符132。描述符132可包括是指定用于存储分组94的接收缓冲区的虚拟位址的客户总线地址74。描述符132可尤其进一步包括控制信息80。
图6是展示根据一个实施例的接收数据的过程140的图解。VF驱动器44可分配主存储器16用于接收数据(方框142)。具体地,VF驱动器44可分配主存储器16作为接收缓冲区144来接收传入的分组94。在这个时间期间,NIC 24正针对由VF驱动器44写入的新描述符132(图5中所示)监测接收环30(方框146)。NIC 24能够通过使用由SR-IOV提供的ATS监测存储在主存储器16上的接收环30。具体地,ATS使得VM 42能够通过使用查找表将虚拟地址映射至对应的物理地址来执行往返于PCIe设备(例如,NIC 24)的DMA事务。ATS还使得PCIe设备能够以相同方式对VM 42执行DMA事务。如果接收环30存储在NIC 24中的片上存储器26上,那么NIC 24可访问接收环30而不执行DMA事务。
VF驱动器44可将描述符0写入接收环30中的第一条目130(方框148)。如图5中所描绘,描述符0可尤其包括是指定用于存储分组0的接收缓冲区的虚拟位置的客户总线地址74。在这个时间期间,NIC 24继续针对新描述符132监测接收环30(方框146)。大约在这个时间,NIC 24可确定(方框150)已将描述符0写入接收环30。在那种情况中,NIC 24可尝试检索和/或请求客户总线地址0(例如,描述符0中所含的客户总线地址74)的转换。NIC 24最终可接收客户总线地址0的已转换物理地址。
一旦将描述符0写入接收环30,VF驱动器44可通过写入NIC 24的门铃寄存器154中来通知(方框152)NIC 24。门铃寄存器154是NIC 24的寄存器,该寄存器使得软件(例如,VF驱动器44)能够写入寄存器使得通知NIC 24已将一个或更多个分组写入接收环30。在NIC24从VF驱动器44中接收到(方框156)该通知之后,NIC 24可从接收环30中读取(方框158)描述符0。替代地,NIC 24可确定其在从接收环30中读取(方框158)描述符0之前就已接收到这些客户总线地址74的这些已转换物理地址。当传入的分组94到达(方框160)NIC 24时,NIC24可将分组94写入(方框162)被分配在主存储器16中用于接收该传入的分组94的接收缓冲区144。VF驱动器44因此接收(方框164)传入的分组94。
如上文所讨论,NIC 24可发起对这些未转换客户总线地址的存储器事务,从而引起I/O故障和转换请求。在接收数据的过程140导致一个或更多个客户总线地址74保持未转换的情况中,仍然可发生对未转换总线地址74的存储器事务的发起。然而,应设想到,上述传输数据的过程140可减小或消除由对这些未转换总线地址74发起这些存储器事务引起的延时。
此外,一些实施例可使用定向I/O支持技术的地址转换缓存特征来进一步改进接收数据的过程140的延时和总性能特性。例如,PCIe支持ATC特征以缓存并且再用地址转换。这尤其可有利于重复使用的公共客户总线地址74。
现在转向图7,展示根据一个实施例的发送数据的方法180的流程图。NIC 24可确定(节点182)是否已从VF驱动器44接收到已将一个或更多个分组94写入发送环28的通知。如果NIC 24确定没有接收到该通知,那么NIC 24可针对新描述符72监测(方框184)发送环28。NIC 24能够通过使用由SR-IOV提供的ATS监测存储在主存储器16上的发送环28。具体地,ATS使得VM 42能够通过使用查找表将虚拟地址映射至对应的物理地址来执行往返于PCIe设备(例如,NIC 24)的直接存储器访问(DMA)事务。ATS还使得PCIe设备能够以相同方式对VM 42执行DMA事务。如果发送环28存储在NIC 24中的片上存储器26上,那么NIC 24可访问发送环28而不执行DMA事务。
NIC 24可确定(节点186)是否已将新描述符72写入发送环28。如果没有,那么方法180可返回至节点182。如果NIC 24确定已将新描述符72写入发送环28,那么NIC 24可接着确定(节点188)是否已缓存新描述符72的客户总线地址74的转换。如果已缓存,那么NIC 24可读取(方框190)客户总线地址74的已缓存转换,且方法180可继续进行至节点182。如果没有缓存客户总线地址74的转换,那么NIC 24可尝试检索和/或请求(方框192)客户总线地址74的转换。NIC 24可接着缓存(方框194)客户总线地址74的转换。在一些实施例中,如果将该地址确定为可重复使用的公共客户总线地址74,那么NIC 24可仅仅缓存客户总线地址74的转换。在一些实施例中,仅仅在已确定存在阈值量的存储器资源来允许缓存客户总线地址74的转换之后,NIC 24方可仅仅缓存客户总线地址74的转换。方法180可接着继续进行至节点182。
如果NIC 24确定(节点182)已从VF驱动器44中接收到已将一个或更多个分组94写入发送环28的通知,那么NIC 24可读取(方框196)发送环28中的描述符72。NIC 24可接着读取(方框198)位于这些客户总线地址74处的数据片段。对于保持未转换的这些客户总线地址74,读取操作可导致I/O故障,继而尝试检索和/或请求转换这些未转换客户总线地址74。这可引起可负面地影响网络性能的延时。已经转换的客户总线地址74由于它们是在适宜时间(例如,当VF驱动器44将一个或更多个分组处理至发送环28中时)转换而不会引起另外的延时。
现在转向图8,展示根据一个实施例的接收数据的方法210的流程图。NIC 24可针对新描述符132监测(方框212)接收环30。NIC 24能够通过使用由SR-IOV提供的ATS监测存储在主存储器16上的接收环30。具体地,ATS使得VM 42能够通过使用查找表将虚拟地址映射至对应的物理地址来执行往返于PCIe设备(例如,NIC 24)的直接存储器访问(DMA)事务。ATS还使得PCIe设备能够以相同方式对VM 42执行DMA事务。如果接收环30存储在NIC 24中的片上存储器26上,那么NIC 24可访问接收环30而不执行DMA事务。
NIC 24可确定(节点214)是否已将新描述符132写入接收环30。如果没有,那么方法210可返回至节点212。如果NIC 24确定已将新描述符132已写入接收环30,那么NIC 24可接着确定(节点216)是否已缓存新描述符132的客户总线地址74的转换。如果已缓存,那么NIC 24可读取(方框218)客户总线地址74的已缓存转换,且方法180可继续进行至方框224。如果没有缓存客户总线地址74的转换,那么NIC 24可尝试检索和/或请求(方框220)客户总线地址74的转换。NIC 24可接着缓存(方框222)客户总线地址74的转换。在一些实施例中,如果将该地址确定为可重复使用的公共客户总线地址74,那么NIC 24可仅仅缓存客户总线地址74的转换。在一些实施例中,仅仅在已确定存在阈值量的存储器资源来允许缓存客户总线地址74的转换之后,NIC 24方可仅仅缓存客户总线地址74的转换。方法180可接着继续进行至方框224。
NIC 24可接着读取(方框224)新描述符132。NIC 24可确定(节点226)分组94是否已到达。如果没有,那么该方框可返回至方框212并且继续针对新描述符132监测接收环30。如果NIC 24确定分组94已到达,那么NIC 24可将该分组写入(方框228)已转换的客户总线地址。在适宜时间(例如,当VF驱动器44正将描述符写入接收环30或通知NIC 24在分组94到达之前接收环30中存在新描述符132时)执行客户总线地址74的转换可消除由在读取描述符132之后或在分组94到达之后请求转换引起的延时,因此增强了网络性能。
虽然本公开中陈述的实施例可允许各种修改和替代形式,但是已在附图中通过实例示出且在本文中详细描述了具体实施例。然而,应当理解的是,本公开并不希望限于所公开的具体形式。本公开将涵盖属于由所附权利要求书定义的本公开的精神和范围的所有修改、等效和替代。
Claims (20)
1.一种用于地址转换的方法,包括:
使用网络接口控制器监测发送环,其中所述发送环包括存储多个描述符的圆形环数据结构,其中,描述符描述数据分组的片段并包括提供所述数据分组的片段的虚拟存储位置的客户总线地址;
基于监测所述发送环,使用所述网络接口控制器确定已将描述第一数据分组的第一片段的第一描述符写入所述发送环;
响应于确定所述第一描述符已被写入所述发送环,使用所述网络接口控制器尝试检索所述第一描述符的第一客户总线地址的第一转换,同时描述所述第一数据分组的第二片段的第二描述符被写入所述发送环;
使用所述网络接口控制器确定所述第二描述符已被写入所述发送环;
响应于确定所述第二描述符已被写入所述发送环,使用所述网络接口控制器尝试检索所述第二描述符的第二客户总线地址的第二转换;以及
使用所述网络接口控制器从所述发送环读取所述第一描述符和所述第二描述符。
2.根据权利要求1所述的方法,其中所述发送环存储在主存储器上。
3.根据权利要求1所述的方法,其中,使用所述网络接口控制器尝试检索所述第一客户总线地址的第一转换发生在使用所述网络接口控制器接收已将所述数据分组写入所述发送环的通知之前。
4.根据权利要求1所述的方法,其中,使用所述网络接口控制器尝试检索所述第一客户总线地址的第一转换包括:
使用所述网络接口控制器确定是否已缓存所述第一客户总线地址的第一转换;
响应于确定已缓存所述第一转换,使用所述网络接口控制器从缓存读取所述第一转换;以及
响应于确定还没有缓存所述第一转换,使用所述网络接口控制器请求所述第一客户总线地址的所述第一转换。
5.根据权利要求1所述的方法,包括:
响应于所述网络接口控制器没有检索到所述第一客户总线地址的第一转换,使用所述网络接口控制器发起对未转换的客户总线地址的存储器事务。
6.根据权利要求1所述的方法,其中,使用所述网络接口控制器监测所述发送环包括所述网络接口控制器使用单根输入/输出虚拟化。
7.根据权利要求1所述的方法,其中所述网络接口控制器是输入/输出总线互连设备。
8.一种用于地址转换的方法,包括:
使用网络接口控制器监测接收环,其中所述接收环包括存储多个描述符的圆形环数据结构,其中,描述符描述数据分组的片段并且包括提供所述数据分组的片段的虚拟存储位置的客户总线地址;
基于监测所述接收环,使用所述网络接口控制器确定已将所述描述符写入所述接收环;
响应于确定所述描述符已被写入所述接收环,使用所述网络接口控制器尝试检索所述描述符的所述客户总线地址的转换,同时描述所述数据分组的额外片段的额外描述符被写入所述接收环;以及
使用所述网络接口控制器从所述接收环读取所述描述符。
9.根据权利要求8所述的方法,其中所述接收环存储在网络接口控制器的存储器上。
10.根据权利要求8所述的方法,其中使用所述网络接口控制器尝试检索所述客户总线地址的转换发生在使用所述网络接口控制器接收已将所述数据分组写入所述接收环的通知之前。
11.根据权利要求8所述的方法,其中,使用所述网络接口控制器尝试检索所述客户总线地址的转换包括:
使用所述网络接口控制器确定是否已缓存所述客户总线地址的转换;
响应于确定已缓存所述转换,使用所述网络接口控制器从缓存读取所述转换;以及
响应于确定还没缓存所述转换,使用所述网络接口控制器请求所述客户总线地址的所述转换。
12.根据权利要求8所述的方法,包括:
响应于所述网络接口控制器没有检索到所述客户总线地址的转换,使用所述网络接口控制器发起对未转换的客户总线地址的存储器事务。
13.根据权利要求8所述的方法,其中,使用所述网络接口控制器监测所述接收环包括所述网络接口控制器使用单根输入/输出虚拟化。
14.根据权利要求8所述的方法,其中所述网络接口控制器是外围组件互连高速3.0或后续设备。
15.一种有形、非瞬态机器可读介质,包括机器可读指令以:
监测存储多个描述符的圆形环数据结构,其中,描述符描述数据分组的片段并包括提供所述数据分组的片段的虚拟存储位置的客户总线地址;
基于监测所述圆形环数据结构,确定已将所述描述符写入所述圆形环数据结构;
响应于确定所述描述符已被写入所述圆形环数据结构,确定何时已缓存所述描述符的所述客户总线地址的转换;
响应于确定描述所述数据分组的额外片段的额外描述符被写入所述圆形环数据结构时已缓存所述转换,读取所述转换;
响应于确定描述所述数据分组的额外片段的所述额外描述符被写入所述圆形环数据结构时未缓存所述转换,请求所述客户总线地址的所述转换;以及
从所述圆形环数据结构读取所述描述符。
16.根据权利要求15所述的机器可读介质,包括用于响应于没有接收到所述转换,发起对未转换的客户总线地址的存储器事务的机器可读指令。
17.根据权利要求15所述的机器可读介质,包括用于接收已将一个或更多个数据分组写入所述圆形环数据结构的通知的机器可读指令。
18.根据权利要求15所述的机器可读介质,包括用于缓存已转换的客户总线地址的机器可读指令。
19.根据权利要求15所述的机器可读介质,其中,用于监测圆形环的机器可读指令由网络接口控制器使用单根输入/输出虚拟化执行。
20.根据权利要求19所述的机器可读介质,其中所述网络接口控制器是因特尔快速通道互连设备。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/873,007 US10216533B2 (en) | 2015-10-01 | 2015-10-01 | Efficient virtual I/O address translation |
US14/873,007 | 2015-10-01 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106560791A CN106560791A (zh) | 2017-04-12 |
CN106560791B true CN106560791B (zh) | 2020-10-27 |
Family
ID=57391739
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610876727.5A Active CN106560791B (zh) | 2015-10-01 | 2016-10-08 | 高效虚拟i/o地址转换 |
Country Status (3)
Country | Link |
---|---|
US (2) | US10216533B2 (zh) |
EP (1) | EP3163452B1 (zh) |
CN (1) | CN106560791B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11150928B2 (en) * | 2016-06-08 | 2021-10-19 | Red Hat Israel, Ltd. | Hypervisor translation bypass |
CN107005495B (zh) | 2017-01-20 | 2020-03-27 | 华为技术有限公司 | 用于转发数据包的方法、网卡、主机设备和计算机系统 |
US10540294B2 (en) * | 2017-02-17 | 2020-01-21 | Red Hat Israel, Ltd. | Secure zero-copy packet forwarding |
CN109542581B (zh) * | 2017-09-22 | 2020-10-13 | 深圳市中兴微电子技术有限公司 | 一种设备共享方法、装置及存储介质 |
US10834009B2 (en) | 2019-03-18 | 2020-11-10 | Intel Corporation | Systems and methods for predictive scheduling and rate limiting |
DE112020002497T5 (de) | 2019-05-23 | 2022-04-28 | Hewlett Packard Enterprise Development Lp | System und verfahren zur dynamischen zuweisung von reduktionsmotoren |
US20220188167A1 (en) * | 2020-12-14 | 2022-06-16 | Dell Products, Lp | System and method to adapt memory usage of containerized workspaces |
US20220086226A1 (en) * | 2021-01-15 | 2022-03-17 | Intel Corporation | Virtual device portability |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101046774A (zh) * | 2006-03-28 | 2007-10-03 | 国际商业机器公司 | 使用替代页池管理dma写入页错误的计算机实现方法和装置 |
CN101165667A (zh) * | 2006-10-17 | 2008-04-23 | 国际商业机器公司 | 用于在数据处理系统中管理地址转换的方法和装置 |
CN102103517A (zh) * | 2009-12-22 | 2011-06-22 | 英特尔公司 | 高效嵌套虚拟化 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6925547B2 (en) * | 2000-12-14 | 2005-08-02 | Silicon Graphics, Inc. | Remote address translation in a multiprocessor system |
US6839808B2 (en) * | 2001-07-06 | 2005-01-04 | Juniper Networks, Inc. | Processing cluster having multiple compute engines and shared tier one caches |
US7620753B1 (en) * | 2005-03-17 | 2009-11-17 | Apple Inc. | Lockless access to a ring buffer |
US20060236011A1 (en) | 2005-04-15 | 2006-10-19 | Charles Narad | Ring management |
US7506084B2 (en) * | 2006-10-17 | 2009-03-17 | International Business Machines Corporation | Method for communicating with an I/O adapter using cached address translations |
US7587575B2 (en) | 2006-10-17 | 2009-09-08 | International Business Machines Corporation | Communicating with a memory registration enabled adapter using cached address translations |
US9256560B2 (en) * | 2009-07-29 | 2016-02-09 | Solarflare Communications, Inc. | Controller integration |
CN102650976B (zh) * | 2012-04-01 | 2014-07-09 | 中国科学院计算技术研究所 | 一种支持单根io虚拟化用户级接口控制装置及其方法 |
US9424199B2 (en) | 2012-08-29 | 2016-08-23 | Advanced Micro Devices, Inc. | Virtual input/output memory management unit within a guest virtual machine |
US9317444B2 (en) * | 2013-03-15 | 2016-04-19 | Vmware, Inc. | Latency reduction for direct memory access operations involving address translation |
US10394751B2 (en) * | 2013-11-06 | 2019-08-27 | Solarflare Communications, Inc. | Programmed input/output mode |
-
2015
- 2015-10-01 US US14/873,007 patent/US10216533B2/en active Active
-
2016
- 2016-09-30 EP EP16191770.3A patent/EP3163452B1/en active Active
- 2016-10-08 CN CN201610876727.5A patent/CN106560791B/zh active Active
-
2019
- 2019-02-04 US US16/267,356 patent/US10713083B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101046774A (zh) * | 2006-03-28 | 2007-10-03 | 国际商业机器公司 | 使用替代页池管理dma写入页错误的计算机实现方法和装置 |
CN101165667A (zh) * | 2006-10-17 | 2008-04-23 | 国际商业机器公司 | 用于在数据处理系统中管理地址转换的方法和装置 |
CN102103517A (zh) * | 2009-12-22 | 2011-06-22 | 英特尔公司 | 高效嵌套虚拟化 |
Also Published As
Publication number | Publication date |
---|---|
EP3163452A1 (en) | 2017-05-03 |
US20170097840A1 (en) | 2017-04-06 |
EP3163452B1 (en) | 2018-06-06 |
US10713083B2 (en) | 2020-07-14 |
US10216533B2 (en) | 2019-02-26 |
US20190243675A1 (en) | 2019-08-08 |
CN106560791A (zh) | 2017-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106560791B (zh) | 高效虚拟i/o地址转换 | |
US9003082B2 (en) | Information processing apparatus, arithmetic device, and information transferring method | |
US10853277B2 (en) | Systems and methods for isolating input/output computing resources | |
JP6328134B2 (ja) | クラスタ化されたコンピュータ・システムで通信チャネルのフェイルオーバを実行する方法、装置、およびプログラム | |
US20210216453A1 (en) | Systems and methods for input/output computing resource control | |
US8250254B2 (en) | Offloading input/output (I/O) virtualization operations to a processor | |
US11620233B1 (en) | Memory data migration hardware | |
US9632901B2 (en) | Page resolution status reporting | |
US8996774B2 (en) | Performing emulated message signaled interrupt handling | |
US10310759B2 (en) | Use efficiency of platform memory resources through firmware managed I/O translation table paging | |
US10241923B2 (en) | Configurable I/O address translation data structure | |
US20140244965A1 (en) | Method and system for simplified address translation support for static infiniband host channel adaptor structures | |
US11042495B2 (en) | Providing interrupts from an input-output memory management unit to guest operating systems | |
EP3980885A1 (en) | Guest operating system buffer and log access by an input-output memory management unit | |
US6961837B2 (en) | Method and apparatus for address translation pre-fetch | |
US9678887B2 (en) | Flexible I/O DMA address allocation in virtualized systems |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |