计算机设备、虚拟化加速设备、数据传输方法及存储介质转让专利

申请号 : CN202110365740.5

文献号 : CN112765084B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴斌斌张献涛傅俊康文敢任晋奎

申请人 : 阿里云计算有限公司

摘要 :

本申请实施例提供一种计算机设备、虚拟化加速设备、数据传输方法及存储介质。在本申请实施例中,为物理机部署虚拟化加速设备,物理机与虚拟化加速设备通过高速串行总线互联,借助于虚拟化加速设备可对串口设备进行虚拟化,即在虚拟化加速设备上实现面向物理机的虚拟化的串口设备,基于此,物理机可通过该虚拟化的串口设备实现串口数据的收发,对物理机来说,只需通过高速串行总线将数据传输至虚拟化的串口设备即可,后续传输动作由虚拟化加速设备完成,借助于高速串行总线在传输速度上的优势,可大大提高物理机串口数据传输的速率,有利于提高物理机CPU的使用率,保证物理机服务性能的稳定性。

权利要求 :

1.一种计算机设备,其特征在于,包括:物理机和虚拟化加速设备;所述虚拟化加速设备通过高速串行总线与所述物理机连接;

在所述虚拟化加速设备上配置串口设备所需的多个寄存器,并将所述多个寄存器映射到所述虚拟化加速设备的配置空间中,以实现面向所述物理机的虚拟化的串口设备,所述虚拟化的串口设备是硬件实现,用于配合所述物理机进行串口数据的收发;所述物理机,用于识别所述虚拟化的串口设备,并通过所述虚拟化的串口设备进行串口数据的收发;

其中,所述多个寄存器至少包括:发送保持寄存器THR、线路状态寄存器LSR和接收缓冲寄存器RBR;

所述物理机,用于通过所述高速串行总线向THR写入第一串口数据;所述虚拟化的串口设备,用于将THR中的第一串口数据输出至所述虚拟化加速设备的内存缓存中,并将LSR中的THR状态位置1;以及

所述虚拟化的串口设备,用于将从所述内存缓存中读取的第二串口数据写入RBR,并将LSR的数据准备状态位置1,以及在所述第二串口数据被读取完毕后将所述LSR的数据准备状态位置0;所述物理机具体用于:在检测到LSR的数据准备状态位置1时,通过所述高速串行总线从RBR中读取所述第二串口数据。

2.根据权利要求1所述的设备,其特征在于,所述物理机具体用于:对所述高速串行总线上的设备进行枚举,在发现所述虚拟化加速设备的情况下,根据所述配置空间中至少部分寄存器的值,识别到所述虚拟化的串口设备。

3.根据权利要求2所述的设备,其特征在于,所述物理机还用于:在首次识别到所述虚拟化的串口设备时,为所述虚拟化的串口设备命名,并修改操作系统中串口输出参数中的串口名称为所述虚拟化的串口设备的名称。

4.根据权利要求1所述的设备,其特征在于,所述虚拟化加速设备的内存缓存,用于缓存所述物理机通过所述虚拟化的串口设备进行收发的串口数据;

所述虚拟化加速设备的处理器,用于从所述内存缓存中读取所述物理机经所述虚拟化的串口设备写入的第一串口数据并输出,或向所述内存缓存数据写入所述物理机需要接收的第二串口数据,以供所述虚拟化的串口设备读取并发送给所述物理机。

5.根据权利要求4所述的设备,其特征在于,所述虚拟化加速设备包括可编程逻辑器件和第一处理芯片;所述虚拟化的串口设备位于所述可编程逻辑器件上,所述处理器和内存缓存位于所述第一处理芯片上。

6.根据权利要求5所述的设备,其特征在于,所述可编程逻辑器件为现场可编程逻辑门阵列FPGA或复杂可编程逻辑器件CPLD;所述第一处理芯片为专用集成电路ASIC芯片或系统级芯片SOC。

7.根据权利要求4所述的设备,其特征在于,所述虚拟化加速设备包括第二处理芯片;

所述虚拟化的串口设备、所述处理器和内存缓存均位于所述第二处理芯片上。

8.根据权利要求7所述的设备,其特征在于,所述第二处理芯片为ASIC芯片或SOC。

9.根据权利要求1‑8任一项所述的设备,其特征在于,所述高速串行总线为外设部件互连标准PCI总线或外设部件互联扩展总线标准PCIE总线。

10.一种虚拟化加速设备,其特征在于,包括:高速串行总线和在所述虚拟化加速设备上配置串口设备所需的多个寄存器,并将所述多个寄存器映射到所述虚拟化加速设备的配置空间中,以面向物理机实现虚拟化的串口设备;所述虚拟化加速设备通过所述高速串行总线与所述物理机连接;以及所述虚拟化的串口设备,用于在所述虚拟化加速设备通过所述高速串行总线与所述物理机连接的情况下,配合所述物理机进行串口数据的收发;其中,所述虚拟化的串口设备是硬件实现;

其中,所述多个寄存器至少包括:发送保持寄存器THR、接收缓冲寄存器RBR和线路状态寄存器LSR;

