专利名称:一种支持单根io虚拟化用户级接口控制装置及其方法
技术领域:
本发明涉及i/o虚拟化技术,尤其涉及计算机互联中的用户级通信接口技术,涉及服务器系统中的网络接口控制器技术。
背景技术:
服务器系统的性能由其计算能力和通信能力两部分共同决定。随着服务器系统中处理器数量的不断增加,以及单个处理器性能的不断提高,对其通信的性能提出了更高的要求。通信性能的提高与网络接口控制器的设计紧密相关。网络接口控制器是指用于连接处理器到互连网络并具有一定网络处理能力的硬件设备。由于网络接口控制器位于处理器和互连网络之间,它的性能决定了处理器和互连网络之间的连接效率。实现用户级通信接口是提高网络接口控制器性能的重要途径之一。通过用户级通信接口,应用程序可以实现对网络接口控制器硬件的直接访问,从而消除操作系统转发引入的通信开销,大大提高通信的效率。然而随着云计算的快速发展,虚拟化技术得到了广泛的使用。单台服务器上需要承载若干虚拟机的运行,相应的,网络接口控制器被若干虚拟机共享使用。但是虚拟机运行的客户操作系统(Guest OS)之间拥有不同的地址空间,使得传统网络接口控制器无法被各个客户操作系统直接共享访问。其提供的通信接口必须需要虚拟控制器层(Hypervisor)的仲裁和地址重新映射,最终导致用户级通信的效率无法发挥。因此,新型网络接口控制器需要实现用户级通信接口技术与虚拟化技术的有效结合,才能适应云计算中对高性能网络通信的需求。
发明内容
为解决上述问题,本发明提供了一种支持单根IO虚拟化用户级接口控制装置及方法,目的是本发明在实现被多个虚拟机直接访问的同时,还为虚拟机上运行的应用程序提供灵活高效的用户级通信接口 ;若干虚拟机对网络进行共享访问时,本发明的网络接口控制器可以满足虚拟机对网络访问的服务质量(QoS)要求。本发明公开一种支持单根IO虚拟化用户级接口控制装置,包括系统总线接口模块,用于对所述装置与处理器之间的数据传输,实现符合PCIExpress协议的事务层,数据链路层,和物理层功能;操作模块,用于实现设备配置空间,以及虚功能VF的通信接口 QP与操作队列OQ资源之间的映射,使用门铃机制对QP进行直接访问,其包含M个操作队列,所述MS I ;DMA模块,用于根据DMA引擎的空闲情况,对DMA引擎进行映射,所述DMA弓丨擎进行数据的发送与接收;网络包分发仲裁模块,用于接收DMA引擎发出的网络包,将不同的DMA引擎的网络包进行仲裁选择发送,同时接收网络中的网络包,发送至DMA引擎进行处理。所述的支持单根IO虚拟化用户级接口控制装置,所述操作模块还包括
操作队列映射模块,用于对所述设备配置空间中的一个物理功能PF配置空间和N个虚功能VF配置空间,实现虚功能VF的通信接口 QP与操作队列OQ资源之间的映射;操作队列模块,用于将M个操作队列缓存每个虚功能VF的通信接口 QP的DMA门铃,并且供DMA模块读取后分配给DMA引擎使用,每个操作队列由一个FIFO组成。所述的支持单根IO虚拟化用户级接口控制装置,包括所述通信接口 QP,为所述装置与通信进程之间的接口,用于实现用户级通信,每个虚功能均包含Q个QP,每个通信进 程独占一个QP,并使用门铃机制对QP的直接访问,向所述装置发起DMA操作请求。所述的支持单根IO虚拟化用户级接口控制装置,包括所述门铃机制,门铃由DMA描述符的内存首地址和DMA描述符的长度组成;通信进程将门铃写入通信接口 QP用户控制页面中的门铃地址寄存器,收到门铃写入动作后,从门铃携带的DMA地址中读取完整的DMA描述符,启动相应的DMA操作。所述的支持单根IO虚拟化用户级接口控制装置,所述操作队列映射模块还包括设备配置空间子模块,用于物理功能PF配置空间和虚功能VF配置空间,在虚功能VF基址寄存器对应的存储空间包含Q个通信接口 QP所需的用户控制页面和系统控制页面信息,所述Q彡I ;映射子模块,用于将收到的DMA门铃、虚功能VF和通信接口 QP,写入到操作队列中,该模块使用的仲裁算法,在满足上层软件对QoS需求的同时,还要实现对M个操作队列的公平使用。所述的支持单根IO虚拟化用户级接口控制装置,所述设备配置空间子模块还包括所述虚功能VF基址寄存器对应的用户控制页面信息,将存储虚功能中通信队列QP私有相关配置,其中,门铃地址寄存器,只写,64位,通信进程通过将DMA描述符所在的内存地址写入该寄存器,来启动一次DMA操作;流控更新寄存器,只写,I位,通信进程每写一次该寄存器,表示增加S个门铃,其中S是该用户级接口控制装置与上层驱动软件协定的、每次增加的门铃数目,S的具体取值在虚功能VF基址寄存器对应的系统控制页面信息控制页面中的流控粒度寄存器获得;接收数据地址寄存器,可读可写,64位,通信进程在内存中开辟的接收数据缓冲区首地址;发送完成事件地址寄存器,可读可写,64位,通信进程在内存中开辟的发送完成事件缓冲区首地址;接收完成事件地址寄存器,可读可写,64位,通信进程在内存中开辟的接收完成事件缓冲区首地址。所述的支持单根IO虚拟化用户级接口控制装置,所述设备配置空间子模块还包括所述虚功能VF基址寄存器对应的系统控制页面信息,将存储虚功能VF中通信队列QP公有相关配置,其中,接收完成事件缓冲区深度,32位,可读可写,配置接收完成事件缓冲区深度;
发送完成事件缓冲区深度,32位,可读可写,配置发送完成事件缓冲区深度;流控粒度寄存器,32位,可读可写,配置每次更新的门铃数量;VF优先级寄存器,32位,可读可写,配置当前虚功能DMA请求的优先级;QP状态寄存器,Q位,只读,每个QP对应I位,用来表示对应QP的状态,O为未初始化,I为已初始化。所述的支持单根IO虚拟化用户级接口控制装置,所述映射子模块还包括
根据VF优先级寄存器中记录的优先级进行仲裁,将获得仲裁的DMA请求写入存储DMA请求数目最少的操作队列。所述的支持单根IO虚拟化用户级接口控制装置,所述DMA模块还包括DMA引擎映射模块,用于根据DMA引擎的空闲情况,将M个操作队列中的DMA门铃分配给P个DMA引擎,具有较高优先级的门铃将被优先分配,其中P是DMA引擎模块中实现的DMA引擎的数目;DMA引擎模块,用于将P个DMA引擎对DMA门铃进行并行处理,对数据进行发送和接收。所述的支持单根IO虚拟化用户级接口控制装置,所述DMA引擎模块还包括DMA下传模块,用于数据发送过程,根据门铃机制读取DMA描述符,进而根据DMA描述符的内容,读取需要传输的数据和控制信息,再将数据打包成网络包发出,网络包发送完成后,再根据操作队列中存储的虚功能VF和通信接口 QP,在设备配置空间中读取对应通信接口 QP的发送完成事件地址寄存器,向发送完成事件缓冲区中写入发送完成事件;DMA上传模块,用于数据接收过程,根据网络包携带的虚功能VF和通信接口 QP,在设备配置空间中读取对应通信接口 QP的接收数据地址寄存器和接收完成事件地址寄存器,将数据写入接收数据缓冲区中,待数据均写入缓冲区后,再将接收完成事件写入接收完成事件缓冲区中。本发明公开一种支持单根IO虚拟化用户级接口控制方法,包括步骤1,对支持单根IO虚拟化用户级接口控制装置与处理器之间数据进行传输,实现符合PCI Express协议的事务层,数据链路层,和物理层功能;步骤2,实现设备配置空间,以及虚功能VF的通信接口 QP与操作队列OQ资源之间的映射,使用门铃机制对QP进行直接访问,其包含M个操作队列,所述M > I ;步骤3,根据DMA引擎的空闲情况,对DMA引擎进行映射,所述DMA引擎进行数据的发送与接收;步骤4,接收DMA引擎发出的网络包,将不同的DMA引擎的网络包进行仲裁选择发送,同时接收网络中的网络包,发送至DMA引擎进行处理。所述的支持单根IO虚拟化用户级接口控制方法,所述步骤2还包括步骤21,对所述设备配置空间中的一个物理功能PF配置空间和N个虚功能VF配置空间,实现虚功能VF的通信接口 QP与操作队列OQ资源之间的映射;步骤22,将M个操作队列缓存每个虚功能VF的通信接口 QP的DMA门铃,并且供DMA模块读取后分配给DMA引擎使用,每个操作队列由一个FIFO组成。所述的支持单根IO虚拟化用户级接口控制方法,包括所述通信接口 QP,为所述装置与通信进程之间的接口,用于实现用户级通信,每个虚功能均包含Q个QP,每个通信进程独占一个QP,并使用门铃机制对QP的直接访问,向所述装置发起DMA操作请求。所述的支持单根IO虚拟化用户级接口控制方法,包括所述门铃机制,门铃由DMA描述符的内存首地址和DMA描述符的长度组成;通信进程将门铃写入通信接口 QP用户控制页面中的门铃地址寄存器,收到门铃写入动作后,从门铃携带的DMA地址中读取完整的DMA描述符,启动相应的DMA操作。所述的支持单根IO虚拟化用户级接口控制方法,所述步骤21还包括步骤23,物理功能PF配置空间和虚功能VF配置空间,在虚功能VF基址寄存器对应的存储空间包含Q个通信接口 QP所需的用户控制页面和系统控制页面信息,所述QS I ;
步骤24,将收到的DMA门铃、虚功能VF和通信接口 QP,写入到操作队列中,该模块使用的仲裁算法,在满足上层软件对QoS需求的同时,还要实现对M个操作队列的公平使用。所述的支持单根IO虚拟化用户级接口控制方法,所述步骤23还包括所述虚功能VF基址寄存器对应的用户控制页面信息,将存储虚功能中通信队列QP私有相关配置,其中,门铃地址寄存器,只写,64位,通信进程通过将DMA描述符所在的内存地址写入该寄存器,来启动一次DMA操作;流控更新寄存器,只写,I位,通信进程每写一次该寄存器,表示增加S个门铃,其中S是该用户级接口控制装置与上层驱动软件协定的、每次增加的门铃数目,S的具体取值在虚功能VF基址寄存器对应的系统控制页面信息控制页面中的流控粒度寄存器获得;接收数据地址寄存器,可读可写,64位,通信进程在内存中开辟的接收数据缓冲区首地址;发送完成事件地址寄存器,可读可写,64位,通信进程在内存中开辟的发送完成事件缓冲区首地址;接收完成事件地址寄存器,可读可写,64位,通信进程在内存中开辟的接收完成事件缓冲区首地址。所述的支持单根IO虚拟化用户级接口控制方法,所述步骤23还包括所述虚功能VF基址寄存器对应的系统控制页面信息,将存储虚功能VF中通信队列QP公有相关配置,其中,接收完成事件缓冲区深度,32位,可读可写,配置接收完成事件缓冲区深度;发送完成事件缓冲区深度,32位,可读可写,配置发送完成事件缓冲区深度;流控粒度寄存器,32位,可读可写,配置每次更新的门铃数量;VF优先级寄存器,32位,可读可写,配置当前虚功能DMA请求的优先级;QP状态寄存器,Q位,只读,每个QP对应I位,用来表示对应QP的状态,O为未初始化,I为已初始化。所述的支持单根IO虚拟化用户级接口控制方法,所述步骤24还包括根据VF优先级寄存器中记录的优先级进行仲裁,将获得仲裁的DMA请求写入存储DMA请求数目最少的操作队列。所述的支持单根IO虚拟化用户级接口控制方法,所述步骤3还包括
步骤31,根据DMA弓丨擎的空闲情况,将M个操作队列中的DMA门铃分配给P个DMA引擎,具有较高优先级的门铃将被优先分配,其中P是DMA引擎模块中实现的DMA引擎的数目;步骤32,将P个DMA引擎对DMA门铃进行并行处理,对数据进行发送和接收。所述的支持单根IO虚拟化用户级接口控制方法,所述步骤32还包括步骤33,数据发送过程,所述数据是指从主机内存读取并发往网络的数据,根据门铃机制读取DMA描述符,进而根据DMA描述符的内容,读取需要传输的数据和控制信息,再将数据打包成网络包发出,网络包发送完成后,再根据操作队列中存储的虚功能VF和通信接口 QP,在设备配置空间中读取对应通信接口 QP的发送完成事件地址寄存器,向发送完成事件缓冲区中写入发送完成事件;步骤34,数据接收过程,所述数据是指从网络中获取并写入主机内存的数据,根据 网络包携带的虚功能VF和通信接口 QP,在设备配置空间中读取对应通信接口 QP的接收数据地址寄存器和接收完成事件地址寄存器,将数据写入接收数据缓冲区中,待数据均写入缓冲区后,再将接收完成事件写入接收完成事件缓冲区中。本发明的有益效果为本发明提出的网络接口控制器,实现用户级通信接口和单根虚拟化技术的融合,可为每个虚拟机提供高效的用户级通信接口,满足服务器系统中对高速网络通信的需求。本发明首先提出了一种高效的用户级通信接口设计,为通信效率提供保障。然后在该接口的基础上,实现了基于硬件的单根虚拟化技术(SR-I0V:Sing Root IOVirtualization),客户虚拟机可以直通方式(Pass-through 10)访问设备,减少了虚拟控制器层(Hypervisor)的转发,使得每个客户操作系统(Guest OS)都能直接使用其独占的用户级通信接口,充分发挥了用户级通信接口的性能。
图I为本发明的设备结构图;图2为本发明操作队列映射模块结构;图3为本发明门铃结构;图4为本发明设备配置空间子模块;图5为本发明用户控制页面结构;图6为本发明系统控制页面结构;图7为本发明初始化流程图;图8为本发明发送流程图;图9为本发明接收流程图;图10为本发明支持单根10虚拟化用户级接口控制方法流程图。
具体实施例方式下面给出本发明的具体实施方式
,结合附图对本发明做出了详细描述。本发明提供了一种支持单根10虚拟化(SR-I0V :Single Root 10 Virtualization),且提供用户级通信接口的网络接口控制器,并给出其使用方法。本发明的网络接口控制器在实现被多个虚拟机直接访问的同时,还为虚拟机上运行的应用程序提供灵活高效的用户级通信接口 ;若干虚拟机对网络进行共享访问时,本发明的网络接口控制器可以满足虚拟机对网络访问的服务质量(QoS)要求。为了达到客户虚拟机对于设备的直通方式(Pass-through 10)访问,在设备物理功能PF(Physical Function)的基础上,实现了多个虚功能VF (Virtual Function),每个虚功能都包含必要的硬件资源,以支持虚拟机对设备的直接访问和使用。实现网络接口控制器虚功能VF与用户级通信接口间的灵活映射,是本发明的核心内容之一。本发明中涉及的物理功能PF和虚功能VF功能均符合PCI-SIG (PCI特别兴趣组织)的SR-IOV标准。所述设备由以下几个模块组成PCIe系统总线接口模块,操作模块,DMA模块,网络包分发仲裁模块。如图I所示。所述系统总线接口模块,负责网络接口控制器与处理器间的数据传输,除不包含设备配置空间(Configuration Space)外,完整实现了符合PCI Express协议的事务层 (Transaction Layer),数据链路层(Data link Layer),和物理层(Physical Layer)。操作模块,用于实现设备配置空间,以及虚功能VF的通信接口 QP与操作队列OQ资源之间的映射,使用门铃机制对QP进行直接访问,其包含M个操作队列,所述MS I ;DMA模块,用于根据DMA引擎的空闲情况,对DMA引擎进行映射,所述DMA引擎进行数据的发送与接收;所述操作队列映射模块,实现设备配置空间,包括I个物理功能PF配置空间和N个虚功能配置空间;实现虚功能中的通信接口(QP:Queue Pair)与网络接口控制器中操作队列(0Q :0peration Queue)资源之间的映射。其结构如图2所示,由设备配置空间子模块和映射子模块组成。所述操作队列映射模块中的通信接口 QP,是网络接口控制器与通信进程间的接口,用于实现用户级通信。每个虚功能均包含Q(Q为通信接口 QP的总数目)个QP,每个通信进程独占一个QP,并使用门铃机制对QP的直接访问,向网络接口控制器发起DMA操作请求(无需操作系统参与)。所述门铃机制,如图3所示,门铃由DMA(直接内存访问Direct Memory Access)描述符的内存首地址和DMA描述符的长度组成;通信进程将门铃写入QP用户控制页面中的门铃地址寄存器,本发明的网络接口控制器收到门铃写入动作后,即从门铃携带的内存地址中读取完整的DMA描述符,启动相应的DMA操作。所述操作队列映射模块中的设备配置空间子模块,包括I个PCIe Endpoint (PCIe端点设备)物理功能PF配置空间和N个虚功能的配置空间。设备配置空间子模块结构如图4所示,物理功能配置空间和虚功能配置空间结构均符合标准PCI-Express协议。在虚功能VF基址寄存器(BAR:Basic Address Register)的功能定义上BAR O对应的存储空间包含Q个QP所需的用户控制页面信息;BAR I对应的存储空间包含Q个QP所需的系统控制页面信息。所述虚功能VF BAR O对应的用户控制页面结构如图5所示,用于存储虚功能中QP私有的配置信息,包括I、门铃地址寄存器只写,64位,通信进程通过将DMA描述符所在的内存地址写入该寄存器,来启动一次DMA操作;
2、流控更新寄存器只写,I位,通信进程每写一次该寄存器,表示增加S个“门铃”,S在BAR I系统控制页面中的流控粒度寄存器获得;3、接收数据地址寄存器可读可写,64位,通信进程在内存中开辟的接收数据缓冲区首地址;4、发送完成事件地址寄存器可读可写,64位,通信进程在内存中开辟的发送完成事件缓冲区首地址;
5、接收完成事件地址寄存器可读可写,64位,通信进程在内存中开辟的接收完成事件缓冲区首地址。所述虚功能VF BAR I对应的系统控制页面结构如图6所不,用于存储虚功能中所有QP公用的配置信息,包括I、接收完成事件缓冲区深度32位,可读可写,配置接收完成事件缓冲区深度;2、发送完成事件缓冲区深度32位,可读可写,配置发送完成事件缓冲区深度;3、流控粒度寄存器32位,可读可写,配置每次更新的“门铃”数量;4、VF优先级寄存器32位,可读可写,配置当前虚功能DMA请求的优先级;5、QP状态寄存器Q位,只读,每个QP对应I位,用来表示对应QP的状态,O为未初始化,I为已初始化。所述操作队列映射模块中的映射子模块,将收到的DMA门铃机制、VF号和QP号,写入到合适的操作队列中。映射子模块使用的仲裁算法,在满足上层软件对QoS需求的同时,还要实现对M个操作队列的公平使用,因此映射子模块根据VF优先级寄存器中记录的优先级进行仲裁,将获得仲裁的DMA请求写入存储DMA请求数目最少的操作队列。所述操作队列模块,共包含M个操作队列,操作队列缓存来自各个虚功能QP的DMA门铃,并供DMA引擎映射模块读取后分配给DMA引擎使用,每个操作队列由一个FIFO组成。所述DMA弓丨擎映射模块,根据DMA弓丨擎的空闲情况,将M个操作队列中的DMA门铃分配给P个DMA引擎,具有较高优先级的门铃将被优先分配。所述DMA弓丨擎模块,共包含P个DMA引擎,P个DMA引擎对DMA门铃进行并行处理。每个DMA引擎由DMA下传模块和DMA上传模块组成,本发明不限定DMA引擎的实现类型(如Scatter-Gather DMA)。所述DMA下传模块,负责数据发送过程,DMA下传模块根据门铃机制读取DMA描述符,进而根据DMA描述符的内容,读取需要传输的数据和控制信息,再将数据打包成网络包发出,网络包发送完成后,再根据操作队列中存储的VF号和QP号,在设备配置空间中读取对应QP的发送完成事件地址寄存器,向发送完成事件缓冲区中写入发送完成事件。所述DMA上传模块,负责数据接收过程,DMA上传模块根据网络包携带的VF号和QP号,在设备配置空间中读取对应QP的接收数据地址寄存器和接收完成事件地址寄存器,将数据写入接收数据缓冲区中,待数据均写入缓冲区后,再将接收完成事件写入接收完成事件缓冲区中。所述网络包分发仲裁模块,负责接收DMA引擎发出的网络包,将来自不同DMA引擎的网络包进行仲裁选择发送,同时也负责接收网络上的网络包,发送至合适的DMA引擎进行处理。本发明的实施过程将分解为初始化流程、发送流程和接收流程进行阐述。
初始化流程如图7所示,包括进行数据传输之前,由BIOS和驱动配置网络接口控制器、以及由通信进程初始化QP的过程,具体过程是S701.系统的BIOS启动标准PCIe设备搜索过程,获取本发明的网络接口控制器相
关信息;S702.虚拟机控制器层(Hypervisor)的系统域Domain O启动对网络接口控制器物理功能PF和虚拟功能VF的配置;S703. Hypervisor的Domain O将一系列虚功能VF分配给各个虚拟机(GuestOS);S704.随着对虚功能的配置过程,南北桥芯片的10内存管理单元(I0MMU =Input/ output Memory Management Unit)建立宿主机物理地址与虚拟机物理地址的映射表;S705.基于步骤4建立的地址映射表,Guest OS对QP系统控制页面进行初始化,具体设计对QP系统控制页面中可写寄存器的配置;S706.用户进程建立,申请使用QP进行通信;S707.通过步骤4建立的IOMMU地址映射表,将用户进程发出的虚拟机物理地址转换为宿主机物理地址,对QP用户控制页面进行初始化,具体涉及对QP用户控制页面中可写寄存器的配置。步骤8.整个初始化流程结束,可以接收DMA请求。发送流程如图8所示,具体过程是S801.通信进程生成DMA描述符;S802.通信进程根据DMA描述符所在虚拟机物理地址和DMA描述符长度,构造门铃,并写入对应QP用户控制页面的门铃地址寄存器。在此步骤中,通信进程发出的门铃地址寄存器是虚拟机(Guest OS)物理地址,因此需要IOMMU将其转换为宿主机物理地址;S803.网络接口控制器将收到的门铃,以及虚功能VF号和QP号,写入合适的操作队列中缓存;S804.网络接口控制器将门铃、虚功能VF号和QP号从操作队列中取出,并提交给合适的DMA引擎处理;S805. DMA下传模块根据门铃的内容,从内存中读取DMA描述符。在此步骤中,由于门铃中携带的是虚拟机物理地址,因此在从内存中读取DMA描述符的过程中,需要IOMMU将虚拟机物理地址转换为宿主机物理地址;S806. DMA下传模块根据DMA描述符中的内容,从内存中读取要发送的数据和相关控制信息。在此步骤中,由于DMA描述符中携带的是虚拟机物理地址,因此在从内存中读取数据和控制信息的过程中,需要IOMMU将虚拟机物理地址转换为宿主机物理地址;S807. DMA下载模块将要发送的数据,连同控制信息(如目的VF号和QP号),构造成网络包和发送完成事件;S808.将网络包发送至网络;S809.根据虚功能VF号和QP号,读取发送完成事件地址寄存器,将发送完成事件写入对应的内存地址中,此步骤不涉及虚拟机物理地址和宿主机物理地址间的转换。接收流程如图9所示,具体过程是S901.接收到网络包;
S902.将网络包分发至合适的DMA引擎处理;S903. DMA上传模块从网络包中解析出目的VF号和QP号;S904. DMA上传模块根据目的VF号和QP号,从设备配置空间模块中读取接收数据地址寄存器和接收完成事件地址寄存器的值;S905. DMA上传模块将网络包中的数据上传至接收数据缓冲区;S906. DMA上传模块在数据上传完成后,构造接收完成事件,并将其上传至接收完成事件缓冲区,接收流程结束。 如图10所示,本发明公开一种支持单根IO虚拟化用户级接口控制方法,包括步骤1,对支持单根IO虚拟化用户级接口控制装置与处理器之间数据进行传输,实现符合PCI Express协议的事务层,数据链路层,和物理层功能;步骤2,实现设备配置空间,以及虚功能VF的通信接口 QP与操作队列OQ资源之间的映射,使用门铃机制对QP进行直接访问,其包含M个操作队列,所述M > I ;步骤3,根据DMA引擎的空闲情况,对DMA引擎进行映射,所述DMA引擎进行数据的发送与接收;步骤4,接收DMA引擎发出的网络包,将不同的DMA引擎的网络包进行仲裁选择发送,同时接收网络中的网络包,发送至DMA引擎进行处理。所述的支持单根IO虚拟化用户级接口控制方法,所述步骤2还包括步骤21,对所述设备配置空间中的一个物理功能PF配置空间和N个虚功能VF配置空间,实现虚功能VF的通信接口 QP与操作队列OQ资源之间的映射;步骤22,将M个操作队列缓存每个虚功能VF的通信接口 QP的DMA门铃,并且供DMA模块读取后分配给DMA引擎使用,每个操作队列由一个FIFO组成。所述的支持单根IO虚拟化用户级接口控制方法,包括所述通信接口 QP,为所述装置与通信进程之间的接口,用于实现用户级通信,每个虚功能均包含Q个QP,每个通信进程独占一个QP,并使用门铃机制对QP的直接访问,向所述装置发起DMA操作请求。所述的支持单根IO虚拟化用户级接口控制方法,包括所述门铃机制,门铃由DMA描述符的内存首地址和DMA描述符的长度组成;通信进程将门铃写入通信接口 QP用户控制页面中的门铃地址寄存器,收到门铃写入动作后,从门铃携带的DMA地址中读取完整的DMA描述符,启动相应的DMA操作。所述的支持单根IO虚拟化用户级接口控制方法,所述步骤21还包括步骤23,物理功能PF配置空间和虚功能VF配置空间,在虚功能VF基址寄存器对应的存储空间包含Q个通信接口 QP所需的用户控制页面和系统控制页面信息,所述QS I ;步骤24,将收到的DMA门铃、虚功能VF和通信接口 QP,写入到操作队列中,该模块使用的仲裁算法,在满足上层软件对QoS需求的同时,还要实现对M个操作队列的公平使用。所述的支持单根IO虚拟化用户级接口控制方法,所述步骤23还包括所述虚功能VF基址寄存器对应的用户控制页面信息,将存储虚功能中通信队列QP私有相关配置,其中,门铃地址寄存器,只写,64位,通信进程通过将DMA描述符所在的内存地址写入该寄存器,来启动一次DMA操作;流控更新寄存器,只写,I位,通信进程每写一次该寄存器,表示增加S个门铃,其中S是该用户级接口控制装置与上层驱动软件协定的、每次增加的门铃数目,S的具体取值在虚功能VF基址寄存器对应的系统控制页面信息控制页面中的流控粒度寄存器获得;接收数据地址寄存器,可读可写,64位,通信进程在内存中开辟的接收数据缓冲区首地址;
发送完成事件地址寄存器,可读可写,64位,通信进程在内存中开辟的发送完成事件缓冲区首地址;接收完成事件地址寄存器,可读可写,64位,通信进程在内存中开辟的接收完成事件缓冲区首地址。所述的支持单根IO虚拟化用户级接口控制方法,所述步骤23还包括所述虚功能VF基址寄存器对应的系统控制页面信息,将存储虚功能VF中通信队列QP公有相关配置,其中,接收完成事件缓冲区深度,32位,可读可写,配置接收完成事件缓冲区深度;发送完成事件缓冲区深度,32位,可读可写,配置发送完成事件缓冲区深度;流控粒度寄存器,32位,可读可写,配置每次更新的门铃数量;VF优先级寄存器,32位,可读可写,配置当前虚功能DMA请求的优先级;QP状态寄存器,Q位,只读,每个QP对应I位,用来表示对应QP的状态,O为未初始化,I为已初始化。所述的支持单根IO虚拟化用户级接口控制方法,所述步骤24还包括根据VF优先级寄存器中记录的优先级进行仲裁,将获得仲裁的DMA请求写入存储DMA请求数目最少的操作队列。所述的支持单根IO虚拟化用户级接口控制方法,所述步骤3还包括步骤31,根据DMA弓丨擎的空闲情况,将M个操作队列中的DMA门铃分配给P个DMA引擎,具有较高优先级的门铃将被优先分配,其中P是DMA引擎模块中实现的DMA引擎的数目;步骤32,将P个DMA引擎对DMA门铃进行并行处理,对数据进行发送和接收。所述的支持单根IO虚拟化用户级接口控制方法,所述步骤32还包括步骤33,数据发送过程,所述数据是指从主机内存读取并发往网络的数据,根据门铃机制读取DMA描述符,进而根据DMA描述符的内容,读取需要传输的数据和控制信息,再将数据打包成网络包发出,网络包发送完成后,再根据操作队列中存储的虚功能VF和通信接口 QP,在设备配置空间中读取对应通信接口 QP的发送完成事件地址寄存器,向发送完成事件缓冲区中写入发送完成事件;步骤34,数据接收过程,所述数据是指从网络中获取并写入主机内存的数据,根据网络包携带的虚功能VF和通信接口 QP,在设备配置空间中读取对应通信接口 QP的接收数据地址寄存器和接收完成事件地址寄存器,将数据写入接收数据缓冲区中,待数据均写入缓冲区后,再将接收完成事件写入接收完成事件缓冲区中。本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。
权利要求
1.ー种支持单根IO虚拟化用户级接ロ控制装置,其特征在于,包括 系统总线接ロ模块,用于对所述装置与处理器之间的数据传输,实现符合PCI Express协议的事务层,数据链路层,和物理层功能; 操作模块,用于实现设备配置空间,以及虚功能VF的通信接ロ QP与操作队列OQ资源之间的映射,使用门铃机制对QP进行直接访问,其包含M个操作队列,所述MS I ; DMA模块,用于根据DMA引擎的空闲情况,对DMA引擎进行映射,所述DMA引擎进行数据的发送与接收; 网络包分发仲裁模块,用于接收DMA引擎发出的网络包,将不同的DMA引擎的网络包进行仲裁选择发送,同时接收网络中的网络包,发送至DMA引擎进行处理。
2.如权利要求I所述的支持单根IO虚拟化用户级接ロ控制装置,其特征在于,所述操作模块还包括 操作队列映射模块,用于对所述设备配置空间中的ー个物理功能PF配置空间和N个虚功能VF配置空间,实现虚功能VF的通信接ロ QP与操作队列OQ资源之间的映射; 操作队列模块,用于将M个操作队列缓存每个虚功能VF的通信接ロ QP的DMA门铃,并且供DMA模块读取后分配给DMA引擎使用,每个操作队列由ー个FIFO组成。
3.如权利要求1、2任一所述的支持单根IO虚拟化用户级接ロ控制装置,其特征在干,包括 所述通信接ロ QP,为所述装置与通信进程之间的接ロ,用于实现用户级通信,每个虚功能均包含Q个QP,每个通信进程独占ー个QP,并使用门铃机制对QP的直接访问,向所述装置发起DMA操作请求。
4.如权利要求I所述的支持单根IO虚拟化用户级接ロ控制装置,其特征在于,包括 所述门铃机制,门铃由DMA描述符的内存首地址和DMA描述符的长度组成;通信进程将门铃写入通信接ロ QP用户控制页面中的门铃地址寄存器,收到门铃写入动作后,从门铃携带的DMA地址中读取完整的DMA描述符,启动相应的DMA操作。
5.如权利要求2所述的支持单根IO虚拟化用户级接ロ控制装置,其特征在于,所述操作队列映射模块还包括 设备配置空间子模块,用于物理功能PF配置空间和虚功能VF配置空间,在虚功能VF基址寄存器对应的存储空间包含Q个通信接ロ QP所需的用户控制页面和系统控制页面信息,所述Q^l; 映射子模块,用于将收到的DMA门铃、虚功能VF和通信接ロ QP,写入到操作队列中,该模块使用的仲裁算法,在满足上层软件对QoS需求的同时,还要实现对M个操作队列的公平使用。
6.如权利要求5所述的支持单根IO虚拟化用户级接ロ控制装置,其特征在于,所述设备配置空间子模块还包括 所述虚功能VF基址寄存器对应的用户控制页面信息,将存储虚功能中通信队列QP私有相关配置,其中, 门铃地址寄存器,只写,64位,通信进程通过将DMA描述符所在的内存地址写入该寄存器,来启动一次DMA操作; 流控更新寄存器,只写,I位,通信进程每写一次该寄存器,表示増加S个门铃,其中S是该用户级接ロ控制装置与上层驱动软件协定的、每次增加的门铃数目,S的具体取值在虚功能VF基址寄存器对应的系统控制页面信息控制页面中的流控粒度寄存器获得; 接收数据地址寄存器,可读可写,64位,通信进程在内存中开辟的接收数据缓冲区首地址; 发送完成事件地址寄存器,可读可写,64位,通信进程在内存中开辟的发送完成事件缓冲区首地址; 接收完成事件地址寄存器,可读可写,64位,通信进程在内存中开辟的接收完成事件缓冲区首地址。
7.如权利要求5所述的支持单根IO虚拟化用户级接ロ控制装置,其特征在于,所述设备配置空间子模块还包括 所述虚功能VF基址寄存器对应的系统控制页面信息,将存储虚功能VF中通信队列QP公有相关配置,其中, 接收完成事件缓冲区深度,32位,可读可写,配置接收完成事件缓冲区深度; 发送完成事件缓冲区深度,32位,可读可写,配置发送完成事件缓冲区深度; 流控粒度寄存器,32位,可读可写,配置毎次更新的门铃数量; VF优先级寄存器,32位,可读可写,配置当前虚功能DMA请求的优先级; QP状态寄存器,Q位,只读,每个QP对应I位,用来表示对应QP的状态,0为未初始化,I为已初始化。
8.如权利要求7所述的支持单根IO虚拟化用户级接ロ控制装置,其特征在于,所述映射子模块还包括 根据VF优先级寄存器中记录的优先级进行仲裁,将获得仲裁的DMA请求写入存储DMA请求数目最少的操作队列。
9.如权利要求7、8任一所述的支持单根IO虚拟化用户级接ロ控制装置,其特征在干,所述DMA模块还包括 DMA引擎映射模块,用于根据DMA引擎的空闲情况,将M个操作队列中的DMA门铃分配给P个DMA引擎,具有较高优先级的门铃将被优先分配,其中P是DMA引擎模块中实现的DMA引擎的数目; DMA引擎模块,用于将P个DMA引擎对DMA门铃进行并行处理,对数据进行发送和接收。
10.如权利要求9所述的支持单根IO虚拟化用户级接ロ控制装置,其特征在干,所述DMA引擎模块还包括 DMA下传模块,用于数据发送过程,根据门铃机制读取DMA描述符,进而根据DMA描述符的内容,读取需要传输的数据和控制信息,再将数据打包成网络包发出,网络包发送完成后,再根据操作队列中存储的虚功能VF和通信接ロ QP,在设备配置空间中读取对应通信接ロ QP的发送完成事件地址寄存器,向发送完成事件缓冲区中写入发送完成事件; DMA上传模块,用于数据接收过程,根据网络包携帯的虚功能VF和通信接ロ QP,在设备配置空间中读取对应通信接ロ QP的接收数据地址寄存器和接收完成事件地址寄存器,将数据写入接收数据缓冲区中,待数据均写入缓冲区后,再将接收完成事件写入接收完成事件缓冲区中。
11.ー种支持单根IO虚拟化用户级接ロ控制方法,其特征在于,包括步骤1,对支持单根IO虚拟化用户级接ロ控制装置与处理器之间数据进行传输,实现符合PCI Express协议的事务层,数据链路层,和物理层功能; 步骤2,实现设备配置空间,以及虚功能VF的通信接ロ QP与操作队列OQ资源之间的映射,使用门铃机制对QP进行直接访问,其包含M个操作队列,所述M > I ; 步骤3,根据DMA引擎的空闲情况,对DMA引擎进行映射,所述DMA引擎进行数据的发送与接收; 步骤4,接收DMA引擎发出的网络包,将不同的DMA引擎的网络包进行仲裁选择发送,同时接收网络中的网络包,发送至DMA引擎进行处理。
12.如权利要求I所述的支持单根IO虚拟化用户级接ロ控制方法,其特征在于,所述步骤2还包括 步骤21,对所述设备配置空间中的ー个物理功能PF配置空间和N个虚功能VF配置空间,实现虚功能VF的通信接ロ QP与操作队列OQ资源之间的映射; 步骤22,将M个操作队列缓存每个虚功能VF的通信接ロ QP的DMA门铃,并且供DMA模块读取后分配给DMA引擎使用,每个操作队列由ー个FIFO组成。
13.如权利要求11、12任一所述的支持单根IO虚拟化用户级接ロ控制方法,其特征在于,包括 所述通信接ロ QP,为所述装置与通信进程之间的接ロ,用于实现用户级通信,每个虚功能均包含Q个QP,每个通信进程独占ー个QP,并使用门铃机制对QP的直接访问,向所述装置发起DMA操作请求。
14.如权利要求11所述的支持单根IO虚拟化用户级接ロ控制方法,其特征在于,包括 所述门铃机制,门铃由DMA描述符的内存首地址和DMA描述符的长度组成;通信进程将门铃写入通信接ロ QP用户控制页面中的门铃地址寄存器,收到门铃写入动作后,从门铃携带的DMA地址中读取完整的DMA描述符,启动相应的DMA操作。
15.如权利要求12所述的支持单根IO虚拟化用户级接ロ控制方法,其特征在于,所述步骤21还包括 步骤23,物理功能PF配置空间和虚功能VF配置空间,在虚功能VF基址寄存器对应的存储空间包含Q个通信接ロ QP所需的用户控制页面和系统控制页面信息,所述QSl; 步骤24,将收到的DMA门铃、虚功能VF和通信接ロ QP,写入到操作队列中,该模块使用的仲裁算法,在满足上层软件对QoS需求的同时,还要实现对M个操作队列的公平使用。
16.如权利要求15所述的支持单根IO虚拟化用户级接ロ控制方法,其特征在于,所述步骤23还包括 所述虚功能VF基址寄存器对应的用户控制页面信息,将存储虚功能中通信队列QP私有相关配置,其中, 门铃地址寄存器,只写,64位,通信进程通过将DMA描述符所在的内存地址写入该寄存器,来启动一次DMA操作; 流控更新寄存器,只写,I位,通信进程每写一次该寄存器,表示増加S个门铃,其中S是该用户级接ロ控制装置与上层驱动软件协定的、每次增加的门铃数目,S的具体取值在虚功能VF基址寄存器对应的系统控制页面信息控制页面中的流控粒度寄存器获得;接收数据地址寄存器 ,可读可写,64位,通信进程在内存中开辟的接收数据缓冲区首地址; 发送完成事件地址寄存器,可读可写,64位,通信进程在内存中开辟的发送完成事件缓冲区首地址; 接收完成事件地址寄存器,可读可写,64位,通信进程在内存中开辟的接收完成事件缓冲区首地址。
17.如权利要求15所述的支持单根IO虚拟化用户级接ロ控制方法,其特征在于,所述步骤23还包括 所述虚功能VF基址寄存器对应的系统控制页面信息,将存储虚功能VF中通信队列QP公有相关配置,其中, 接收完成事件缓冲区深度,32位,可读可写,配置接收完成事件缓冲区深度; 发送完成事件缓冲区深度,32位,可读可写,配置发送完成事件缓冲区深度; 流控粒度寄存器,32位,可读可写,配置毎次更新的门铃数量; VF优先级寄存器,32位,可读可写,配置当前虚功能DMA请求的优先级; QP状态寄存器,Q位,只读,每个QP对应I位,用来表示对应QP的状态,0为未初始化,I为已初始化。
18.如权利要求17所述的支持单根IO虚拟化用户级接ロ控制方法,其特征在于,所述步骤24还包括 根据VF优先级寄存器中记录的优先级进行仲裁,将获得仲裁的DMA请求写入存储DMA请求数目最少的操作队列。
19.如权利要求17、18任一所述的支持单根IO虚拟化用户级接ロ控制方法,其特征在于,所述步骤3还包括 步骤31,根据DMA引擎的空闲情况,将M个操作队列中的DMA门铃分配给P个DMA引擎,具有较高优先级的门铃将被优先分配,其中P是DMA引擎模块中实现的DMA引擎的数目;步骤32,将P个DMA引擎对DMA门铃进行并行处理,对数据进行发送和接收。
20.如权利要求19所述的支持单根IO虚拟化用户级接ロ控制方法,其特征在于,所述步骤32还包括 步骤33,数据发送过程,所述数据是指从主机内存读取并发往网络的数据,根据门铃机制读取DMA描述符,进而根据DMA描述符的内容,读取需要传输的数据和控制信息,再将数据打包成网络包发出,网络包发送完成后,再根据操作队列中存储的虚功能VF和通信接ロQP,在设备配置空间中读取对应通信接ロ QP的发送完成事件地址寄存器,向发送完成事件缓冲区中写入发送完成事件; 步骤34,数据接收过程,所述数据是指从网络中获取并写入主机内存的数据,根据网络包携带的虚功能VF和通信接ロ QP,在设备配置空间中读取对应通信接ロ QP的接收数据地址寄存器和接收完成事件地址寄存器,将数据写入接收数据缓冲区中,待数据均写入缓冲区后,再将接收完成事件写入接收完成事件缓冲区中。
全文摘要
本发明公开一种支持单根IO虚拟化用户级接口控制装置及方法,所述装置包括系统总线接口模块,用于对所述装置与处理器之间的数据传输,实现符合PCI Express协议的事务层,数据链路层,和物理层功能;操作模块,用于实现设备配置空间,以及虚功能VF的通信接口QP与操作队列OQ资源之间的映射,使用门铃机制对QP进行直接访问,其包含M个操作队列,所述M≥1;DMA模块,用于根据DMA引擎的空闲情况,对DMA引擎进行映射,所述DMA引擎进行数据的发送与接收;网络包分发仲裁模块,用于接收DMA引擎发出的网络包,将不同的DMA引擎的网络包进行仲裁选择发送,同时接收网络中的网络包,发送至DMA引擎进行处理。
文档编号G06F13/28GK102650976SQ20121009645
公开日2012年8月29日 申请日期2012年4月1日 优先权日2012年4月1日
发明者刘小丽, 刘飞龙, 孙凝晖, 安学军, 张佩珩, 曹政 申请人:中国科学院计算技术研究所