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

    文章

    8639

    浏览量

    361622
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10409

    浏览量

    206463
  • dma
    dma
    +关注

    关注

    3

    文章

    535

    浏览量

    98970
  • CBT
    CBT
    +关注

    关注

    0

    文章

    5

    浏览量

    8092

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

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

    下设备智能远程控制方案

    下设备的智能远程控制是指通过网络技术和传感器设备,实现对井下设备进行数据监测、故障诊断和远程控制操作的方法。目前,随着物联网技术的发展,井下设备的智能化水平不断提高,但仍存在一些问题
    的头像 发表于 10-30 17:29 324次阅读

    FAST型号固定虚拟平台(FVP)参考指南

    固定虚拟平台(FVP)支持无需实际硬件的软件开发。 它们可用于Linux和Windows主机,或者: ·作为Fast Models包中的源代码示例,以及定制和构建它们所需的工具。有关详细信息
    发表于 08-09 06:50

    Arm虚拟硬件用户指南

    用于第三方板的Arm虚拟硬件(AVH)为流行的物联网开发套件提供基于云的功能准确的虚拟模型,模拟CPU、外围设备、传感器和板组件。它允许开发人员在实际硬件上执行相同的二进制文件,从而利
    发表于 08-08 07:45

    arm架构的虚拟化是什么

    为了支持虚拟化,Armv8-A支持两步地址转换,也就是文档常提到的Stage2translation。Stage2转换允许hypervisor控制虚拟机(VM)的内存视图。
    发表于 08-07 14:14 1418次阅读
    <b class='flag-5'>arm</b>架构的<b class='flag-5'>虚拟</b>化是什么

    Arm®Development Studio Morello Edition入门指南

    管理项目、配置编译和调试会话设置、查看调试和跟踪会话的可视表示,等等。 Arm调试器一种图形调试器,支持基于Arm处理器的目标和固定虚拟
    发表于 08-02 14:39

    深入了解AArch64虚拟

    大多数主流操作系统都是基于这样的假设构建的:系统具有单个 运行多个非特权应用程序的特权操作系统。然而,ARM虚拟支持更多功能 而不是一个操作系统共存并在同一系统上操作。实现这些
    发表于 08-02 12:52

    Arm通用中断控制器GICv3和GICv4对虚拟支持

    本指南描述了GICv3和GICv4体系结构中对虚拟支持。它涵盖了管理程序可用于生成和管理虚拟中断的控件。指南是对于任何需要了解中断控制器功能的人来说编写软件来管理
    发表于 08-02 10:43

    Armv8-R架构中的虚拟概念和可能性

    本指南介绍了Armv8-R架构中的虚拟概念和可能性。我们用四个例子来解释这些概念,其中大部分是基于汽车行业的应用程序。这些示例可以帮助您理解和熟悉虚拟概念 使用
    发表于 08-02 09:27

    VFIO设备直通原理

    设备直通虚拟机能够极大提升虚拟机对物理设备访问的性能
    的头像 发表于 06-07 17:40 1570次阅读

    设备仿真模拟软件 QEMU 8.0 发布:改进对 ARM / RISC-V 架构支持

    转自https://m.ithome.com/html/690345.htm 开源 QEMU 8.0 设备仿真器和虚拟软件已于 4 月 19 日发布,为 ARM、RISC-V、x86
    发表于 05-05 09:48

    ARM虚拟下设备直通支持进行介绍

    随着云计算领域里,ARM架构处理器的广泛使用,应用开发人员熟悉ARM架构相关技术的需求越来越迫切。
    的头像 发表于 04-28 15:31 1154次阅读
    对<b class='flag-5'>ARM</b><b class='flag-5'>虚拟</b>化<b class='flag-5'>下设备</b><b class='flag-5'>直通</b>的<b class='flag-5'>支持</b>进行介绍

    Arm虚拟下设备直通支持

    虚拟机里使用直通设备,的确可以带来最大的性能提升。但是却暴漏出一系列的系统安全问题。比如提供DMA的设备通常可以写内存的任意页,因此虚拟
    的头像 发表于 04-28 15:30 850次阅读
    <b class='flag-5'>Arm</b>对<b class='flag-5'>虚拟</b>化<b class='flag-5'>下设备</b><b class='flag-5'>直通</b>的<b class='flag-5'>支持</b>