CN105389199A - 一种基于Xen的FPGA加速器虚拟化平台及应用 - Google Patents

一种基于Xen的FPGA加速器虚拟化平台及应用 Download PDF

Info

Publication number
CN105389199A
CN105389199A CN201510687773.6A CN201510687773A CN105389199A CN 105389199 A CN105389199 A CN 105389199A CN 201510687773 A CN201510687773 A CN 201510687773A CN 105389199 A CN105389199 A CN 105389199A
Authority
CN
China
Prior art keywords
virtual
fpga
end driver
request
accelerator
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.)
Granted
Application number
CN201510687773.6A
Other languages
English (en)
Other versions
CN105389199B (zh
Inventor
吴俊�
汤绍先
朱慧
郭栋
石丰略
苏立峰
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.)
Tongji University
Original Assignee
Tongji University
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 Tongji University filed Critical Tongji University
Priority to CN201510687773.6A priority Critical patent/CN105389199B/zh
Publication of CN105389199A publication Critical patent/CN105389199A/zh
Application granted granted Critical
Publication of CN105389199B publication Critical patent/CN105389199B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种基于Xen的FPGA加速器虚拟化平台及应用,其特征在于,包括相互连接的虚拟机模块(1)和FPGA模块(4),所述的虚拟机模块(1)包括用户虚拟机子模块(11)、特权虚拟机子模块(12)和数据传输模块(13),所述的用户虚拟机子模块(11)中设有虚拟前端驱动器(111),所述的特权虚拟机子模块(12)中设有虚拟后端驱动器(121)和实际驱动器(122),所述的虚拟前端驱动器(111)与虚拟后端驱动器(121)通过数据传输模块(13)连接,所述的实际驱动器(122)与FPGA模块(4)连接,所述的虚拟前端驱动器(111)和实际驱动器(122)均通过Xen实现字符设备虚拟化。与现有技术相比,本发明使多用户可同时使用加速器,提高了访问速度和运算效率。

Description

