《PCI Express体系结构导读》随记 —— 第II篇 第13章 PCI总线与虚拟化技术(5)

news2024/11/28 7:41:53

接前一篇文章:《PCI Express体系结构导读》随记 —— 第II篇 第13章 PCI总线与虚拟化技术(4)

13.1 IOMMU

13.1.3 AMD处理器的IOMMU

AMD处理器的IOMMU技术与Intel的VT-d技术类似,其完成的主要功能也类似AMD率先提出了IOMMU的概念,并发布了IOMMU的技术手册,但是Intel首先将这一技术在芯片中实现。由于AMD与Intel使用的x86体系结构略有不同,因此AMD的IOMMU技术在细节上与Intel的VT-d并不完全一致

AMD处理器使用HT(Hyper Transport)总线连接I/O Hub,其中每一个I/O Hub都含有一个IOMMU,其结构如图13-5所示:

其中每一个IOMMU都使用一个Device Table。AMD处理器使用Device Table存放图13-3中的结构。

Device Table最多由2^16个Entry组成,其中每个Entry的大小为256b(bit)。因此,Device Table最大将占用2MB的内存空间(2^16 * 256 / 8 = 2^21 = 2M),与Intel使用的Root/Context Entry结构相比,AMD使用的这种方法容易造成内存的浪费。

I/O Hub中的设备(其中PCI设备使用Bus Number、Device Number和Function Number组成16位的Device ID,而HT设备使用HT Bus Number和Unit ID组成16位的Device ID)使用16位的Device ID在Device Table查找和该设备所对应的Entry,并使用这个Entry根据I/O Page Table结构最终找到IO PTE表,并完成GPA到HPA的转换。在AMD处理器中,GPA到HPA的转换与图13-4中所示的方法有类似之处,但实现细节不同。

IOMMU使用一个新型的页表结构完成GPA到HPA的转换,该页表结构基于AMD64使用的虚拟地址到物理地址的页表结构,但是做出了一些改动。AMD64进行虚拟地址到物理地址的转换时使用4级页表结构,如图13-6所示:

与Intel处理器的结构类似,一个进程首先从CR3寄存器中获得页表的基地址指针寄存器“Page Map Level-4 Base Address”,之后通过4级索引最终获得4KB大小的物理页面,完成虚拟内存到物理地址的转换。AMD处理器也支持大页方式,如果使用三级索引,可以获得2MB大小的物理页面;使用用二级索引,可以获得1GB大小的页面。

IOMMU使用的I/O页表结构基于以上结构,但做出了一定的改动。在IOMMU中,4级I/O页表指针可以直接指向2级I/O页表指针,从而越过第3级I/O页表,使用这种方法可以节省Page Table(页表)的空间。如图13-7所示:

当设备进行DMA操作时,首先需要从相应的Device Table的Entry中获得“Level 4 Page Table Address”指针并定位设备使用的I/O页表最后使用多级页表结构,最终完成PCI总线地址到HPA地址的转换。Page Table的 Entry由64位组成,其主要字段如下所示:

  • 第51~12位为Next Table Address/Page Address字段,该字段存放下一级页表或者物理页面的地址。该地址为系统物理地址,属于HPA空间。
  • 第11~9位为Next Level字段,表示下一级页表的级数。其中在Device Table中存放的级数一般为4,Level-N级页表中存放的Next Level字段为N-1 ~ 1

如图13-7所示,在第4级页表的Enry中的Next Level字段为2,表示第4级页表直接指向第2级页表,而忽略第3级页表。当该字段为0b000或者0b111时,表示下一级指针指向物理页面而不是页表。Next Level字段为0b000时,表示所指向的物理页面的大小是固定的,AMD64支持4KB、2MB、1GB、512GB和1TB(SP=4)大小的固定页面;当Next Level字段为0b111时,表示所指向的物理页面大小是浮动的。如果Level 2 Page Table的Entry中的Next Level字段为0b111,则表示该Entry指向的物理页面大小浮动,物理页面的大小和GPA的第29~21位相关,如表13-1所示:

AMD64处理器使用这种I/O页表方式,可以方便地支持4KB、8KB、……、4GB大小的浮动物理页面。除了I/O页表外,IOMMU也设置了IOTLB,以加快GPA到HPA地址的转换。这部分内容与IA处理器的实现方式类似,本章不对此继续进行描述。对IOMMU感兴趣的读者可以参考AMD I/O Virtualization Technology Specification。

至此,“13.1 IOMMU”的全部内容就讲解完了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1450567.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(11)Hive调优——explain执行计划

一、explain查询计划概述 explain将Hive SQL 语句的实现步骤、依赖关系进行解析,帮助用户理解一条HQL 语句在底层是如何实现数据的查询及处理,通过分析执行计划来达到Hive 调优,数据倾斜排查等目的。 官网指路: https://cwiki.ap…

【网站项目】228高校教师电子名片系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

Vi 和 Vim 编辑器

Vi 和 Vim 编辑器 vi 和 vim 的基本介绍 Linux 系统会内置 vi 文本编辑器 Vim 具有程序编辑的能力,可以看做是 Vi 的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。 代码补完、编译及错误跳转等方便编程的功能特别丰富&…

智慧供应链控制塔大数据解决方案

一、供应链控制塔的概念定义 (1) Gartner 的定义: “控制塔是一个物理或虚拟仪表板,提供准确的、及时的、完整的物流事件和数据,从组织和服务的内部和跨组织运作供应链,以协调所有相关活动。”、“供应链控制塔…提供供应链端到端整体可见性和近实时信息和决策的概念……

