0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ARM对虚拟化下设备直通的支持

安芯教育科技 ? 来源:极术社区 ? 作者:James张 ? 2021-09-26 10:19 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

随着云计算领域里,ARM架构处理器的广泛使用,应用开发人员熟悉ARM架构相关技术的需求越来越迫切。众所周知,提供虚拟机服务是云计算的典型应用场景,而虚拟机里设备性能的优劣对服务质量至关重要。

提到虚拟机里的设备,就不得不提及设备的虚拟化,最初虚拟机里的设备完全是依靠软件模拟来实现,也叫全虚拟化设备,这样的好处是运行在物理机里的OS可以完全不需要修改就能在虚拟机里运行,但设备性能很差,满足不了人们的需求。

后来,有人提出了半虚拟化的思想,寄希望于软件的优化,比如修改设备模型,减少不必要的内存拷贝,来满足大家对设备的性能需求。典型代表virtio设备。此法使性能虽有较大提升,但与真实的设备仍有较大差距。为了获取等同于真实设备的性能,设备直通的方式被提了出来,也渐渐成为主流方式。

虚拟机里使用直通的设备,的确可以带来最大的性能提升。但是却暴漏出一系列的系统安全问题。比如提供DMA的设备通常可以写内存的任意页,因此虚拟机里的Guest OS拥有创建DMA的能力就等同于用户空间拥有了root权限,恶意的设备可能利用此发动DMA攻击,给其他虚拟机乃至整个物理机带来安全问题。

因此,需要提供DMA重映射功能,通过页表方式将直通设备对内存的访问限制到特定的域中,在提高IO性能的同时完成了直通设备的隔离,保证了直通设备DMA的安全性。此外,直通设备的中断默认是发给物理CPU的,要想通知到虚拟机里的vCPU,就需要中断的重定向。

DMA重映射跟中断重定向的实现,最初是完全交由虚拟机监控器(Hypervisor)或模拟器(比如qemu)来负责。这是一种纯软件的思路,必然大大降低设备的性能,因此急需硬件的参与配合。

为此,ARM的SMMU和GIC规范顺势添加了对DMA重映射跟中断重定向的支持。本文的重点便是围绕这两大特性介绍如何支持虚拟化环境下的设备直通。

DMA重映射

SMMU是System MMU的缩写,是ARM架构下一种对非CPU设备提供地址翻译服务的组件,功能类似于CPU的MMU组件。这里非CPU设备主要指发起DMA操作的外围子系统。如下图所示:

21cffc8e-10f8-11ec-8fb8-12bb97331649.png

注:PE为Processing Element 的缩写,可理解为CPU。

在虚拟化应用场景下,地址翻译往往分为两个阶段。阶段一是虚拟地址(VA)到GuestOS认为的物理地址(IPA)间的转换;阶段二为IPA到真实物理地址(PA)间的转换。而SMMU既可以同时支持两个阶段的转换,也可以单独支持每个阶段的转换。

这为直通设备DMA重映射提供了可能。直通设备的DMA只需要获取IPA,之后的工作便交由SMMU来做阶段二的处理,以达到安全高效的访问PA的目的。如下图所示:

针对以上应用场景,我们介绍SMMU的内部结构来阐述具体实现原理。SMMU含有两个核心单元,分别为翻译控制单元TCU和翻译缓冲单元TBU。其中TCU主要含有Stream Mapping Table(SMT)和Context Bank Table(CBT)。

SMT通过StreamID来索引内部的Entry,StreamID跟具体直通设备一一对应, 从而获取到指向CBT具体Entry的指针。CBT的Entry内容则含有阶段二翻译表的指针,当获取到此指针后,翻译过程即可像普通MMU一样按部就班的进行下去。而TBU的作用等同于TLB,借助Cache原理,加快SMMU工作效率,不再赘述。以上描述过程总结为如下框图所示:

21e87cc8-10f8-11ec-8fb8-12bb97331649.png

中断重定向

GIC是Generic Interrupt Controller的缩写。GIC的主要作用是路由各种不同的中断信息给CPU。虚拟化环境下的中断处理情形要复杂的多,有些因指令trap产生的中断需要Hypervisor本身来处理;

有些是分配给某个虚拟机的直通设备产生的中断则需要虚拟机内的软件来处理;也有中断被接收时,对标的虚拟机没有处于运行状态的情况。这需要GIC提供机制,重定向中断以满足上述复杂的需求。

由于本文的重点是对直通设备虚拟化支持的讲解,因此此部分将介绍GIC是如何支持直通设备中断重映射的,并不会剖析GIC内部组成及实现原理。我们以GICv3为例,图示如下:

2202c5f6-10f8-11ec-8fb8-12bb97331649.png

配以如下步骤说明:

1 直通设备发起的中断IRQ到达GIC;

2 GIC发物理的IRQ到CPU;

3 Hypervisor会从Physical CPU Interface读取中断信息;

4 Hypervisor发现此中断是某虚拟机内的直通设备触发,于是通过写GIC List Register重新注入一个虚拟IRQ到GIC中;

5 GIC产生vIRQ中断并发给vCPU;

6 最终vCPU接收vIRQ中断并由运行其上的GuestOS接管并通过跟Virtual CPU interface交互处理后续中断任务。

至此,一个完整的中断重映射过程结束。

在GIC参与直通设备的中断重映射后,虚拟机在处理中断效率上有了明显提升,但是跟Host主机上普通物理中断相比,总是多了一步由软件Hypervisor参与的动作。因此,我们称以上方式为间接注入中断的方式。

为了进一步提高处理中断的效率,GICv4引入了直接注入中断方式。具体原理则是直通设备在获取中断时,GIC会将分配给设备的物理中断与虚拟中断做一个映射。这样当设备触发中断时,GIC会直接发信号给vCPU。

有这样一种情况,设备触发中断时vCPU没有运行,即虚拟机处于休眠态,如果直接发vIRQ给vCPU是得不到响应的,这时候会产生一个物理的door-bell中断来代替,此中断交由Hypervisor处理,它会重新调度vCPU,从而使中断得到及时响应。

本文通过虚拟化下如何支持设备直通的角度,讲解了ARM架构支持DMA重映射跟中断重定向的原理,旨在普及ARM架构下一些支持虚拟化的技术。当然ARM架构对虚拟化的支持不仅局限于此。相信随着ARM生态的不断完善,这些技术会被越来越多的人所熟知。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9374

    浏览量

    378798
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11099

    浏览量

    217758
  • dma
    dma
    +关注

    关注

    3

    文章

    576

    浏览量

    103500
  • CBT
    CBT
    +关注

    关注

    0

    文章

    5

    浏览量

    8264

原文标题:技术分享 | ARM对虚拟化下设备直通的支持

