当前位置: 首页 > news >正文

【ARM Hypervisor And SMMU 系列 5 -- SMMU 和 IOMMU技术】

文章目录

  • SMMU 和 IOMMU技术
    • ARM 的 SMMU
      • Translation process overview
    • TBU 和 TCU 的关系
      • TBU
      • TCU
    • TLB

SMMU 和 IOMMU技术

在这里插入图片描述
文章 讲到了为支持I/O透传机制中的DMA设备传输而引入的IOMMU/SMMU技术,同时留了一个问题:IOMMU/SMMU是否可以同时支持GVA->GPA和GPA->HPA的转换?
答案是 Yes。

既然在虚拟化的环境中,DMA设备可以借助GPA->HPA的转换,绕过VMM,实现与guest VM中OS的直接数据传递。那在非虚拟化的环境中,DMA设备也可以借助GVA->GPA的转换,绕过OS kernel,实现与userspace(用户空间)的进程的直接交互,这种用法就是用户空间的DMA传输。

两者其实是统一的,不管是GVA还是GPA,说到底都是虚拟地址,有了IOMMU/SMMU之后,DMA就可以使用虚拟地址作为传输的目标地址了。
在这里插入图片描述

ARM 的 SMMU

  • MMU地址翻译是将进程的虚拟地址(HVA)翻译成物理地址(HPA);
  • IOMMU地址翻译则是将虚拟机物理地址空间内的GPA翻译成HPA;
  • IOMMU页表和MMU页表一样,都采用了多级页表的方式来进行翻译;
  • 专门转换I/O地址的MMU在x86的阵营里就是IOMMU;
  • Intel把IOMMU技术叫做VT-d(Virtualization Technology for Direct I/O);
  • EPT/NPT MMU作为传统MMU的扩展,也是有TLB;

在Linux的实现中,一个进程有一个对应的页表,而SMMU是为设备服务的,几个设备可能同属于一个guest VM,因此多个设备可能会共用一个GPA->HPA的转换页表。同一个guest VM的设备可能属于或者不属于某一个特定的进程,因此也可能共用或者不共用GVA->GPA的转换页表。

在SMMU中,一个发起DMA传输(transaction)的设备的信息由一个Stream T


http://www.mrgr.cn/news/3474.html

相关文章:

  • 计算机基础之Cache的缓存命中率不随其容量线性增加的原理
  • nginx主配置文件说明
  • win10 / win11 永久暂停自动更新方法
  • LLM小模型系列研究(01)
  • STM32- 笔记2
  • CSS:display和visiblity
  • 小白学大模型:GLM 调用教程
  • FlinkCDC初体验
  • 关于c++ grpc 和 c# grpc 通信的问题 以及 grpc 认证问题
  • 公开课观后感:密歇根大学python for everyone
  • 初识redis:Set类型
  • 【实战场景】如何优雅实现分页
  • 20240821给飞凌OK3588-C的核心板刷Rockchip原厂的Buildroot并挂载1TB的exFAT格式的TF卡
  • ARM 裸机与 Linux 驱动对比及 Linux 内核入门
  • 【ARM+Codesys 客户案例 】 基于RK3568/A40i/STM32+CODESYS在工厂自动化中的应用:铆接机
  • Android强大的滚动控件RecyclerView
  • 反向沙箱是什么?如何使用反向沙箱保障上网安全
  • Ecosmos开启公测,将深度赋能CIOE中国光博会元宇宙参会新体验
  • Excel平均值与减法技巧
  • Python编码系列—前端后浪:Python前后端分离开发实战指南