所述虚拟化的串口设备,用于将所述物理机通过所述高速串行总线向THR写入的第一串口数据输出至所述虚拟化加速设备的内存缓存中,并将LSR中的THR状态位置1;以及将从所述内存缓存中读取的第二串口数据写入RBR,并将LSR的数据准备状态位置1,以使得所述物理机在检测到LSR的数据准备状态位置1时通过所述高速串行总线从RBR中读取所述第二串口数据;以及在所述第二串口数据被读取完毕后将所述LSR的数据准备状态位置0。

11.根据权利要求10所述的设备,其特征在于,所述虚拟化加速设备的内存缓存,用于缓存所述物理机通过所述虚拟化的串口设备进行收发的串口数据;

所述虚拟化加速设备的处理器在配合物理机通过所述虚拟化的串口设备进行串口数据的收发时,具体用于:从所述内存缓存中读取所述物理机经所述虚拟化的串口设备写入的第一串口数据并输出,或向所述内存缓存数据写入所述物理机需要接收的第二串口数据,以供所述虚拟化的串口设备读取并发送给所述物理机。

12.一种物理机,其特征在于,包括:存储器和处理器;

所述存储器,用于存储计算机程序;

所述处理器,与所述存储器耦合,用于执行所述计算机程序,以用于:识别虚拟化的串口设备,并通过所述虚拟化的串口设备进行串口数据的收发;其中,所述虚拟化的串口设备是在与所述物理机通过高速串行总线连接的虚拟化加速设备上配置串口设备所需的多个寄存器,并将所述多个寄存器映射到所述虚拟化加速设备的配置空间中实现的,所述虚拟化的串口设备是硬件实现;

其中,所述多个寄存器至少包括:发送保持寄存器THR、接收缓冲寄存器RBR和线路状态寄存器LSR;

所述处理器,用于通过所述高速串行总线向THR写入第一串口数据,以供所述虚拟化的串口设备将THR中的第一串口数据输出至所述虚拟化加速设备的内存缓存中并将LSR中的THR状态位置1;以及

在检测到LSR的数据准备状态位置1时,通过所述高速串行总线从RBR中读取第二串口数据,所述LSR的数据准备状态位是所述虚拟化的串口设备将从所述内存缓存中读取的第二串口数据写入RBR后将LSR的数据准备状态位置1的。

13.根据权利要求12所述的物理机,其特征在于,所述处理器在识别虚拟化的串口设备时,具体用于:

对所述高速串行总线上的设备进行枚举,在发现所述虚拟化加速设备的情况下,根据所述虚拟化加速设备的配置空间中至少部分寄存器的值,识别到所述虚拟化的串口设备。

14.根据权利要求13所述的物理机,其特征在于,所述处理器还用于:在首次识别到所述虚拟化的串口设备时,为所述虚拟化的串口设备命名,并修改操作系统中串口输出参数中的串口名称为所述虚拟化的串口设备的名称。

15.一种数据传输方法,其特征在于,适用于虚拟化加速设备,所述虚拟化加速设备上配置串口设备所需的多个寄存器,并将所述多个寄存器映射到所述虚拟化加速设备的配置空间中以实现面向物理机的虚拟化的串口设备,所述虚拟化的串口设备是硬件实现,所述多个寄存器至少包括:发送保持寄存器THR、接收缓冲寄存器RBR和线路状态寄存器LSR;

所述方法包括:

接收所述物理机通过所述虚拟化的串口设备发送的第一串口数据,包括:接收所述物理机通过高速串行总线向THR写入的第一串口数据,将THR中的第一串口数据输出至所述虚拟化加速设备的内存缓存中,将LSR中的THR状态位置1,并将所述内存缓存中的第一串口数据输出;

或者

接收来自外部的第二串口数据,包括:将从所述内存缓存中读取的第二串口数据写入RBR,并将LSR的数据准备状态位置1,以供所述物理机在检测到LSR的数据准备状态位置1时通过所述高速串行总线从RBR中读取所述第二串口数据,以及在所述第二串口数据被读取完毕后将所述LSR的数据准备状态位置0;其中,所述虚拟化加速设备与所述物理机通过高速串行总线连接。

16.一种存储有计算机程序的计算机可读存储介质,其特征在于,当所述计算机程序被处理器执行时,致使所述处理器实现权利要求15所述方法中的步骤。

说明书 :

计算机设备、虚拟化加速设备、数据传输方法及存储介质

技术领域

[0001] 本申请涉及计算机技术领域,尤其涉及一种计算机设备、虚拟化加速设备、数据传输方法及存储介质。

背景技术

[0002] 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,UART)是串口收发的逻辑电路,通常用于嵌入式系统,负责实现其所在物理机与外部设备之间的
异步通信。在物理机运行过程中,可以通过UART输出一些信息,例如系统日志等。但是,UART
是一种低速数据通信协议,其数据输出速率较慢,尤其是在UART输出数据会触发CPU关中断
的情况下,还会导致CPU关中断时间较长,降低CPU使用率。

发明内容