一种基于Xen的FPGA加速器虚拟化平台及应用
技术领域
本发明涉及一种FPGA加速器虚拟化平台及应用,尤其是涉及一种基于Xen的FPGA加速器虚拟化平台及应用。
背景技术
在无线通信系统中,多个模块需要相对较长时间的运算才能得出结果,这些操作影响了通信的效率,所以如何缩短运算时间以提高通信效率是个重要的问题。通过硬件来运算诸如FFT模块、Turbo译码器模块、MIMO均衡器模块等,可以提高运算速度,改进通信效率,还可以灵活使用相应的某些模块快速完成任务。由于硬件的速度较软件有很大的提升,且硬件资源代价较高,所以硬件资源的充分利用是很必要的。
FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。
由于FPGA具有运行速度快、可实现大规模系统、运算能力强、方便进行二次开发的特点,被大量运用于无线通信系统中,目前大多数研究主要集中在FPGA加速器的设计,然而FPGA硬件速度提高水平有限、成本高,且当多个用户同时使用一个加速器时,无法克服响应速度慢、利用效率低的问题。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种响应速度快、硬件加速器利用率高的基于Xen的FPGA加速器虚拟化平台及应用。
本发明的目的可以通过以下技术方案来实现:
一种基于Xen的FPGA加速器虚拟化平台,其特征在于,包括相互连接的虚拟机模块和FPGA模块,所述的虚拟机模块包括用户虚拟机子模块、特权虚拟机子模块和数据传输模块,所述的用户虚拟机子模块中设有虚拟前端驱动器,所述的特权虚拟机子模块中设有虚拟后端驱动器和实际驱动器,所述的虚拟前端驱动器与虚拟后端驱动器通过数据传输模块连接,所述的实际驱动器与FPGA模块连接,所述的虚拟前端驱动器和实际驱动器均通过Xen实现字符设备虚拟化。
所述的虚拟前端驱动器使用数据传输模块中的Xen的事件通道、授权表和共享环机制与虚拟后端驱动器进行通信和数据传输。
所述的虚拟前端驱动器加载时为授权表分配内存,平台运行过程中,授权表内存大小不变。
所述的用户虚拟机子模块包括多个用户空间,所述的FPGA模块包括多个FPGA硬件加速器,所述的虚拟后端驱动器采用队列管理机制处理用户空间产生的用户请求,将用户请求分配至空闲的FPGA硬件加速器。
所述的实际驱动器通过PCIe数据采集卡与FPGA模块进行数据传输,所述的PCIe数据采集卡的PCIe数据传输功能由软硬件配合完成,软件工作在主机端,硬件功能由采集卡上的XilinxV6系列FPGA器件完成,通过使用采集卡可以使FPGA硬件加速器与虚拟机所在的主机之间的读写速度同时达到400MByte/s。
所述的实际驱动器加载时,为PCIe数据采集卡动态指定读写操作粒度,所述的读写操作粒度为4KB的整数倍。
一种基于Xen的FPGA加速器虚拟化平台的应用,其特征在于,包括以下步骤:
S01,搭建所述的基于Xen的FPGA加速器虚拟化平台;
S02,用户虚拟机子模块中的用户空间产生硬件加速器使用请求;
S03,虚拟前端驱动器采用Xen的事件通道、授权表和共享环机制,将硬件加速器使用请求发送给虚拟后端驱动器;
S04,虚拟后端驱动器将硬件加速器使用请求依次放入请求队列,检测到空闲FPGA硬件加速器时,取出最早的硬件加速器使用请求,并通过实际驱动器发送给该FPGA硬件加速器进行处理;
S05,FPGA硬件加速器将硬件加速器使用请求的处理结果数据依次通过实际驱动器、虚拟后端驱动器和虚拟前端驱动器返回给对应的用户空间。
所述的步骤S03具体包括以下步骤:
S0301,虚拟前端驱动器进行注册和初始化,分配授权表内存,建立共享环,绑定事件通道;
S0302,虚拟前端驱动器向共享环写入硬件加速器使用请求,通过事件通道与虚拟后端驱动器建立连接;
S0303,虚拟前端驱动器将硬件加速器使用请求中的数据和控制信号传送给虚拟后端驱动器。
所述的步骤S04具体包括以下步骤:
S0401,虚拟后端驱动器进行注册和初始化,连接共享环,获取授权号和事件通道号,与虚拟前端驱动器建立连接;
S0402,将接收到的硬件加速器使用请求放入请求队列中,同时获取FPGA硬件加速器状态,若存在空闲FPGA硬件加速器,则取出请求队列中接收时间最早的硬件加速器使用请求;
S0403,实际驱动器将取出的硬件加速器使用请求发送给空闲的FPGA硬件加速器进行处理。
虚拟化是一种资源管理技术。虚拟化技术可以将一个硬件设备资源虚拟为多个逻辑设备,每个逻辑设备可提供给单独用户使用。每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
Xen是可用于Linux内核的一种虚拟化技术。Xen既支持半虚拟化也支持完全虚拟化。Xen采用ICA协议,通过准虚拟化的技术获得高性能,甚至在某些与传统虚拟技术极度不友好的架构上(x86),Xen也有上佳的表现。Xen虚拟机可以在不停止的情况下在多个物理主机之间实时迁移。Xen是一个基于X86架构、发展最快、性能最稳定、占用资源最少的开源虚拟化技术。Xen可以在一套物理硬件上安全的执行多个虚拟机,与Linux是一个完美的开源组合。它特别适用于服务器应用整合,可有效节省运营成本,提高设备利用率,最大化利用数据中心的IT基础架构。
本发明通过使用基于Xen的虚拟化技术,对实际加速器字符传输设备进行虚拟化。设计了虚拟前端驱动器、虚拟后端驱动器、实际驱动器和数据传输模块,进行加速器与用户的通信和数据传输。虚拟前端驱动器主要完成请求的接收、发送和返回信号处理,虚拟后端驱动器完成硬件设备请求的调度管理,根据硬件加速器设备的空闲情况进行分配。最后调用真实的硬件设备进行运算处理,得到数据后依次返回给用户,完成加速运算过程。虚拟机模块与FPGA模块通过PCIe总线连接,通过使用PCIe数据采集卡的数据传输功能模块,将数据在FPGA模块与虚拟机模块间直接传输。最终使多用户可以同时使用硬件加速器对自己需要的模块进行运算加速,完成相应的功能。
与现有技术相比,本发明具有以下优点:
(1)本发明利用Xen虚拟化技术,将基于FPGA的硬件加速器虚拟化,实现了虚拟设备的前后端通信与数据传输,使多用户可同时使用加速器,替代软件完成硬件加速任务,提高了用户使用访问速度和运算效率。
(2)本发明中,通过队列管理机制,多个硬件加速器资源可以同时与多个用户虚拟机所在的PC机相连,使多用户同时访问成为可能,提高了用户的通信效率,满足多用户的加速任务。
(3)虚拟前端驱动器加载时为授权表分配内存,平台运行过程中,授权表内存大小不变,无需每次都重新申请内存,从而减少运算时间。
(4)实际驱动器通过PCIe数据采集卡与FPGA模块进行数据传输,通过使用采集卡可以使FPGA硬件加速器与虚拟机所在的主机之间的读写速度同时达到400MByte/s。
附图说明
图1为实施例1平台的结构示意图;
图2为实施例1虚拟机模块的数据传输示意图;
图3为实施例2平台的应用流程图;
图4为实施例2硬件加速器使用请求调度管理流程图;
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
实施例1
利用FPGA,即现场可编程门阵列,可以将自己设计的逻辑电路如加速器逻辑功能烧录进去进行强适应的功能实现。本实施例利用Xen将FPGA进行虚拟化,可以使多用户同时使用相同的FPGA进行加速运算,提高硬件的利用效率和用户的响应速度,可充分利用硬件资源。
一种基于Xen的FPGA加速器虚拟化平台,使用FPGA的硬件来运算无线通信中的一些模块,实现硬件加速功能。同时,将用户放在基于Xen的虚拟机中,通过硬件设备虚拟化方法,使多用户可以同时使用硬件运算,提高硬件的使用效率。如图1~2所示,该平台包括相互连接的虚拟机模块1和FPGA模块4,所述的虚拟机模块1包括用户虚拟机子模块11、特权虚拟机子模块12和数据传输模块13,所述的用户虚拟机子模块11中设有虚拟前端驱动器111,所述的特权虚拟机子模块12中设有虚拟后端驱动器121和实际驱动器122,所述的虚拟前端驱动器111与虚拟后端驱动器121通过数据传输模块13连接,所述的实际驱动器122与FPGA模块4连接,通过控制信号,了解FPGA硬件是否在工作。所述的虚拟前端驱动器111和实际驱动器122均通过Xen实现字符设备虚拟化,实现数据和控制信号等的传输,每次用户使用硬件资源,都会首先将请求交于虚拟前端驱动器111,通过数据传输模块13传给虚拟后端驱动器121之后,虚拟后端驱动器121完成相应的处理。
所述的虚拟前端驱动器111使用数据传输模块13中的Xen的事件通道、授权表和共享环机制与虚拟后端驱动器121进行通信和数据传输,虚拟前端驱动器111只完成用户请求的转发,然后等待虚拟后端驱动器121的响应。
所述的虚拟前端驱动器111加载时为授权表分配内存,平台运行过程中,授权表内存大小不变。不需每次重新申请内存,消耗更多时间和空间。
所述的用户虚拟机子模块11包括多个用户空间,所述的FPGA模块4包括多个FPGA硬件加速器41,所述的虚拟后端驱动器121采用队列管理机制处理用户空间产生的用户请求,将用户请求分配至空闲的FPGA硬件加速器41,实现所有用户的请求的处理,并管理硬件资源,将资源均衡分配给用户使用。等待运算完成,得到数据返回给虚拟前端驱动器111。
所述的实际驱动器122通过PCIe总线的数据采集卡与FPGA模块4进行数据的直接传输。数据采集卡的PCIe数据传输功能由软硬件配合完成,软件工作在虚拟机模块1所在的主机端,硬件功能由采集卡上的XilinxV6系列FPGA器件完成。通过使用采集卡可以使FPGA硬件加速器与主机端传输的最大数据量可达到读写同时400MByte/s。
所述的实际驱动器122加载时,为PCIe数据采集卡动态指定读写操作粒度,所述的读写操作粒度为4KB的整数倍。可以提供读写和对设备的一些控制操作。
实施例2
一种如实施例1所述的基于Xen的FPGA加速器虚拟化平台的应用,如图3所示,包括以下步骤:
S01,搭建所述的基于Xen的FPGA加速器虚拟化平台;
S02,用户虚拟机子模块11中的用户空间产生硬件加速器使用请求,具体为:用户空间通过程序访问硬件加速器进行写操作,调用用户虚拟机子模块11的内核中的虚拟前端驱动器111;
S03,虚拟前端驱动器111采用Xen的事件通道、授权表和共享环机制,将硬件加速器使用请求发送给虚拟后端驱动器121;
步骤S03具体包括以下步骤:
S0301,虚拟前端驱动器111进行注册和初始化,分配授权表内存,建立共享环,绑定事件通道;
S0302,虚拟前端驱动器111向共享环写入硬件加速器使用请求,通过事件通道与虚拟后端驱动器121建立连接;
S0303,虚拟前端驱动器111将硬件加速器使用请求中的数据和控制信号传送给虚拟后端驱动器121。
具体为:虚拟前端驱动器111收到用户的I.O请求后将请求放入I/O共享环的请求队列,其中包括待写入数据的地址和大小等信息,数据放入Xen的授权表中,通过此授权表,特权虚拟机子模块12可以访问此内存空间,节省内存拷贝的消耗;
S04,虚拟后端驱动器121将硬件加速器使用请求依次放入请求队列,检测到空闲FPGA硬件加速器41时,取出最早的硬件加速器使用请求,并通过实际驱动器122发送给该FPGA硬件加速器41进行处理;
步骤S04具体包括以下步骤:
S0401,虚拟后端驱动器121进行注册和初始化,连接共享环,获取授权号和事件通道号,与虚拟前端驱动器111建立连接;
S0402,虚拟后端驱动器121会检查是否有新的事件,当发现有新的请求时,从I/O共享环的请求队列中取出请求,同时获取FPGA硬件加速器41状态,若存在空闲FPGA硬件加速器41,则取出请求队列中接收时间最早的硬件加速器使用请求;一般用户空间没有特定的优先级,所以请求处理的顺序遵循先来先服务的规则,同时运算个数小于等于硬件的个数;硬件加速器使用请求多于硬件个数时,需要等待处理,由于硬件运算时间很快,所以等待的时间很短,一般不会造成用户的无响应;
S0403,实际驱动器122将取出的硬件加速器使用请求发送给空闲的FPGA硬件加速器41进行处理。
步骤S04具体流程如图4所示。
S05,FPGA硬件加速器41将硬件加速器使用请求的处理结果数据依次通过实际驱动器122、虚拟后端驱动器121和虚拟前端驱动器111返回给对应的用户空间,具体为:
实际驱动器122调用硬件完成数据运算后,得到返回的数据,传送给虚拟后端驱动器121,虚拟后端驱动器121收到实际驱动器122的数据后,产生I/O请求,放入I/O共享环,通过事件通道通知相应的用户空间,用户空间检查发现有事件后,及时响应中断,处理请求,虚拟前端驱动器111从I/O共享环中取出请求进行处理,得到需要返回的数据信息后,通过授权表获得数据,虚拟前端驱动器111将数据通过函数返回给用户空间,完成硬件加速模块的功能。
本实施例适应于Xen平台下的I/O硬件虚拟化技术,可用于无线通信系统多个模块,诸如FFT模块、Turbo译码器模块、Turbo编码器模块、MIMO均衡器模块、同步搜索模块、AIF接口模块等。
实施例3
将实施例1、2具体应用于某实际FPGA加速器。
在Xen中,Xenhypervisor处于最底层,并且是具有最高权限的软件层。通过该层支持多个GuestOS(子操作系统),负责调度物理CPUs。第一个启动的GuestOS为Domain0(Dom0),具有管理权限和直接访问硬件资源的权限。系统管理员可以登陆Domain0去管理其他GuestOS,也就是用户级DomainU(DomU)。
Dom0和DomU的通信机制主要包括共享环,事件通道和授权表。I/O共享环通过一块固定的内存,在Dom0和DomU之间传递I/O请求和响应。事件通道用于各Dom间以及与Xen实现异步通知。授权表可以将内存页从一个Dom映射到另一个Dom内使用,通过授权表的页映射共享内存机制进行无拷贝的数据的高效传输。
通过Xen所提供的机制,可以较容易的实现前后端字符驱动中的通信和数据传输。主要实现方式为:
1)虚拟机DomU将连接请求、控制信号、数据请求等放入共享环,并将数据放入授权表指定的内存中,然后通过事件通道通知Dom0。内存大小由字符设备所决定,在加载后固定大小并在运行时一直存在,不用每次分配内存,方便数据的传输。
2)Dom0通过事件通道收到通知后,从共享环里取出通知,分析后进行相应处理,之后返回相应的信息放入共享环和授权表中,然后通知DomU。
3)DomU收到通知,从共享环中取出消息进行相应的处理,完成通信。
以上的机制虽然Xen有类似实现的样例,但是对应的字符设备并未有实现的实例,且实现部分只包含连接部分,所以按照以上的思路,本实施例实现了字符设备的前后端字符设备驱动的通信与数据传输系统。
1.后端硬件设备请求调度管理
对于使用的FPGA硬件加速器可以有很多块同时连接到PC上,以便多用户可以同时访问加速器。多个FPGA的加速器可以具有不同的加速模块,使用户可以访问不同FPGA上的加速功能。这些请求由每个用户所在的虚拟机的前端驱动转发给后端,并由后端驱动进行实际的处理调度。然后访问实际的设备进行数据运算加速。
后端的调度处理,首先将各用户的请求都收下,根据硬件设备的空闲情况进行分配。
2.虚拟机与FPGA硬件加速器的连接
本实施例利用Xen建立所有客户域虚拟机与硬件加速器的联系。虚拟机建立在PC机上,所以需要将PC机与硬件加速器进行连接通信。通过使用PCIe数据采集卡的数据传输功能模块,将数据在加速器与虚拟机直接传输。数据采集卡的PCIE数据传输功能由软硬件配合完成,软件工作在主机端,硬件功能由采集卡上的XilinxV6系列FPGA器件完成。通过使用采集卡可以使FPGA硬件加速器与主机端传输的最大数据量可达到读写同时400MByte/s。
下面详细说明本实施例的实现过程:
1.硬件加速器的应用结构
硬件加速器的应用结构:FPGA硬件与PC相连,用户通过在Xen的VMM上的虚拟机的前端驱动进行数据的读写等操作。之后前端驱动将请求转发到Dom0的后端驱动上。后端驱动进行请求调度处理后,调用真实驱动进行操作。之后数据依次返回到用户处,完成最终的请求。
2.虚拟化的数据传输系统实现
使用的Xen的通信机制,具体步骤如下:
1)DomU中的用户通过程序需要访问硬件加速器进行写操作,调用DomU的内核中的前端驱动。前端驱动收到用户的I.O请求后将请求放入I/O共享环。
其中包括待写入数据的地址和大小等信息。
2)数据放入Xen的GrantTable中,通过此授权表,Dom0可以访问此内存空间,节省内存拷贝的消耗。
3)数据放置完成后,前端驱动通过事件通道EventChannel向后端发送通知Dom0。
4)Dom0会检查是否有新的事件,当发现有新的请求时,后端驱动收到请求,进行处理。
5)后端驱动从I/O共享环的请求队列中取出请求,请求根据先后顺序进行处理。
6)取出请求后,结合事件通知中的数据信息如大小等,通过授权表取出需要的数据。
7)后端通过FPGA硬件的使用信息进行请求的处理分配。将写请求操作分配给一个加速器硬件。
8)后端驱动将请求交给真实驱动处理,等待处理完成。
9)真实驱动调用硬件完成数据运算后,得到返回的数据。
10)后端收到真实驱动的数据后,产生I/O请求,放入I/O共享环,通过事件通道通知相应的DomU。
11)DomU检查发现有事件后,及时响应中断,处理请求。
12)前端从I/O共享环中取出请求进行处理,得到需要返回的数据信息后,通过授权表获得数据。
13)前端驱动将数据通过函数返回给用户,完成硬件加速模块的功能。
3.虚拟化加速器设备驱动实现
实际驱动为采集卡设备驱动,使用此设备驱动来传输数据,FPGA硬件加速器接收数据后完成运算操作,之后将数据通过PCIe传输至PC端,然后将数据送给用户。为了是虚拟机的每个用户都可使用此驱动,需要实现此驱动的虚拟前后端驱动完成数据的收发和相关功能的实现。其中虚拟前端驱动存在于虚拟机操作系统中,完成数据的转发和及时接收后端数据。虚拟后端驱动主要工作包括访问真实设备驱动,管理请求调度等。Xen中有关于网络和块设备等的实现方式,但是字符设备需要自己实现,所以前后端驱动都需自行实现。
3.1前端驱动实现
前端驱动主要完成对用户操作的截取并进行相应的处理。主要流程如下:
3.1.1前端驱动注册和初始化
通过模块初始化函数将驱动信息加载到xenbus上,并调用系统驱动注册函数进行注册。虚拟机上可以从/sys/bus/xen/driver目录下找到已注册的前端设备驱动。Xend服务是Xen中用来管理所有虚拟机的一个服务,Xend通过向xenstore写fontend和backend的信息来创建一个设备连接。xenbus的设备实例可以看到这些信息,并开始初始化。Xenbus的后端实例监视着/local/domain/0/backend/vbd,前端实例监视着/local/domain/U/device/vbd。当设备的内容被写到了这两个位置后,这两个监视的相关事件被触发,xenbus的实例开始初始化。
初始化时完成授权表所使用的共享页的映射,前端根据真实驱动加载时的数据块大小,分配内存空间,直到使用结束后才释放空间,以便提高传输效率。绑定事件通道和共享环的建立也在初始化阶段完成,具体操作和Xen中的块驱动类似。
3.1.2前端驱动状态转换
驱动加载之后会出发probe函数,在其中会调用函数talk_to_chrback()。首先驱动处于XenbusStateInitialising状态,当调用talk_to_chrback()之后,向共享环和事件通道写入信息,之后将状态设为XenbusStateInitialised。当前端通过chrback_changed()得知后端状态为Connected,则调用chrfront_connect()并将前端的状态设为XenbusStateConnected。前后端的连接建立成功,状态都为Connected。
3.1.3读写数据操作
前端驱动的读写操作主要是进行向后端转发,不进行实际的处理。写操作通过GrantTable的页映射,将数据传到后端。读操作则是等待加速器数据处理后的后端返回数据,数据送达后完成读操作的返回。
3.1.4I/O控制信号操作
控制信号包括参数的传递,和一些对设备的一些控制操作的转发。参数寄存器的访问也是控制信号中的一种。其中可以将数据大小等信息通过写参数寄存器通知给硬件加速器设备,使其知道所需读取的数据大小。
3.2后端驱动实现
后端驱动主要完成数据和控制信号的操作和任务的调度。主要流程如下:
3.2.1后端驱动注册和初始化
后端驱动的注册和初始化部分包含基本的驱动注册,还有后端状态的改变。后端驱动调用front_changed(),在前端状态变为XenbusStateInitialised后,后端驱动的状态改变函数调用连接函数,连接共享环,之后接着完成授权表内存的映射获得授权号和事件通道号。之后完成连接,状态变为XenbusStateConnected。Xenbus检测到该变化后,调用前端的chrback_changed()完成连接。至此前后端完成连接任务。
3.2.2数据传输
后端的数据传输主要处理前端转发过来的用户的读写请求。对于数据的读写,使用的块大小由真实驱动加载时指定,不足的最后一块数据用默认的0补足。
3.3.3请求调度处理
后端请求处理包括读写操作和控制信号的传输。硬件设备请求调度管理流程如图4所示。后端请求使用硬件加速器,先将请求放入请求队列中,当有空闲加速器时,就取出第一个请求,然后处理该请求。否则等待空闲加速器。加速器的选择根据探测结果选出,只要查找到有空闲的立即处理。由于用户的需求基本相同,所以多个加速器的管理可以直接使用一个队列同时管理调度。当需求不同时,比如用户具有更高优先级,则可以创建一个优先队列,优先调度这个队列中的请求。
4.用户使用虚拟加速器方式
用户通过建立在PC机上的虚拟机,远程登录或者在本机上使用DomU发送读写请求,通过数据传输系统将数据送到加速器上,硬件运算加速完成后,数据依次返回,将用户需要的数据送给用户,完成用户对硬件虚拟加速器的使用。
以上所述,仅是本发明的较佳实例,本发明所主张的权利范围并不局限于此。本发明还有其他多种实施例,在不背离本发明精神及其实质的情况下,本领域技术人员可根据本发明作出各种相应的改变和变形,但这些改变和变形都应属于本发明所附的权利要求的保护范围。