基于PSO优化的LSTM多输入分类(Matlab)粒子群优化长短期神经网络分类

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、部分代码展示: 四、完整代码数据分享下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Matal…

数据库第二次实验

目录 1 实验内容 2 SQL代码及运行截图 2.1 创建表并插入数据 2.1.1 创建表 2.1.2 插入数据 2.1.3 运行截图 2.2 修改表 2.2.1 SQL代码 2.2.2 运行截图 2.3 删除操作 2.3.1 SQL代码 2.3.2 运行截图 2.4 数据库的备份 2.5 数据库的恢复 1 实验内容 实验目的&#…

暴力枚举刷题1

题目来源:统计方形(数据加强版) - 洛谷 参考书籍:《深入浅出程序设计竞赛(基础篇)》 解题思路:这道理适合用暴力枚举求解。我把书上提到的四种枚举方法分享给大家。 解题1:减少枚…

【AI绘画】硬核解读Stable Diffusion(完整版) 小白必收藏!!!

手把手教你入门绘图超强的AI绘画,用户只需要输入一段图片的文字描述,即可生成精美的绘画。给大家带来了全新保姆级教程资料包 (文末可获取) 2022年可谓是AIGC(AI Generated Content)元年,上半年…

C# CAD SelectionFilter下TypedValue数组

SelectionFilter是用于过滤AutoCAD实体的类,在AutoCAD中,可以使用它来选择具有特定属性的实体。构造SelectionFilter对象时,需要传入一个TypedValue数组,它用于定义选择规则。 在TypedValue数组中,每个元素表示一个选…

【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱7(附带项目源码)

效果演示 文章目录 效果演示系列目录前言新增简单的泛型单例消耗品源码完结 系列目录 前言 欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第25篇中,我们将探索如何用unity制作一个3D背包、库存、…

HTML5+CSS3+JS小实例:锥形渐变彩虹按钮

实例:锥形渐变彩虹按钮 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /…

无人机导航技术,无人机导航理论基础,无人机导航技术应用发展详解

惯性/卫星定位组合是一种比较理想的组合导航系统。在无人机导航领域&#xff0c;多年来惯性/卫星定位组合导航系统的研究一直受到普遍的关注&#xff0c;大量的理论研究成果得到实际应用。 常见的几类导航系统 单一导航 卫星导航系统 、多普勒导航、惯性导航系统(INS) 、图形…

【知识整理】产研中心岗位评定标准之大数据岗位

为贯彻执行集团数字化转型的需要,该知识库将公示集团组织内各产研团队不同角色成员的职务“职级”岗位的评定标准; 一、定级定档目的 通过对公司现有岗位及相应岗位员工的工作能力、工作水平进行客观公正评定,确定各岗位的等级及同等级岗位员工对应的档级,从而为员工以后的晋升…

【Cocos入门】物理检测

目录 一、物理检测的概念二、点测试三、矩形测试四、射线测试 一、物理检测的概念 CoCos中&#xff0c;物理检测也是物理系统的一部分&#xff0c;它不是用于检测物体的物理特性的&#xff0c;而是用来查询物体的(比如某个地方是否存在物理碰撞体)。其又分成&#xff1a;点检测…

Mysql运维篇(四) Xtarbackup--备份与恢复练习

一路走来&#xff0c;所有遇到的人&#xff0c;帮助过我的、伤害过我的都是朋友&#xff0c;没有一个是敌人。如有侵权&#xff0c;请留言&#xff0c;我及时删除&#xff01; 前言 xtrabackup是Percona公司CTO Vadim参与开发的一款基于InnoDB的在线热备工具&#xff0c;具有…

【PyQt】11-QTextEdit、QPushButton

文章目录 前言一、文本输入-QTextEdit1.1 代码1.2 运行结果 二、QPushButton2.1.1 按钮上添加文本2.1.2 按键的弹跳效果2.1.3 两个信号可以绑定一个槽。2.1.4 带图标的按键运行结果 2.1.5 按键不可用以及回车默认完整代码2.2 单选按键控件运行结果 2.3 复选框&#xff08;多选框…

free pascal:fpwebview 组件通过 JSBridge 调用本机TTS

从 https://github.com/PierceNg/fpwebview 下载 fpwebview-master.zip 简单易用。 先请看 \fpwebview-master\README.md cd \lazarus\projects\fpwebview-master\demo\js_bidir 学习 js_bidir.lpr &#xff0c;编写 js_bind_speak.lpr 如下&#xff0c;通过 JSBridge 调用本…

shumei 滑块 qd参数仿写记录

在对qd参数进行仿写的过程中&#xff0c;由于缺失很多js的基础知识&#xff0c;导致进展一度非常的缓慢&#xff0c;并且不知道自己的方向是不是正确的方向。在不知道自己的方向是否正确的时候&#xff0c;这个时候自己的投入的努力都是畏首畏尾。大概是一种&#xff0c;不知道…

RabbitMQ如何保证可靠

0. RabbitMQ不可靠原因 消息从生产者到消费者的每一步都可能导致消息丢失&#xff1a; 发送消息时丢失&#xff1a; 生产者发送消息时连接MQ失败生产者发送消息到达MQ后未找到Exchange生产者发送消息到达MQ的Exchange后&#xff0c;未找到合适的Queue消息到达MQ后&#xff0c;…

【Deep Learning 1】神经网络的搭建

&#x1f31e;欢迎来到PyTorch的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f4c6;首发时间&#xff1a;&#x1f339;2024年2月16日&a…