[0003] 本申请的多个方面提供一种计算机设备、虚拟化加速设备、数据传输方法及存储介质,用以提高CPU的使用率,保证物理机服务性能的稳定性。
[0004] 本申请实施例提供一种计算机设备,包括:物理机和虚拟化加速设备;虚拟化加速设备通过高速串行总线与物理机连接;虚拟化加速设备上实现有面向物理机的虚拟化的串
口设备,用于配合物理机进行串口数据的收发;物理机,用于识别虚拟化的串口设备,并通
过虚拟化的串口设备进行串口数据的收发。
[0005] 本申请实施例还提供一种虚拟化加速设备,包括:高速串行总线和面向物理机实现的虚拟化的串口设备;所述虚拟化加速设备通过所述高速串行总线与所述物理机连接;
以及所述虚拟化的串口设备,用于在所述虚拟化加速设备通过所述高速串行总线与所述物
理机连接的情况下,配合所述物理机进行串口数据的收发。
[0006] 本申请实施例还提供一种物理机,包括:存储器和处理器;存储器,用于存储计算机程序;处理器,与存储器耦合,用于执行计算机程序,以用于:识别虚拟化的串口设备,并
通过虚拟化的串口设备进行串口数据的收发;其中,虚拟化的串口设备是在与物理机通过
高速串行总线连接的虚拟化加速设备上实现的。
[0007] 本申请实施例还提供一种数据传输方法,适用于虚拟化加速设备,在虚拟化加速设备上实现有面向物理机的虚拟化的串口设备,方法包括:接收物理机通过虚拟化的串口
设备发送的第一串口数据,并将第一串口数据输出;或者接收来自外部的第二串口数据,并
通过虚拟化串口设备将第二串口数据发送给物理机;其中,虚拟化加速设备与物理机通过
高速串行总线连接。
[0008] 本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,当计算机程序被处理器执行时,致使处理器实现本申请实施例提供的数据传输方法中的步骤。
[0009] 本申请实施例还提供一种计算机程序产品,包括计算机程序/指令,当计算机程序/指令被处理器执行时,致使处理器实现本申请实施例提供的数据传输方法中的步骤。
[0010] 在本申请实施例中,为物理机部署虚拟化加速设备,物理机与虚拟化加速设备通过高速串行总线互联,借助于虚拟化加速设备可对串口设备进行虚拟化,即在虚拟化加速
设备上实现面向物理机的虚拟化的串口设备,基于此,物理机可通过该虚拟化的串口设备
实现串口数据的收发,对物理机来说,只需通过高速串行总线将数据传输至虚拟化的串口
设备即可,后续传输动作由虚拟化加速设备完成,借助于高速串行总线在传输速度上的优
势,可大大提高物理机进行串口数据传输的速率,尤其是在传输串口数据时会触发CPU关中
断的情况下大大缩短物理机因为传输串口数据而引起的关中断的时间窗口,有利于提高物
理机CPU的使用率,保证物理机服务性能的稳定性。

附图说明

[0011] 此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0012] 图1a为本申请示例性实施例提供的一种计算机设备的结构示意图;
[0013] 图1b为本申请示例性实施例提供的另一种计算机设备的结构示意图;
[0014] 图1c为本申请示例性实施例提供的又一种计算机设备的结构示意图;
[0015] 图2为本申请示例性实施例提供的再一种计算机设备的结构示意图;
[0016] 图3为本申请示例性实施例提供的一种数据传输方法的流程示意图;
[0017] 图4为本申请示例性实施例提供的一种物理机的结构示意图。

具体实施方式