Claims (9)

1.一种基于Xen的FPGA加速器虚拟化平台,其特征在于,包括相互连接的虚拟机模块(1)和FPGA模块(4),所述的虚拟机模块(1)包括用户虚拟机子模块(11)、特权虚拟机子模块(12)和数据传输模块(13),所述的用户虚拟机子模块(11)中设有虚拟前端驱动器(111),所述的特权虚拟机子模块(12)中设有虚拟后端驱动器(121)和实际驱动器(122),所述的虚拟前端驱动器(111)与虚拟后端驱动器(121)通过数据传输模块(13)连接,所述的实际驱动器(122)与FPGA模块(4)连接,所述的虚拟前端驱动器(111)和实际驱动器(122)均通过Xen实现字符设备虚拟化。
2.根据权利要求1所述的一种基于Xen的FPGA加速器虚拟化平台,其特征在于,所述的虚拟前端驱动器(111)使用数据传输模块(13)中的Xen的事件通道、授权表和共享环机制与虚拟后端驱动器(121)进行通信和数据传输。
3.根据权利要求2所述的一种基于Xen的FPGA加速器虚拟化平台,其特征在于,所述的虚拟前端驱动器(111)加载时为授权表分配内存,平台运行过程中,授权表内存大小不变。
4.根据权利要求1所述的一种基于Xen的FPGA加速器虚拟化平台,其特征在于,所述的用户虚拟机子模块(11)包括多个用户空间,所述的FPGA模块(4)包括多个FPGA硬件加速器(41),所述的虚拟后端驱动器(121)采用队列管理机制处理用户空间产生的用户请求,将用户请求分配至空闲的FPGA硬件加速器(41)。
5.根据权利要求1所述的一种基于Xen的FPGA加速器虚拟化平台,其特征在于,所述的实际驱动器(122)通过PCIe数据采集卡与FPGA模块(4)进行数据传输。
6.根据权利要求5所述的一种基于Xen的FPGA加速器虚拟化平台,其特征在于,所述的实际驱动器(122)加载时,为PCIe数据采集卡动态指定读写操作粒度,所述的读写操作粒度为4KB的整数倍。
7.一种如权利要求1所述的基于Xen的FPGA加速器虚拟化平台的应用,其特征在于,包括以下步骤:
S01,搭建所述的基于Xen的FPGA加速器虚拟化平台;
S02,用户虚拟机子模块(11)中的用户空间产生硬件加速器使用请求;
S03,虚拟前端驱动器(111)采用Xen的事件通道、授权表和共享环机制,将硬件加速器使用请求发送给虚拟后端驱动器(121);
S04,虚拟后端驱动器(121)将硬件加速器使用请求依次放入请求队列,检测到空闲FPGA硬件加速器(41)时,取出最早的硬件加速器使用请求,并通过实际驱动器(122)发送给该FPGA硬件加速器(41)进行处理;
S05,FPGA硬件加速器(41)将硬件加速器使用请求的处理结果数据依次通过实际驱动器(122)、虚拟后端驱动器(121)和虚拟前端驱动器(111)返回给对应的用户空间。
8.根据权利要求7所述的应用,其特征在于,所述的步骤S03具体包括以下步骤:
S0301,虚拟前端驱动器(111)进行注册和初始化,分配授权表内存,建立共享环,绑定事件通道;
S0302,虚拟前端驱动器(111)向共享环写入硬件加速器使用请求,通过事件通道与虚拟后端驱动器(121)建立连接;
S0303,虚拟前端驱动器(111)将硬件加速器使用请求中的数据和控制信号传送给虚拟后端驱动器(121)。
9.根据权利要求7所述的应用,其特征在于,所述的步骤S04具体包括以下步骤:
S0401,虚拟后端驱动器(121)进行注册和初始化,连接共享环,获取授权号和事件通道号,与虚拟前端驱动器(111)建立连接;
S0402,将接收到的硬件加速器使用请求放入请求队列中,同时获取FPGA硬件加速器(41)状态,若存在空闲FPGA硬件加速器(41),则取出请求队列中接收时间最早的硬件加速器使用请求;
S0403,实际驱动器(122)将取出的硬件加速器使用请求发送给空闲的FPGA硬件加速器(41)进行处理。
CN201510687773.6A 2015-10-21 2015-10-21 一种基于Xen的FPGA加速器虚拟化平台及应用 Active CN105389199B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510687773.6A CN105389199B (zh) 2015-10-21 2015-10-21 一种基于Xen的FPGA加速器虚拟化平台及应用

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510687773.6A CN105389199B (zh) 2015-10-21 2015-10-21 一种基于Xen的FPGA加速器虚拟化平台及应用

