当前位置: 首页 > 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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Python爬虫实战训练:爬取网络小说
  • plsql表格怎么显示中文 plsql如何导入表格数据
  • ant design pro access.ts 是如何控制多角色的权限的
  • 网络编程UDP和TCP
  • Java二十三种设计模式-责任链模式(17/23)
  • 做谷歌seo如何确保网站的速度快?
  • Python版《超级玛丽+源码》-Python制作超级玛丽游戏
  • [Linux CMD] 查询占用进程 fuser
  • tp5php7.4配置sqlserver问题汇总
  • Windows 11 24H2 终于允许多个应用程序同时使用摄像头
  • Java重修笔记 第三十八天 String翻转
  • 初阶数据结构之计数排序
  • 【电子通识】IPC-A-600中对验收标准的定义
  • chromedriver下载地址大全(包括124.*后)以及替换exe后仍显示版本不匹配的问题
  • 深信达反向沙箱:构筑内网安全与成本效益的双重防线
  • [译] 怎样写一个基础的编译器
  • [译]前端离线指南(上)
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • Fundebug计费标准解释:事件数是如何定义的?
  • gulp 教程
  • Java 23种设计模式 之单例模式 7种实现方式
  • JDK9: 集成 Jshell 和 Maven 项目.
  • JS学习笔记——闭包
  • miaov-React 最佳入门
  • Python 反序列化安全问题(二)
  • React Native移动开发实战-3-实现页面间的数据传递
  • 初识 beanstalkd
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 区块链将重新定义世界
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 使用API自动生成工具优化前端工作流
  • 数组大概知多少
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 微信小程序:实现悬浮返回和分享按钮
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • 第二十章:异步和文件I/O.(二十三)
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • # 飞书APP集成平台-数字化落地
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (接口自动化)Python3操作MySQL数据库
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)fock函数详解
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • (转载)Google Chrome调试JS
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .DFS.
  • .helper勒索病毒的最新威胁:如何恢复您的数据?