王辉华,梁 浩,李舒婷,潘文静,周 娟
(福建福清核电有限公司,福建福清 350300)
依据中国互联网信息和数据使用的变化趋势,计算机用户每天仍然需要并处理数十万个互联网数据,许多传统的计算机软硬件方法将越来越多。随着计算机软硬件的安装和维护成本越来越高,它将成为信息技术和互联网相关应用快速发展、普及和使用的最新技术壁垒。为了快速解决技术问题,谷歌于2006年启动了“谷歌101计划”,并率先正式实施了云计算的新概念。云计算的目标是逐渐将核心计算能力转化为可动态管理和操作的逻辑资源。虚拟化已经成为未来云计算架构的五大核心技术要素之一。虚拟化的核心技术有很多,根据实际运行模式可分为、全虚拟化和半虚拟化;根据应用实现的类型,它可以分为硬件虚拟化应用和纯软件虚拟化应用。全虚拟化服务可以为客户系统提供完整可靠的虚拟计算平台。半虚拟化技术必须通过操作系统虚拟化和VMM 服务配合实现。
GPU 本身是云计算系统的另一个强大硬件元素,它被广泛应用于云计算平台、天气预报系统等许多重要领域。除了计算云,高性能GPU 已广泛应用于亚马逊天文台EC2和阿里巴巴Eun 平台。GPU 可以使用越来越多的嵌入式实时内核,这就使得GPU 支持越来越强大的虚拟实时计算平台。如果一个多用户系统有一个可以同时使用数据阵列的GPU,这无疑将得到显著改善。
此外,GPU 芯片广泛应用于视频解码器、图像播放器、生物医学设备和云计算设备。在大型应用中,计算的高性能要求可能会有所不同[1]。一些系统可以完全支持高性能GPU 虚拟技术的使用,其技术对各种计算机应用也提出了很高的要求。
由于许多商业和竞争原因,GPU 的许多设计和细节不被披露,每一代产品的技术性能也非常不同。此外,GPU 硬件接口不开放,主要原因是缺乏统一的标准。为了方便和提高GPU 的使用效率,系统只能根据制造商提供的驱动程序安装驱动软件。这些原因也极大地增加了图形驱动程序设计的虚拟性和实用性。
与原始硬件系统相比,虚拟硬件系统平台上的程序运行速度导致的性能损失是另一个重要原因和问题。如果多余的功耗太大,直接减少使用GPU 芯片会增加设备成本。作为一个虚拟平台,GPU 对应用程序和驱动程序系统的使用和可见性的影响在很大程度上取决于实际部署和复杂性。
虚拟GPU 功能包括两大任务:完成硬件建模和硬件数据共享。硬件建模方法是通过硬件仿真软件获取虚拟GPU 提供的硬件,而无需实际访问虚拟GPU硬件资源的方法。硬件共享意味着管理多个GPU 硬件资源,以便能够更广泛地使用它们。
为保证GPU 虚拟技术引进和实施任务的完成和实现,GPU 虚拟集成的主要应用模型可分为硬件建模、API 重定向、硬件直接桥接和应用程序虚拟自适应四大应用。硬件直接仿真技术是指在系统本身没有物理硬件的情况下,通过纯仿真软件直接实现仿真设备的物理元素。这与将某些专用应用程序或高效GPU 硬件虚拟化的可能性直接相关,这在实际系统开发和操作实践中尤为必要。应用于图形显示技术建模和处理设备开发,优化高性能GPU 系统架构,研发,设计和应用等专业领域。API 重定向的解决方案是,当虚拟客户端直接管理GPU 资源时,使用主机虚拟监视器作为另一个中心集线器。当无法完全考虑更改调用接口以共享和管理GPU 时,客户端虚拟机监视器可以使用不同的解决方案,使用接口模块和终端模块之间的直接通信通道。设备模块之间的直接连接解决了虚拟机监视器无法有效使用GPU 资源的问题。全局虚拟技术是对虚拟机监视器的修改,使监视器本身无法更有效地管理GPU 资源,实现了虚拟机与GPU 节点之间的资源数据的实时无缝利用。
PF:在模块化节点上运行的主设备。模块化计算机中使用的GPU 或GPU 驱动程序模块通常可靠地安装在集成PF 模块中。PF 设备驱动程序管理是所有设备管理器。与通用GPU 驱动程序管理的另一个显著区别是,它在整个生命周期和整个硬件规划周期中完全管理几乎所有的VF 驱动程序。事实上,它控制着一个完整的设备驱动程序。
PCI 设备。通过VFIO 模块启动虚拟机时,QEMU 将VF 设备作为PCI 设备带宽返回虚拟机,安装在虚拟机上的操作系统将自动安装在相应的VF PCI设备上,该设备通向带宽设备。换句话说,VF 设备实际上只占用GPU 资源的一小部分。如果至少有两个VF 和PF 设备断开连接,那么很明显,在两个VF虚拟机上运行的引擎GPU 的实际显示特性对于宏级别的虚拟机至少可以是1/2。
软件仿真是指通过纯软件虚拟化,直接实现模拟GPU 在相关硬件逻辑单元中的功能需求的软件方法。早期的虚拟机技术通常只消耗主机内核中CPU的大部分计算能力,以及存储和操作模块的其他硬件资源。为了保证现有计算机环境系统的正常、连续运行,它不能通过虚拟机直接模拟外部硬件设备,并提供一些相关的实用计算功能。最基本的建模方法之一是虚拟机只能提供与GPU 和其他硬件相对应的少数硬件接口,以及与其他硬件相关的实际处理能力。最直观、最简单、最详细、最容易理解的演示方法之一是在GPU 模型中直观、实时地演示硬件的实际操作。由于软件建模还可能需要对GPU 的整个操作和其他复杂的硬件功能进行建模,因此软件建模方法至少应具有足够的灵活性和计算能力。然而,软件仿真方法可以直接模拟各种硬件系统的实时行为。目前,这种软件仿真方法正应对着越来越多人能够面对的各种领域的实际硬件测试问题。目前可以说,它已广泛应用于大型绘图和简单图形处理的功能需求分析和预测,以及大型复杂GPU 应用的图形设计技术的理论研究。
在通用计算机总线领域,GPGPU-SIM 基于CUDA 编程模型,分析了多目标指令的启动顺序,并在CPU 或CPU 上进行了软件仿真,后部由PTX 控制。
VGA 可以直接处理一些视频信号,对于用户来说,最好使用VGA 直接处理视频信号,在模拟信号处理过程中,可以为用户提供简单的功能。目前,这些GPU 芯片提供基本的二维图形显示或控制,广泛应用于大型虚拟显示和平台的设计。例如,KVM 和XEN 使用这些QEMU 芯片设计和开发各种虚拟图形显示和控制器。
在并行可编程模型的条件下,GPU 自动启动一个可与计算机同时工作的并行组(网格)。因此,这些平行导线通常分为块。通过软件仿真,成功地实现了GPGPU-SIM 卡。32并行线程可以在运行计算模块的管道上运行,并且可以使用SIMD 进行同步。如果条件分支不能同时发生在序列之间,则在同时使用收敛机制之前,它们不能自动同步。GPU-SIM 已被广泛应用于解决各种相关的应用问题,并对基于GPU技术的各种结构或新的功能特性进行了研究和验证。
框架重定向API 和设计模式允许在接口和终端模块中配置虚拟客户端功能和虚拟主机。接口模块设计用于应用程序需要访问的两个公共接口。主要用于连接GPU 驱动程序的支持模块提供对GPU 的直接访问。通用接口协议(如RPC 协议)广泛应用于前端和后端模块中的无缝通信。在图像显示和管理功能方面,VMGL 完全兼容映射接口,该接口是通过添加到虚拟机客户端数据库中的新模块接口直接从原始OpenGL 客户端库获得的。它还支持通过新的客户端虚拟节点数据库终端模块连接到原始OpenGL 库。WireGL 网络传输协议用于确保虚拟银行客户端调用映射控制命令直接发送到虚拟服务器。这避免了对客户端GPU 服务器的直接和间接访问。它不仅通过WireGL 协议提高了网络宽带资源的使用效率,而且还提供了高达86%VMGL 的本地GPU 显示效果。
GPU 的全虚拟化意味着应用程序可以直接使用GPU,而无需使用虚拟机上的所有硬件驱动器,即使用透明性。通常,设备模拟方法只能模拟内部结构简单、性能较差的虚拟硬件。API 重定向方法可以使设备的模拟性能接近原始虚拟硬件,但最大的技术缺点是必须更改客户端虚拟库存储中的程序库。设备直接连接方案的模拟性能相对较好,但发射率仍然较低。近年来提出的通用虚拟化GPU 实现方案结合了上述两种实现方案,实现了客户端虚拟机的充分利用和透明化。事实上,这种虚拟化方法和原理使用软件直接模拟寄存器等硬件上下文信息。上下文更改完成后,可以直接从软件连接硬件设备,并充分利用GPU 功能。
与设备之间的线性虚拟连接技术相比,GPU 的整个虚拟连接技术更具分裂性。同时,它的性能明显优于模拟设备。提供一个不需要更改的驱动程序,并将其加载到虚拟客户端。这是基于GPU 架构的全虚拟连接技术的最佳解决方案。gVirt 由英特尔青年大会高级工程师提出。通过图像应用实现了全虚拟GPU 系统,并对gHyvi 和gScale 的完整虚拟机进行了优化。首先Yukzum 等人提出了整个网格系统的虚拟化,然后Yukzum 等人实现了整个网格系统的虚拟化。
为了实现基于GPU 内核的完整平台虚拟化,基于Xen 开发了gvirt。基于Xen(dom0)结构,更改虚拟主机非常容易。gVirt 为视频存储和命令缓存、非性能通知资源和其他关键I 块寄存器区分多个GPU关键通道源和多个执行者身份源。为了向用户提供比原始GPU 处理器更快、更可靠、更紧凑的性能,gVirt 虚拟机可以支持直接访问影响隔离机制中性能的所有重要硬件资源。软件模拟方法是用户直接访问不重要的资源。可以有效支持虚拟机,还支持先进的存储区域管理技术,如彩色页面结构,使所有虚拟机用户都可以使用相对完整、独立、可靠的存储空间。首次成功地提出并应用了地址空间扩展等新技术和方法,大大降低了地址空间转换的额外成本。gVirt 首次成功实现了GPU 时间控制器。控制计划周期的长度可以显著缩短GPU 任务上下文的更改时间。GPU内存调度算法也可以独立于Xen 处理器调度算法来实现,这实际上意味着CPU 调度和GPU 内存支持对视频内存的并行访问。gHyvi 提出了一种较慢的基于Xen 的映射表机制,该机制提供了严格的写保护,并减少了映射表刷新时间和VMM 同步成本。
由于硬件的结合,处理器进程之间的切换可以在几秒钟内自动完成,但GPU 程序的数量并不小,GPU 编程频率可以达到每秒数百纳秒。对于相对简单的应用程序,GPU 的编程周期约为每秒1毫秒。在此期间,从一个上下文切换到另一个上下文大约需要50万h。实际转换只能使用大约一毫秒的预测时间。简单地说,GPU 本身消耗的时间和资源本质上是对客户端时间的浪费。客户端最多可以接收66%的GPU 资源。
在当今高速网络社会,对计算资源性能、大规模密集计算和工作负载能力的要求逐年提高,在云平台服务器上大规模部署高性能GPU 所需的硬件性能改进也在不断提高。为了尽快实现高性能GPU 在云平台服务器系统上的共享,建议尽可能提高高性能GPU 系统服务器的带宽利用率,使云服务器的管理更加简单。规范和逐步发展高性能GPU 系统的虚拟化和应用技术。本文对GPU 虚拟化技术进行了系统、详细的综述、研究、分析和比较。结果表明,经过近十年的快速发展,GPU 虚拟化系统的综合技术已经分为4个子领域:设备模拟、API 重定向、设备直连和虚拟化。本虚拟系统技术研究报告除了收集了大量国内外原始基础研究数据外,还旨在了解虚拟系统的总体技术框架、系统设计及相关操作规范。