Publications (2)

Publication Number Publication Date
CN105389199A true CN105389199A (zh) 2016-03-09
CN105389199B CN105389199B (zh) 2019-09-27

Family

ID=55421506

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510687773.6A Active CN105389199B (zh) 2015-10-21 2015-10-21 一种基于Xen的FPGA加速器虚拟化平台及应用

Country Status (1)

Country Link
CN (1) CN105389199B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106776002A (zh) * 2016-11-15 2017-05-31 华为技术有限公司 Fpga的虚拟化硬件架构的通信方法及装置
CN107179936A (zh) * 2016-03-11 2017-09-19 中国电子科技集团公司电子科学研究院 一种基于特权分离的虚拟化隔离方法
CN107491342A (zh) * 2017-09-01 2017-12-19 郑州云海信息技术有限公司 一种基于fpga的多虚拟卡使用方法及系统
WO2017215547A1 (zh) * 2016-06-15 2017-12-21 华为技术有限公司 一种数据传输方法及装置
CN108124475A (zh) * 2017-12-29 2018-06-05 深圳前海达闼云端智能科技有限公司 虚拟系统蓝牙通信方法及装置、虚拟系统、存储介质及电子设备
CN109194589A (zh) * 2018-08-31 2019-01-11 新华三技术有限公司 一种mdc实现方法及装置
CN109656674A (zh) * 2017-10-11 2019-04-19 阿里巴巴集团控股有限公司 一种计算机设备、虚拟化芯片及数据传输方法
CN112445568A (zh) * 2019-09-02 2021-03-05 阿里巴巴集团控股有限公司 基于硬件加速的数据处理方法、装置及系统
WO2021047120A1 (zh) * 2019-09-12 2021-03-18 苏州浪潮智能科技有限公司 一种fpga异构加速卡集群中的资源调度方法、设备及介质
CN114520825A (zh) * 2022-01-07 2022-05-20 中汽创智科技有限公司 一种基于分布式的Hypervisor微内核架构、通信方法及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104067230A (zh) * 2012-01-17 2014-09-24 微软公司 准虚拟化高性能计算和gdi加速
WO2015042684A1 (en) * 2013-09-24 2015-04-02 University Of Ottawa Virtualization of hardware accelerator
CN104951353A (zh) * 2014-03-28 2015-09-30 华为技术有限公司 一种对vnf实现加速处理的方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104067230A (zh) * 2012-01-17 2014-09-24 微软公司 准虚拟化高性能计算和gdi加速
WO2015042684A1 (en) * 2013-09-24 2015-04-02 University Of Ottawa Virtualization of hardware accelerator
CN104951353A (zh) * 2014-03-28 2015-09-30 华为技术有限公司 一种对vnf实现加速处理的方法及装置

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107179936A (zh) * 2016-03-11 2017-09-19 中国电子科技集团公司电子科学研究院 一种基于特权分离的虚拟化隔离方法
CN107515775B (zh) * 2016-06-15 2021-11-19 华为技术有限公司 一种数据传输方法及装置
CN107515775A (zh) * 2016-06-15 2017-12-26 华为技术有限公司 一种数据传输方法及装置
US11182190B2 (en) 2016-06-15 2021-11-23 Huawei Technologies Co., Ltd. Data transmission method and apparatus
US11922202B2 (en) 2016-06-15 2024-03-05 Huawei Technologies Co., Ltd. Data transmission method and apparatus
WO2017215547A1 (zh) * 2016-06-15 2017-12-21 华为技术有限公司 一种数据传输方法及装置
CN106776002A (zh) * 2016-11-15 2017-05-31 华为技术有限公司 Fpga的虚拟化硬件架构的通信方法及装置
CN106776002B (zh) * 2016-11-15 2020-09-25 华为技术有限公司 Fpga的虚拟化硬件架构的通信方法及装置
CN107491342A (zh) * 2017-09-01 2017-12-19 郑州云海信息技术有限公司 一种基于fpga的多虚拟卡使用方法及系统
CN109656674B (zh) * 2017-10-11 2023-09-12 阿里巴巴集团控股有限公司 一种计算机设备、虚拟化芯片及数据传输方法
CN109656674A (zh) * 2017-10-11 2019-04-19 阿里巴巴集团控股有限公司 一种计算机设备、虚拟化芯片及数据传输方法
CN108124475B (zh) * 2017-12-29 2022-05-20 达闼机器人股份有限公司 虚拟系统蓝牙通信方法及装置、虚拟系统、存储介质及电子设备
CN108124475A (zh) * 2017-12-29 2018-06-05 深圳前海达闼云端智能科技有限公司 虚拟系统蓝牙通信方法及装置、虚拟系统、存储介质及电子设备
CN109194589A (zh) * 2018-08-31 2019-01-11 新华三技术有限公司 一种mdc实现方法及装置
CN109194589B (zh) * 2018-08-31 2021-01-26 新华三技术有限公司 一种mdc实现方法及装置
CN112445568A (zh) * 2019-09-02 2021-03-05 阿里巴巴集团控股有限公司 基于硬件加速的数据处理方法、装置及系统
WO2021047120A1 (zh) * 2019-09-12 2021-03-18 苏州浪潮智能科技有限公司 一种fpga异构加速卡集群中的资源调度方法、设备及介质
CN114520825A (zh) * 2022-01-07 2022-05-20 中汽创智科技有限公司 一种基于分布式的Hypervisor微内核架构、通信方法及设备
CN114520825B (zh) * 2022-01-07 2023-12-26 中汽创智科技有限公司 一种基于分布式的Hypervisor微内核架构、通信方法及设备