文章出处:【微信号:Ithingedu,微信公众号:安芯教育科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    龙芯处理器支持WINDOWS吗?

    目前尚无迹象。 总结 若需使用Windows,建议选择x86/ARM架构设备;若使用龙芯平台,需依赖Linux生态。龙芯的优势在于自主可控与特定领域(如工业控制、政务办公)的定制需求,而非通用消费市场的Windows兼容性。
    发表于 06-05 14:24

    虚拟数据恢复—XenServer虚拟平台上VPS不可用的数据恢复案例

    虚拟环境: 某品牌720服务器中有一组通过型号为H710P的RAID卡+4块STAT硬盘组建的RAID10,上层部署Xen Server服务器虚拟平台。
    的头像 发表于 05-30 11:35 ?221次阅读
    <b class='flag-5'>虚拟</b><b class='flag-5'>化</b>数据恢复—XenServer<b class='flag-5'>虚拟</b><b class='flag-5'>化</b>平台上VPS不可用的数据恢复案例

    智慧矿山场景:聚徽嵌入式工控一体机如何实现井下设备无人化操控

    在矿山开采领域,传统的人工开采模式面临着效率低、安全风险高、人力成本上升等诸多问题。随着科技的飞速发展,智慧矿山建设成为矿业转型升级的关键方向,而井下设备的无人化操控则是智慧矿山的重要标志之一
    的头像 发表于 05-20 13:20 ?188次阅读

    基于云端虚拟技术云手机解决方案

    云手机解决方案基于云端虚拟技术,通过整合软硬件资源实现多设备集群化管理与智能操作,以下是针对不同应用场景的核心要素与技术架构解析: 一、核心技术架构?
    的头像 发表于 05-09 08:04 ?279次阅读
    基于云端<b class='flag-5'>虚拟</b><b class='flag-5'>化</b>技术云手机解决方案

    新思科技推出基于Arm服务器原生运行的Virtualizer虚拟仿真技术

    新思科技近日宣布在基于Arm服务器上推出新思科技Virtualizer 原生运行虚拟仿真技术(Synopsys Virtualizer Native Execution on Arm
    的头像 发表于 03-17 17:45 ?729次阅读

    hyper v 虚拟,Hyper-V 虚拟:Hyper-V虚拟的最佳实践

    在当今快节奏的商业环境中,数据的高效处理能力是企业竞争力的关键因素之一。批量管理工具以其强大的批量操作功能,为企业提供了一种高效、便捷的数据处理解决方案。今天就为大家介绍Hyper-V虚拟
    的头像 发表于 02-07 10:24 ?624次阅读
    hyper v <b class='flag-5'>虚拟</b><b class='flag-5'>化</b>,Hyper-V <b class='flag-5'>虚拟</b><b class='flag-5'>化</b>:Hyper-V<b class='flag-5'>虚拟</b><b class='flag-5'>化</b>的最佳实践

    直通电度表——关键的计量设备

    在现代电力计量领域,直通电度表作为一种关键的计量设备,发挥着极为重要的作用。它能够精确地测量电路中的电能消耗,为电力供应、能源管理以及电费结算等诸多环节提供不可或缺的数据支持直通
    的头像 发表于 12-11 09:51 ?1026次阅读

    深入KVM虚拟之构建高效、可扩展的虚拟环境

    目录 KVM虚拟 创建虚拟机 报错解决 虚拟介绍 kvm介绍 KVM部署(基于CentOS7) KVM管理界面安装 KVM web界面管
    的头像 发表于 11-26 17:22 ?1517次阅读
    深入KVM<b class='flag-5'>虚拟</b><b class='flag-5'>化</b>之构建高效、可扩展的<b class='flag-5'>虚拟</b><b class='flag-5'>化</b>环境

    虚拟数据恢复—XenServer虚拟机数据恢复案例

    服务器虚拟数据恢复环境: 某品牌720服务器中有一组通过同品牌、型号为H710P的RAID卡+4块STAT硬盘组建的RAID10磁盘阵列。上层部署XenServer虚拟平台。1台
    的头像 发表于 11-08 10:32 ?582次阅读
    <b class='flag-5'>虚拟</b><b class='flag-5'>化</b>数据恢复—XenServer<b class='flag-5'>虚拟</b>机数据恢复案例

    望获实时Linux-虚拟PLC解决方案

    行业趋势:IT与OT的深度融合 虚拟PLC的优势:灵活与高效的结合 望获实时Linux的优势:强实时和强大的行业中间件支持 实时性:系统响应延迟<10us,支持EtherCAT-12
    的头像 发表于 11-08 10:28 ?660次阅读
    望获实时Linux-<b class='flag-5'>虚拟</b><b class='flag-5'>化</b>PLC解决方案

    基于Arm Neoverse的微软全新Azure虚拟机上线

    软件的优化来满足此类需求。近期,微软宣布基于 Azure Cobalt 100 处理器的新 Azure 虚拟机 (VM) 全面上线,其中 Azure Cobalt 100 处理器是基于 Arm
    的头像 发表于 10-27 11:00 ?859次阅读

    云计算中的虚拟技术应用

    云计算中的虚拟技术是一种将计算机物理实体(如服务器、存储设备、网络设备)通过软件技术划分为多个虚拟实体的技术,每个
    的头像 发表于 10-24 09:22 ?1904次阅读

    理解机智云虚拟设备与实际设备的关系

    在使用机智云平台进行设备管理和应用开发时,用户常常会遇到虚拟设备无法控制实际设备的问题。这种情况的根源在于虚拟设备的本质和功能定位。Q虚拟设备
    的头像 发表于 09-22 08:02 ?529次阅读
    理解机智云<b class='flag-5'>虚拟设备</b>与实际<b class='flag-5'>设备</b>的关系

    虚拟数据恢复—EXSI虚拟机误还原快照如何恢复数据?

    虚拟技术原理是将硬件虚拟供不同的虚拟机使用,一台物理机上可以有多台虚拟机。人为误操作或者物理
    的头像 发表于 09-09 11:56 ?846次阅读
    <b class='flag-5'>虚拟</b><b class='flag-5'>化</b>数据恢复—EXSI<b class='flag-5'>虚拟</b>机误还原快照如何恢复数据?

    什么是虚拟机?什么是虚拟

    在日新月异的科技世界中,虚拟技术如同一座桥梁,连接着现实与数字的鸿沟,为我们打开了全新的计算维度。虚拟机,这一概念,自其诞生以来,就以其独特的魅力和强大的功能,深深地影响了软件开发、系统测试和云计算等多个领域。即使目前你还不了
    的头像 发表于 09-04 14:55 ?2447次阅读