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

    文章

    9027

    浏览量

    366435
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10802

    浏览量

    210771
  • dma
    dma
    +关注

    关注

    3

    文章

    556

    浏览量

    100322
  • CBT
    CBT
    +关注

    关注

    0

    文章

    5

    浏览量

    8150

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    云计算中的虚拟技术应用

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

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

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

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

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

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

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

    虚拟数据恢复—XenServer虚拟平台数据恢复案例

    虚拟数据恢复环境: 某品牌R720服务器,4块STAT硬盘通过H710P阵列卡组建了一组raid10磁盘阵列。服务器上部署XenServer虚拟平台,
    的头像 发表于 07-30 13:18 204次阅读
    <b class='flag-5'>虚拟</b><b class='flag-5'>化</b>数据恢复—XenServer<b class='flag-5'>虚拟</b><b class='flag-5'>化</b>平台数据恢复案例

    直通网线的作用及制作步骤

    直通网线的主要作用是连接不同的设备,如电脑和路由器、路由器和交换机等,以建立网络连接。以下是直通网线的制作步骤: 一、直通网线的作用 直通
    的头像 发表于 07-04 09:51 553次阅读

    EZ-USB SX3 CYUSB3017设备能否同时在USB 2.0线路上传输视频流并支持通过虚拟COM传输命令?

    EZ-USB SX3 CYUSB3017 设备能否同时在 USB 2.0 线路上传输视频流并支持通过虚拟 COM 传输命令? 情况是这样的:打开两个不同的 PC 程序: 通过 USB 2.0 传输
    发表于 05-23 07:11

    直通网线和交叉网线区别

    白、棕。而交叉网线则在一端采用568A线序,另一端采用568B线序,其线缆两端的线序是交叉的。568A的线序是:绿白、绿、橙白、蓝、蓝白、橙、棕白、棕。 使用场景:直通网线主要用于连接不同类型的设备,例如路由器与交换机、个人电脑
    的头像 发表于 05-10 10:06 2712次阅读

    百度智能云进一步集成Arm虚拟硬件 加速AI开发创新

    Arm 虚拟硬件于 2023 年八月上线百度智能云后,近日,双方基于 Arm 虚拟硬件的合作再度迎来新里程!
    的头像 发表于 03-11 15:17 407次阅读

    存储虚拟有哪些常见类型?有什么优点?

    存储虚拟是一种将多个存储设备的物理存储资源抽象出来、将它们集中在一起并将它们呈现为单个逻辑存储单元的技术。此过程简化了存储管理,提高了资源利用率,并实现了跨各种存储设备(例如硬盘驱动
    的头像 发表于 03-07 16:47 1018次阅读

    直通网线和交叉网线的区别有哪些呢?

    T-568B线序标准。 在实际运用中,直通网线常用来连接不同的设备,例如电脑和路由器、路由器和交换机等,而交叉网线用来连接相同的设备,例如电脑和电脑、路由器和路由器。 此外,直通网线和
    的头像 发表于 03-07 10:34 1285次阅读

    虚拟软件栈有哪些防御措施

    虚拟软件栈是一种在物理服务器上运行多个虚拟机的技术,可以提高服务器资源的利用率和灵活性。然而,虚拟软件栈也带来了新的安全风险,因此需要采
    的头像 发表于 01-25 11:27 659次阅读

    smt贴片加工直通率为什么如此重要

    smt贴片加工,smt 直通率堪称是贴片加工厂的生命线,有些公司的直通率必须达到95%才是达标线,因此直通率的高低,反应了贴片加工厂的技术实力、工艺品质,直通率高能够提升公司的产能效率
    的头像 发表于 12-05 10:23 1802次阅读

    直通串口和交叉串口的区别 如何辨别交叉串口线与直连串口线?

    直通串口和交叉串口的区别 如何辨别交叉串口线与直连串口线?什么时候用交叉,什么时候用直通直通串口和交叉串口是在计算机设备或系统中用于连接串行设备
    的头像 发表于 11-28 15:45 2396次阅读