Also Published As

Publication number Publication date
CN105389199B (zh) 2019-09-27

Similar Documents

Publication Publication Date Title
CN105389199A (zh) 一种基于Xen的FPGA加速器虚拟化平台及应用
Liu et al. High Performance VMM-Bypass I/O in Virtual Machines.
CN102609298B (zh) 基于硬件队列扩展的网卡虚拟化系统及其方法
US20190303345A1 (en) Virtual rdma switching for containerized applications
US7552298B2 (en) Method and system for deferred pinning of host memory for stateful network interfaces
US9146785B2 (en) Application acceleration in a virtualized environment
CN110402568A (zh) 一种通信的方法及装置
US20070192518A1 (en) Apparatus for performing I/O sharing & virtualization
US10540294B2 (en) Secure zero-copy packet forwarding
US20080123676A1 (en) Shared input-output device
EP4053706A1 (en) Cross address-space bridging
WO2022179423A1 (zh) 虚拟化处理系统、方法、装置及设备
CN104199718A (zh) 一种基于numa高性能网络缓存资源亲和度的虚拟处理器的调度方法
US7539987B1 (en) Exporting unique operating system features to other partitions in a partitioned environment
CN111431757A (zh) 虚拟网络的流量采集方法及装置
CN115203142A (zh) 一种多核核间实时通信系统及方法
CN116886751A (zh) 一种异构设备的高速通信方法、装置和异构通信系统
Ballesteros et al. Nix: A case for a manycore system for cloud computing
Wang et al. vSocket: virtual socket interface for RDMA in public clouds
US11513830B2 (en) Introspection into workloads running within virtual machines
Nordal et al. Paravirtualizing tcp
CN114691286A (zh) 服务器系统、虚拟机创建方法及装置
Gerangelos et al. vphi: Enabling xeon phi capabilities in virtual machines
CN118283114B (zh) 数据处理方法、系统、电子设备和可读存储介质
CN116932097B (zh) 一种用于驱动多dpu协同工作的驱动方法和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant