基于国产服务器的虚拟化技术研究


jyyll
F-hawking 2023-03-21 10:26:41 52981
分类专栏: 资讯

作为云计算中的技术基础,服务器虚拟化技术在各类服务器中得到了广泛的应用。对于自主可控的国产服务器来说,虚拟化技术的研究也显得尤为重要。文章结合国产服务器的发展现状,对飞腾处理器在CPU虚拟化、内存虚拟化、时钟虚拟化和Hypervisor移植等方面进行了相关研究,分析了在国产处理器下如何实现虚拟化技术。

 

虚拟化技术简介

通常情况下,计算机操作系统、软件是直接运行在真实独立的物理硬件上的,而虚拟化技术则是在真实独立的物理硬件基础上,虚拟出对应资源供操作系统、软件进行使用。这种把有限的固定资源根据不同需求进行重新规划以达到最大利用率,实现简化管理、优化资源等目的的解决方案,就叫做虚拟化技术。虚拟化技术的本质就是实现将运行在真实环境上的操作系统或应用在虚拟出来的环境中运行。

 

国产服务器的发展现况

近年来,尤其是2018年中兴事件以来,武器装备国产化已提到了一个新的高度。中央陆续出台了系列文件,到2035年,我国武器装备要实现100%国产化。在国家的大力扶持下,龙芯、申威、兆芯、海光、飞腾等国产处理器企业发展迅速。

龙芯处理器采用的是MIPS体系结构,申威处理器采用的Alpha体系结构,这两个处理器虚拟化支持能力还在初级阶段,无法满足高性能的计算需求。

兆芯、海光、飞腾在虚拟化支持上较为成熟,可以支持云平台的部署和运行。兆芯处理器通过引进X86指令集和微内核设计,先后推出了ZX-C系列、KX-x000系列,近期推出的KX-6000系列主频达到了3.0GHz,还发布了KH-S20000安全增强型处理器。海光处理器则基于AMD授权的Zen架构x86服务器处理器Dhyana  x86始生产,但由于6月初AMD宣布不再授权新的架构给海光,因此海光处理器的迭代将会受到很大的影响。飞腾处理器立足于ARM架构,推出了FT-1500FT-2000FT2000+FT2500等一系列高性能处理器产品,联合了多家单位构建了以飞腾CPU为核心的全自主生态系统。从虚拟化支持能力及生态来说,当前飞腾处理器是首选,因此,本文将以飞腾2000+为例,探索在国产服务器飞腾 2000+上虚拟化技术研究。

 

基于飞腾处理器的虚拟化技术研究

飞腾处理器采用ARM架构,ARM下的虚拟化主要分为CPU

拟化、内存虚拟化、中断虚拟化、IO虚拟化、时钟虚拟化以及hy- pervisor移植几部分。

1.1 CPU虚拟化

ARM虚拟化的扩展与其他CPU架构非常不同。许多研究项目尝试在没有硬件虚拟化支持的情况下在ARM处理器上实现虚拟化,但是需要不同级别的半虚拟化且都不稳定。KVM针对ARM理器虚拟化的设计能够实现其在虚拟环境中运行未经任何修改的客户操作系统(Guest OS)。为了能在ARM架构的CPU中运行hyper- visorARM引入了一种新的CPU模式---HYP模式。图1展示了在 ARM架构中CPU的各种模式,其中有一种重要的CPU模式,叫做 HYP模式。信任域将模式分为两种状态,安全态和非安全态。一个特殊的监控模式提供了两种状态之间的切换。

1 ARM CPU 模式

HYP模式被作为trap和模拟需求被引入,用于在非安全态下支持虚拟化。与其他CPU模式、用户模式和内核模式相比,HYP模式具有更高的特权。在HYP模式下运行的软件可通过配置,使系统能够在触发了敏感指令或硬件中断的情况下从内核模式进入到HYP式。为了运行虚拟机,hypervisor程序必须至少有一部分时常驻在 HYP模式中。虚拟机将以用户和内核模式正常运行,直到其达到进HYP模式的条件为止。此时,CPU将进入HYP模式,将控制权限交给hypervisor,其可管理硬件资源,并为所有的虚拟机提供所需的隔离。一旦该触发条件被hypervisor处理完毕,CPU将会切换回用户态或内核态,这样虚拟机就可以继续执行。

ARM架构运行每个trap被配额制成直接切换到虚拟机的内核模式,而不是通过HYP模式来完成。这也就避免了每次系统调用或者页错误时进入到HYP模式,减少虚拟化的开销。

当运行一个虚拟机时,虚拟机管理的物理地址实际是中间物理地址(IPA),也被称作客户物理地址。其需要被转换成实际物理地址,即主机物理地址。类似于X86中的嵌套页表,ARM提供了第二组页表,即二级页表,其分别根据guesthost物理地址将 IPA转换成PA。二级转换可以在HYP模式中被禁止或使能。二级页表使用ARM的新的LPAE页表格式,与内核模式使用的页表格式略有不同。

1.1 中断虚拟化

ARM定义了通用终端控制器(GIC)的架构。GIC将中断从设备转发到CPU上,CPU通过查询GIC来探测该中断的来源。GIC多核配置中尤为重要,因为它用于生成处理器间中断(IPI)从一CPU核到另一个CPU核。中断可被配置为使CPU核进入HYP或者内核模式。将所有中断捕获到内核模式中,并让其被在内核模式下运行的操作系统软件直接处理是

很高效的,但是其不能在虚拟机上下文中工作,因为hypervisor将实现对硬件的控制,将所有中断捕获到HYP模式可确保hypervisor保留控制权,但是需要在软件中模拟虚拟中断,以便向虚拟机发出事件信号。

1.2 时钟虚拟化

ARM定义了通用计时器框架,其中包括对计时器虚拟化的支持。通用定时器提供了一个计数器,其可以用来测量系统运行

的时间,定时器还可被编程,是其在到达一定的时间后会向CPU出一个时钟中断。计时器可被hypervisorguest操作系统使用,但是为了对计时器提供隔离并保留控制权,hypervisor使用的计时器不能直接被guest操作系统配置和操作。如果guest操作系统需要访问此类计时器,则需要让CPU进入到HYP模式来实现,对于某些工作负载相对频繁的操作则会产生额外的开销。hypervisor也可能希望虚拟化虚拟机的时钟,因为让虚拟机直接访问计时器硬件将是问题。ARM通过引入一个新的计数器来实现虚拟化支持。可以将hypervisor配置为使用物理计时器,而将虚拟机配置成使用虚拟计时器。这样就可以使虚拟机在不进入HYP模式的情况下访问、编程和取消虚拟计时器。从内核态访问物理计时器和计数器是由HYP模式控制的,但是在内核模式下运行的软件总是可以访问虚拟计时器和虚拟计数器。

1.3 Hypervisor框架移植

Hypervisor在虚拟机与主机硬件之间提供了一个抽象层,允许

用户为运行着的虚拟机分配的内存总值超过主机的可用内存,这种技术称为内存过量分配。为了能够降低这个技术对虚拟机性能的影响,hypervisor必须提供高效率的内存回收机制。在国产服务器上同样需要移植Hypervisor框架。

Hypervisor框架移植工作主要包括核心分割虚拟化:split- modeCPU虚拟化、内存虚拟化、中断虚拟化、IO虚拟化、时钟虚拟化。

(1) split-mode。由于KVM/ARM是利用现有的内核为基础,也就意味着,在HYP模式下运行KVM/ARM,需要将Linux内核运行在HYP模式中。但由于Linux中依赖于底层架构的代码是在内核模式下工作的,并且不能在未进行任何修改的情况下在HYP模式下运行。同时,在HYP模式下运行整个内核会对本机性能产生负面影响。为解决这一问题,KVM/ARM引入了分裂模式虚拟化:hypervisor的核心进行分割,以便它能跨不同的CPU特权模式

2 split-mode

运行,从而利用每个CPU模式体的特定优点和功能。KVM/ARM使用分裂模式来实现虚拟化,利用HYP模式启动ARM的硬件虚拟化支持,同时利用以内核模式运行的现有服务。在无需对现有代码库进行大规模修改的前提下,分裂模式虚拟化将KVM/ARM Linux进行集成。

如图2所示,其是通过将hypervisor分解为两个组件(lowvisorhighvisor)来实现的。KVM/ARM使用内存映射接口在highvisorlowvisor之间根据需要进行共享数据。因此,highvisor显式地管理HYP模式的页表,将在HYP模式下执行的任何代码以及在highvi- sorlowvisor之间共享的任何数据结构映射到HYP模式和内核模式相同的虚拟地址空间中。

(2) CPU虚拟化。为了实现CPU的虚拟化,KVM/ARM必须向虚拟机提供一个接口,该接口本质上与底层的实际硬件CPU同,同时确保hypervisor具有硬件的控制权。这需要确保在虚拟机(下转第107

(1) 进入装配环境,首先进行装配体组件的筛选,利用上述的装配意图识别算法得到待装配组件和装配体组件中距离最短的装配特征集之间的距离Dist

(2) 如果Dist小于等于允许装配的距离,则按照建立的装配特征集和装配规则进行自动装配,接着继续执行(4);反之执行(3)。

(3) 如果Dist大于允许装配的距离,则设计人员根据装配体组件选择对话框选择相应的装配体装配组件,接着通过自动排序找出距离最近的装配特征集完成自动装配;如果不想选择装配体组件可以选择放弃,则不进行自动装配。

机器人完成装配示意图

(4) 如果两个装配特征集的方向相同,则装配时首先进行装

配方向的自动调整然后再完成装配;反之,直接装配。重复1至(4)操作,直至完成所需构型的模块化机器人搭建。

经过自动装配方法进行测试,可以较好地完成装配操作,其效果如图9所示。

总结

本文针对模块化机器人零件表达和装配问题,通过采用XML对零件模型进行完整表达,并利用完整表达的模块化机器人模型进行自动装配方法的研究。对完整表达的零件模型以及装配特征集进行了定义、结合Unity3D研究并实现了自动装方法的目标组件筛选,基于距离判断的装配意图识别等关键技术。最后实现了整个自动装配的流程,并通过一个实验对自动装配功能进行了测试,可以发现该方法可以很好地提高模块化机器人装配的效率

中运行的软件必须具有访问实际物理CPU上寄存器状态的能力,以及确保hypervisor及其主机内核相关联的物理硬件状态在运行的虚拟机中是持久的。不影响虚拟机的寄存器状态可通过保存虚拟机状态并在从虚拟机切换到主机时从内存中恢复主机状态来完成上下文的切换。KVM/ARM将对所有其他敏感状态的访问配置为trap HYP模式。

(1) 内存虚拟化。KVM/ARM通过在虚拟机中运行时为所有内存访问使能二级地址转换来提供内存虚拟化。二级地址转换只能HYP模式下进行配置,它的使用对虚拟机是透明的。highvisor理二级转换页表,只允许访问专门为一个虚拟机配置的内存;其他的访问操作将导致二级页错误,该错误将被hypervisor捕获。这种机制确保一个虚拟机不能访问属于hypervisor或其他虚拟机的内存和任何敏感数据。

(2) I/O虚拟化。KVM/ARM可以利用现有的QEMUVirtio

用户空间设备模拟来提供I/O虚拟化,在硬件层面,ARM架构上的所有I/O机制都是通过加载/存储操作MMIO设备区域来实现的。除了直接分配给某个虚拟机的设备外,所有其他虚拟机都无法访问 MMIO区域。KVM/ARM使用二级地址转换来确保虚拟机不能直接访问物理设备。某个虚拟机访问任何不属于其的内存区域的行为都会被捕获到hypervisorhypervisor会根据故障地址将相关信息转发QEMU中的特定模拟设备。

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=20220
赞同 1
评论 0 条
F-hawkingL3
粉丝 9 发表 151 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2941
【软件正版化】软件正版化工作要点  2860
统信UOS试玩黑神话:悟空  2819
信刻光盘安全隔离与信息交换系统  2712
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1246
grub引导程序无法找到指定设备和分区  1213
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  163
点击报名 | 京东2025校招进校行程预告  162
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  160
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  157
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!