[0018] 为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一
部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做
出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0019] 以下结合附图,详细说明本申请各实施例提供的技术方案。
[0020] 图1a为本申请示例性实施例提供的一种计算机设备的结构示意图。如图1a所示,该计算机设备100至少包括:物理机10和虚拟化加速设备20。
[0021] 在本实施例中,并不对物理机10的设备形态进行限制,可以是任何具有一定计算、存储和通信能力的实体设备,例如可以是台式电脑、笔记本电脑、智能手机或IOT设备等终
端设备,也可以是常规服务器、主机、服务器阵列等服务端设备。另外,本实施例也不对物理
机10的实现结构进行限制,可以包括处理器、内存、网卡芯片、IO总线、音视频组件等内部组
件。其中,物理机10还可以包括硬盘、SSD卡等非易失性存储资源,当然,物理机10也可以不
包括硬盘、SSD卡等非易失性存储资源,而是借助于虚拟化加速设备20实现存储资源的虚拟
化,对接云盘、网络附属存储设备(NetWork Attached Storage,NAS)等云上存储资源。
[0022] 除上述内部组件之外,物理机10上还可以运行操作系统(Operating System,OS)、一个或多个应用程序等,其中,OS、应用程序以及相关程序数据等可存储在物理机10本地的
非易失性存储资源或云上存储资源中。进一步,本实施例的物理机10还可以包括一些外部
设备,例如键盘、鼠标、输入笔、打印机、显示器等。需要说明的是,物理机10所包含的内部组
件或外部设备,例如音视频组件、显示器等,会因为设备形态的不同而有所不同。例如,如果
物理机10为终端设备,则可以包含音视频组件、显示器等,如果物理机10是服务端设备,则
可以不包含音视频组件、显示器等。
[0023] 在本实施例中,虚拟化加速设备20是一款可以实现虚拟化技术的设备,且可以帮助与其互联的物理机10实现至少部分虚拟化功能,即物理机10可以将部分或全部虚拟化功
能卸载到虚拟化加速设备20上,从而获得性能上的加速。本实施例并不限定虚拟化加速设
备20的实现形态,其实现形态可以是板卡或芯片。如图1a所示,虚拟化加速设备20具有对外
接口,例如高速串行总线203,包括但不限于:外设部件互连标准(Peripheral Component 
Interconnect)总线、外设部件互联扩展总线标准(Peripheral Component Interconnect 
Express,PCIE)总线。可选地,如图1a所示,该虚拟化加速设备20具有自己的计算资源,例如
处理器201,其中,处理器201可以是CPU、GPU、ASIC芯片或SOC芯片等,对此不做限定。可选
地,虚拟化加速设备20还可以有自己的存储资源,例如可以包括内存、硬盘等本地存储资
源,也可以包括云盘、NAS等云存储资源。图1b‑图2中所示的内存缓存204即为虚拟化加速设
备20的本地存储资源。进一步,虚拟化加速设备20还具有网卡和自己的网络资源,未在图1a
中示出。
[0024] 在本实施例中,虚拟化加速设备20采用软硬一体化设计,不仅包括上文提到的一些硬件资源,还包括运行在硬件资源上的软件资源,例如操作系统、用于实现虚拟化技术的
软件以及相关硬件的驱动程序等。其中,用于实现虚拟化技术的软件可以采用但不限于:
Hypervisor,又称虚拟机监视器(英语:virtual machine monitor)。Hypervisor是一种运
行在硬件和操作系统之间的中间软件,该软件可以让多个操作系统和应用共享一套基础物
理资源,因此,也可以看作是虚拟环境中的“元”操作系统,是实现虚拟化技术的核心。
[0025] 在本实施例中,虚拟化加速设备20通过高速串行总线203与物理机10互联,即物理机10搭载虚拟化加速设备20,可以保证两者之间信息传输的可靠性和高效性,为将物理机
10上实现的计算、存储、网络等虚拟化的部分或全部逻辑卸载到虚拟化加速设备20上提供
了条件。在此基础上,借助于虚拟化加速设备20的软硬件资源,可以将原本在物理机10上实
现的计算、存储、网络等虚拟化的部分逻辑卸载(offload)到虚拟化加速设备20上,不仅可
以提升虚拟化的性能,降低成本,而且能够保证物理机10具有虚拟机功能,能够像虚拟机一
样对接云盘和VPC网络,还能保证物理机10独自使用自己的计算、存储等资源,不存在多个
虚拟机共享资源的问题,从而将物理机10变成一种兼具虚拟机弹性和物理机性能的计算设
备。该计算设备具有较高的隔离性,且兼具虚拟机的迁移优势和弹性云化部署价值,还可以
支持快速交付、兼容虚拟机镜像、云存储设备启动、挂接云存储设备、物理机故障的迁移恢
复、自动化运维等优势,具有很高的应用价值。另外,虚拟化加速设备20通过高速串行总线
203与物理机10互联,可以保证两者之间信息传输的可靠性和高效性。当然,虚拟化加速设
备20也可以通过其它方式与物理机10互联,例如网络互联。
[0026] 在实际应用中,物理机10经常需要通过物理的串口设备,例如,UART设备,输出一些信息,例如系统日志,但是,物理机10上自带的串口设备的输出速率较慢,尤其是在一些
应用场景中,物理机10通过物理串口设备输出数据时,可能会触发物理机10的处理器关中
断,在处理器关中断期间,可能会造成处理器响应不及时,造成服务性能的波动,用户体验
下降。鉴于此,在本申请实施例中,借助于虚拟化加速设备20可实现面向物理机10的虚拟化
的串口设备205,该虚拟化的串口设备205属于硬件实现,使得物理机10可通过该虚拟化的
串口设备205实现串口数据的收发;对物理机10来说,只需要将要发送的串口数据传输至虚
拟化的串口设备205,或者只需要通过高速串行总线203从虚拟化的串口设备205上读取要
接收的串口数据即可,关于串口数据收发的其它处理动作均在虚拟化加速设备20上完成,
借助于高速串行总线在传输速度上的优势,可大大提高串口数据的传输速率,尤其是在传
输串口数据时会触发CPU关中断的情况下大大缩短物理机10因为传输串口数据而引起的关
中断的时间窗口,有利于提高CPU的使用率,保证物理机10服务性能的稳定性。
[0027] 在一可选实施例中,虚拟化加速设备20采用PCI或PCIE与物理机10互联,相对于物理机10而言,虚拟化加速设备20可视为挂载于物理机10上的PCI或PCIE设备,故虚拟化加速
设备20具有自己的配置空间,该配置空间用于存储虚拟化加速设备20的一些描述信息,例
如,虚拟化加速设备的生产厂商、虚拟化加速设备的属性(虚拟化加速设备是什么设备)或
者虚拟化加速设备20可以实现的功能等。基于此,在虚拟化加速设备20上实现虚拟化的串
口设备205时,具体可以是在虚拟化加速设备20上配置串口设备所需的多个寄存器,并将多
个寄存器映射到虚拟化加速设备20的配置空间中,以实现虚拟化的串口设备205。
[0028] 基于上述,物理机10在识别虚拟化的串口设备205时,具体可以对高速串行总线203上的设备进行枚举,枚举是指对挂载到高速串行总线203上的所有设备进行遍历,并获
取设备对应的配置空间中信息的过程,整个过程中,物理机10根据每个设备的配置空间中
的信息,可发现挂载到高速串行总线203上的所有设备。可选地,物理机10可以按照指定的
时间周期,对高速串行总线上的设备进行枚举,该时间周期可以是1秒、1分钟或者1小时等;
也可以在每次上电的时候,对高速串行总线上的设备进行枚举。在本实施例中,首先可以识
别到虚拟化加速设备20,进一步,在发现虚拟化加速设备20的情况下,可根据其配置空间中
至少部分寄存器的值,识别到虚拟化的串口设备205,并加载该虚拟化的串口设备205的驱
动。其中,至少部分寄存器可以是与串口设备205相关的部分寄存器,也可以是与串口设备
205相关的全部寄存器,对此不做限定。
[0029] 在本申请一些可选实施例中,考虑到物理机10上具有自带的串口设备,为了便于物理机10能够通过虚拟化的串口设备205进行串口数据收发,而不再使用自带的串口设备,
因此在首次识别到虚拟化的串口设备205时,物理机10可以为该虚拟化的串口设备205命
名,例如,可以按照默认的串口设备的命名方式,例如,虚拟化的串口设备205的名称可以是
串口标识符+数字,例如,ttyS0、ttyS1或者ttyS2等;以及在为虚拟化的串口设备命名后,将
操作系统默认的串口输出参数中的串口名称修改为虚拟化的串口设备的名称,以便于在后
续能够通过虚拟化的串口设备205进行串口数据收发。可选地,一种修改串口输出参数中的
串口名称的方式包括:在给物理机上电时,进入操作系统启动界面,通过命令行的方式,修
改串口输出参数中的串口名称,但不限于此。
[0030] 在一可选实施例中,虚拟化加速设备20还包括:内存缓存204,如图1b‑图2所示。该内存缓存204用于缓存物理机10通过虚拟化的串口设备205进行收发的串口数据。为了便于
描述和区分,将物理机10需要向外发送的串口数据称为第一串口数据,将需要物理机10接
收的串口数据称为第二串口数据。下面对虚拟化加速设备20配合物理机10通过虚拟化的串
口设备205进行串口数据收发的过程进行描述:
[0031] 物理机10通过虚拟化的串口设备205发送第一串口数据的过程:首先,物理机10通过高速串行总线将第一串口数据发送给虚拟化的串口设备205,虚拟化的串口设备205将第
一串口数据输出至内存缓存204,由处理器201从内存缓存204中读取第一串口数据并输出。
可选地,虚拟化的串口设备205可以一位一位的将第一串口数据输出至内存缓存204,处理
器201可以在内存缓存204溢出之前读取内存缓存204中已经存储的数据位并输出。进一步
可选地,处理器201可以按照固定的数据大小,从内存缓存204中读取数据,例如每次从内存
缓存204中读取一个字节,直至将第一串口数据全部读取并输出为止。在图2中以将第一串
口数据输出给目标设备30为例进行图示,目标设备30可以是但不限于:VPC网络内的主机、
云存储设备或者管理设备等。例如,若第一串口数据为日志数据,则可以将该日志数据输出
给管理设备的控制台(console),计算机设备100的管理人员通过控制台进行分析以及调
试。
[0032] 物理机10通过虚拟化的串口设备205接收第二串口数据的过程:处理器201接收来自外部的第二串口数据,并将第二串口数据写入内存缓存204中,虚拟化的串口设备205在
识别到内存缓存204中具有待传输的数据时,从内存缓存204读取第二串口数据,并通过高
速串行总线203将第二串口数据发送给物理机10。
[0033] 其中,上述发送第一串口数据或接收第二串口数据的过程,由虚拟化加速设备20上的处理器201和虚拟化的串口设备205配合完成,虚拟化的串口设备205属于硬件实现,因
此串口数据的接收或发送过程属于软硬结合的实现方式,与采用纯软件逻辑实现的串口虚
拟化不同。
[0034] 在一可选实施例中,虚拟化的串口设备205需要的寄存器至少包括:发送保持寄存器(Transmitter Holding Register,THR)、接收缓冲寄存器(Receiver Buffer Register,
RBR)和线路状态寄存器(Line Status Register,LSR)。THR主要用于缓存物理机10输出的
第一串口数据,RBR主要用于缓存物理机10将要接收的第二串口数据,LSR主要用于体现串
口数据发送或接收时的状态,例如,RBR中的串口数据是否被读走、THR是否可以接收数据以
及处理器处于读状态还是写状态等等。进一步,虚拟化的串口设备205还可以包括:中断使
能寄存器(Interrupt  Enable  Register,IER)、中断识别寄存器(Interrupt 
Identification Register,IIR),其中,IER用于在虚拟化的串口设备205需要向物理机10
发送第二串口数据时,向物理机10发送中断信号,以供物理机10响应该中断信号,读取第二
串口数据;IIR用于识别虚拟化的串口设备205的当前状态改变信息,一些状态改变信息可
以触发虚拟化的串口设备205向物理机10发送中断信号,例如,由于RBR的状态发生改变而
产生的状态改变信息,就可能触发虚拟化的串口设备205向物理机10发送中断信号。
[0035] 进一步可选地,虚拟化的串口设备205需要的寄存器还可以包括:先进先出控制寄存器(First in first out Control Register,FCR)、线控寄存器(Line Control 
Register,LCR)、调制解调器控制寄存器(Modem Control Register,MCR)、调制解调器状态
寄存器(Modem Status Register,MSR)、擦除寄存器(SCratch Register,SCR)等等。本申请
实施例实现的串口设备205是虚拟化的,在上述列举的寄存器中有一些是为了实现串口设
备205的完整性,在实际应用中,物理机通过虚拟化的串口设备205进行串口数据收发过程
中可能并不会进行动作。
[0036] 基于具有上述寄存器结构的串口设备205,物理机10通过该串口设备205进行串口数据收发的详细过程如下:
[0037] 当物理机10要发送第一串口数据时,物理机10可以通过高速串行总线向THR中写入第一串口数据,虚拟化的串口设备205检测到有数据写入THR中时,将THR中的第一串口数
据一位一位地输出至内存缓存204中,并将LSR的THR状态位置1,表示THR为空,可接收下一
个要发送的数据。当物理机10通过高速串行总线向THR中写入数据之后,但THR还未将写入
的数据传输至内存缓存204中时,LSR的THR状态位保持为0,此时物理机10不会继续向THR中
写入数据。第一串口数据被输出至内存缓存204之后,处理器201读取内存缓存204中已有的
数据并输出至目标设备30。
[0038] 当外部设备(如目标设备30)需要向物理机10发送第二串口数据时,亦即,物理机10需要接收第二串口数据时,处理器201先接收外部输入的第二串口数据并将第二串口数
据写入内存缓存204中,以供虚拟化的串口设备205进行读取;虚拟化的串口设备205依次从
内存缓存204中读取第二串口数据,并将第二串口数据写入RBR中,接着将LSR的数据准备状
态位置1,表示RBR中的串口数据已经准备就绪,物理机10随时可以通过高速串行总线将RBR
中的串口数据读走。物理机10在检测到LSR的数据准备状态位置1时,通过高速串行总线从
RBR中读取第二串口数据;在第二串口数据被读取完毕后,虚拟化的串口设备205将LSR的数
据准备状态位置0,表示物理机10已经将数据读走,虚拟化的串口设备205可以继续从内存
缓存204中读取数据并写入RBR中,依次循环,直至所有第二串口数据传输完毕。
[0039] 在本申请实施例中,并不限定虚拟化加速设备20的硬件实现结构。可选地,虚拟化加速设备20可实现为可插拔的板卡结构,如图1b和图1c所示。进一步,如图1b所示,虚拟化
加速设备20实现的板卡上包括第一处理芯片20a和可编程逻辑器件20b。其中,可编程逻辑
器件20b可以是现场可编程门阵列(Field‑Programmable Gate Array,FPGA)或复杂可编程
逻辑器件(Complex Programmable Logic Device,CPLD)等。第一处理芯片20a可以是ASIC
芯片或SOC芯片。如图1b所示,处理器201和内存缓存204位于第一处理芯片20a上实现;虚拟
化的串口设备205位于可编程逻辑器件20b上实现。在图1b中,以FPGA为例对可编程逻辑器
件20b进行图示。其中,在可编程逻辑器件20b如FPGA上实现虚拟化的串口设备205,主要是
指在可编程逻辑器件20b实现这些串口设备205所需的寄存器,并由处理器201将这些寄存
器映射到虚拟化加速设备20的PCI或PCIE配置空间中。
[0040] 或者,如图1c所示,虚拟化加速设备20包括第二处理芯片20c;处理器201、内存缓存204以及虚拟化的串口设备205均位于第二处理芯片20c上实现。可选地,第二处理芯片
20c可以采用ASIC芯片或SOC。其中,在虚拟化加速设备20上实现虚拟化的串口设备205,主
要是指在第二处理芯片20上实现这些串口设备205所需的寄存器,并由处理器201将这些寄
存器映射到虚拟化加速设备20的PCI或PCIE配置空间中。在图1c所示实施例中,第二处理芯
片20c可采用定制化芯片,如定制化的ASIC芯片或SOC芯片。
[0041] 或者,如图2所示,虚拟化加速设备20包括第一处理芯片20a和第三处理芯片20d。其中,第一处理芯片20a可以采用ASIC芯片或SOC;第三处理芯片20d可以采用定制化芯片,
例如可以采用定制化的ASIC芯片或SOC芯片。如图2所示,处理器201和内存缓存204位于第
一处理芯片20a上实现;虚拟化的串口设备205位于第三处理芯片20d上实现。其中,在第三
处理芯片20d上实现虚拟化的串口设备205,主要是指在第三处理芯片20d上实现这些串口
设备205所需的寄存器,并由处理器201将这些寄存器映射到虚拟化加速设备20的PCI或
PCIE配置空间中。
[0042] 需要说明的是,基于上述可编程逻辑器件20b、第二处理芯片20c或第三处理芯片20d,可按需在虚拟化加速设备20上实现各种功能的硬件模块或设备,例如可以实现虚拟化
加速设备20所需的硬件模块或设备,也可以实现物理机10所需的其它硬件模块或设备,并
不限于虚拟化的串口设备。另外,由图1b、图1c和图2可知,本实施例中虚拟化的串口设备
205属于硬件实现。
[0043] 在本实施例中,物理机可通过该虚拟化的串口设备实现串口数据的收发,对物理机来说,只需通过高速串行总线将数据传输至虚拟化的串口设备,或者只需要通过高速串
行总线从虚拟化的串口设备上读取数据即可,关于串口数据收发的其它动作由虚拟化加速
设备完成,借助于高速串行总线在传输速度上的优势,可大大提高物理机进行串口数据传
输的速率,有利于提高物理机CPU的使用率,保证物理机服务性能的稳定性。
[0044] 本申请实施例还提供一种数据传输方法,该方法适用于虚拟化加速设备,该虚拟化加速设备上实现有面向物理机的虚拟化的串口设备,如图3所示,该方法包括:
[0045] 301、接收物理机通过虚拟化的串口设备发送的第一串口数据,并将第一串口数据输出;
[0046] 302、接收来自外部的第二串口数据,并通过虚拟化串口设备将第二串口数据发送给物理机;其中,虚拟化加速设备与物理机通过高速串行总线连接。
[0047] 在本实施例中,步骤301与步骤302为和/或关系,数据传输方法可以只包含步骤301,也可以只包含步骤302,还可以同时包含步骤301和步骤302,在图3中,以数据传输方法
同时包含步骤301和步骤302为例进行图示,但并不限于此。
[0048] 本申请实施例的数据传输方法,为物理机部署虚拟化加速设备,物理机与虚拟化加速设备通过高速串行总线互联,借助于虚拟化加速设备可对串口设备进行虚拟化,即在
虚拟化加速设备上实现面向物理机的虚拟化的串口设备,基于此,物理机可通过该虚拟化
的串口设备实现串口数据的收发,对物理机来说,只需通过高速串行总线将数据传输至虚
拟化的串口设备即可,后续传输动作由虚拟化加速设备完成,借助于高速串行总线在传输
速度上的优势,可大大提高物理机进行串口数据传输的速率,尤其是在传输串口数据时会
触发CPU关中断的情况下大大缩短物理机因为传输串口数据而引起的关中断的时间窗口,
有利于提高物理机CPU的使用率,保证物理机服务性能的稳定性。
[0049] 需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤301至步骤302的执行主体可以为设备
A;又比如,步骤301的执行主体可以为设备A,步骤302的执行主体可以为设备B;等等。
[0050] 另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行
执行,操作的序号如301和302等,仅仅是用于区分开各个不同的操作,序号本身不代表任何
的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或
并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、
模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
[0051] 除了上述计算机设备,本申请实施例还提供的一种虚拟化加速设备,如图1a‑图2所示,该虚拟化加速设备20包括:高速串行总线203和面向物理机10实现的虚拟化的串口设
备205;虚拟化加速设备20通过高速串行总线203与物理机10连接;虚拟化的串口设备205在
虚拟化加速设备20通过高速串行总线203与物理机10连接的情况下,配合物理机10进行串
口数据的收发。其中,关于虚拟化加速设备20、物理机10、高速串行总线203和虚拟化的串口
设备205的详细内容可参见前述实施例,在此不再赘述。
[0052] 在一可选实施例中,虚拟化加速设备还包括:处理器201;处理器用于,在虚拟化加速设备上实现面向物理机的虚拟化的串口设备,并配合物理机通过虚拟化的串口设备进行
串口数据的收发。
[0053] 在一可选实施例中,所述处理器在虚拟化加速设备上实现虚拟化的串口设备时,具体用于:在虚拟化加速设备上配置串口设备所需的多个寄存器,并将多个寄存器映射到
虚拟化加速设备的配置空间中,以实现虚拟化的串口设备。
[0054] 在一可选实施例中,虚拟化加速设备20还包括:内存缓存204。内存缓存可缓存物理机通过虚拟化的串口设备进行收发的串口数据;处理器在配合物理机通过虚拟化的串口
设备进行串口数据的收发时,具体用于:从内存缓存中读取物理机经虚拟化的串口设备写
入的第一串口数据并输出,或向内存缓存数据写入物理机需要接收的第二串口数据,以供
虚拟化的串口设备读取并发送给物理机。
[0055] 在一可选实施例中,多个寄存器至少包括:THR和LSR;虚拟化的串口设备可在物理机通过高速串行总线将第一串口数据写入THR之后,将THR中的第一串口数据输出至内存缓
存中,并将LSR的THR状态位置1。
[0056] 在一可选实施例中,多个寄存器至少包括:RBR和LSR;虚拟化的串口设备将从内存缓存中读取的第二串口数据写入RBR,并将LSR的数据准备状态位置1,以供物理机通过高速
串行总线从RBR中读取第二串口数据;以及在第二串口数据被读取完毕后将LSR的数据准备
状态位置0。
[0057] 本申请实施例的虚拟化加速设备,与物理机通过高速串行总线互联,借助于虚拟化加速设备可对串口设备进行虚拟化,即在虚拟化加速设备上实现面向物理机的虚拟化的
串口设备,基于此,物理机可通过该虚拟化的串口设备实现串口数据的收发,对物理机来
说,只需通过高速串行总线将数据传输至虚拟化的串口设备即可,后续传输动作由虚拟化
加速设备完成,借助于高速串行总线在传输速度上的优势,可大大提高串口数据的传输速
率,尤其是在传输串口数据时会触发CPU关中断的情况下大大缩短物理机因为传输串口数
据而引起的关中断的时间窗口,有利于提高CPU的使用率,保证物理机服务性能的稳定性。
[0058] 相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,当计算机程序被处理器执行时,致使处理器能够实现本申请实施例提供的数据传输方法中的
步骤。
[0059] 相应地,本申请实施例还提供一种计算机程序产品,包括计算机程序/指令,当所述计算机程序/指令被处理器执行时,致使所述处理器实现本申请实施例提供的数据传输
方法中的步骤。
[0060] 除了上述计算机设备和虚拟化加速设备,本申请实施例还提供一种物理机,该物理机可以通过高速串行总线,如PCI或PCIE与前述实施例中的虚拟化加速设备连接;如图4
所示,该物理机包括:存储器44和处理器45。
[0061] 存储器44,用于存储计算机程序,并可被配置为存储其它各种数据以支持在物理机上的操作。这些数据的示例包括用于在物理机上操作的任何应用程序或方法的指令。
[0062] 存储器44可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存
储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或
光盘。
[0063] 处理器45,与存储器44耦合,用于执行存储器44中的计算机程序,以用于:识别虚拟化的串口设备,并通过虚拟化的串口设备进行串口数据的收发;其中,虚拟化的串口设备
是在与物理机通过高速串行总线连接的虚拟化加速设备上实现的。
[0064] 在一可选实施例中,处理器45在识别虚拟化的串口设备时,具体用于:对高速串行总线上的设备进行枚举,在发现虚拟化加速设备的情况下,根据虚拟化加速设备的配置空
间中至少部分寄存器的值,识别到虚拟化的串口设备。
[0065] 在一可选实施例中,处理器45还用于:在首次识别到虚拟化的串口设备时,为虚拟化的串口设备命名,并修改操作系统中串口输出参数中的串口名称为虚拟化的串口设备的
名称。
[0066] 在一可选实施例中,处理器45在通过虚拟化的串口设备进行串口数据收发时,具体用于:通过高速串行总线将第一串口数据写入虚拟化的串口设备上的THR,以供虚拟化的
串口设备读取并写入虚拟化加速设备上的内存缓存;或者在检测到虚拟化的串口设备的
LSR的数据准备状态位置1时,通过高速串行总线从虚拟化的串口设备的RBR中读取第二串
口数据。
[0067] 进一步,如图4所示,该物理机还包括:通信组件46、显示器47、电源组件48、音频组件49等其它组件。图4中仅示意性给出部分组件,并不意味着物理机只包括图4所示组件。需
要说明的是,图4中虚线框内的组件为可选组件,而非必选组件,具体可视物理机的产品形
态而定。
[0068] 上述图4中的通信组件被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G、3G、4G/
LTE、5G等移动通信网络,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接
收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信
组件还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)
技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
[0069] 上述图4中的显示器包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触
摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感
器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时
间和压力。
[0070] 上述图4中的电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力
相关联的组件。
[0071] 上述图4中的音频组件,可被配置为输出和/或输入音频信号。例如,音频组件包括一个麦克风(MIC),当音频组件所在设备处于操作模式,如呼叫模式、记录模式和语音识别
模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储
器或经由通信组件发送。在一些实施例中,音频组件还包括一个扬声器,用于输出音频信
号。
[0072] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实
施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机
可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产
品的形式。
[0073] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流
程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序
指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产
生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实
现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0074] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指
令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或
多个方框中指定的功能。
[0075] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或
其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一
个方框或多个方框中指定的功能的步骤。
[0076] 在一个典型的配置中,计算设备包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
[0077] 内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介
质的示例。
[0078] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。
计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、
动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电
可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器 
(CD‑ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他
磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文
中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据
信号和载波。
[0079] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包
括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要
素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要
素的过程、方法、商品或者设备中还存在另外的相同要素。
[0080] 以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同
替换、改进等,均应包含在本申请的权利要求范围之内。