MMU和SMMU IOMMU使用场景和区别,SMMU技术与cache
1.各种MMU
MMU是memory manage unit 内存管理单元;
SMMU是system memory manage unit 系统内存管理单元;
IOMMU和SMMU的功能基本相同,只是不同厂商的叫法
2.各种MMU的使用场景
MMU是cpu和各种处理器对应的内存管理单元;
SMMU/IOMMU是DMA使用的内存管理单元
MMU/SMMU的发展是围绕着虚拟内存管理(Virtual Memory Management)技术,就产生了分页技术,虚拟地址,地址空间,TLB,MMU等概念。
可参考
CPU体系架构-MMU
https://nieyong.github.io/wiki_cpu/CPU体系架构-MMU.html
2.1 各自的使用场景
2.1.1 地址转换
MMU是处理器与内存之间的VA和PA的地址转换,个人理解是用户程序在处理器执行过程中将用户程序编译链接之后分配的虚拟地址转化为物理地址。所以多个用户程序的虚拟地址可以重叠,但是多个程序同时运行时会被分配到不同的物理地址。这样用户程序不用关心实际的地址分配。
有了MMU可以在OS上运行超过系统内存的程序,此时通过OS设置的交换分区(通常是硬盘)通过将不活跃的内存中的数据放入交换分区,操作系统可以腾出其空间来为其它的程序服务。虚拟内存是通过虚拟地址来实现的。
那么SMMU/IOMMU怎么使用呢?在soc中假设有一个video DMA(VDMA) 读一张大图像,在VDMA希望这个图像是连续地址空间存储的,这样只需要配置一个基地址。但实际上可能DDR中没有这么大一块连续存储。这时就可以使用SMMU了。
还有soc的软硬件交互时,多个用户程序和多个硬件设备的交互,这里面的内存空间如何管理?对于DMA来说就需要一个SMMU/IOMMU.
以下的参考文献就给出了SMMU的应用场景
https://zhuanlan.zhihu.com/p/105005488
2.1.2 内存保护
MMU/SMMU/IOMMU另外一个重要作用就是内存保护
根据需要对特定的内存区块的访问进行保护,通过这一功能,我们可以将特定的内存块设置成只读、只写或是可同时读写。
3.MMU和SMMU的区别
两者区别首先是一个供处理器使用,一个供DMA使用(DMA是一个广义的说法,就是soc中那些可以大量读写DDR的ip/外设等)
再则SMMU更复杂一点,多了streamID,STE:Stream Table Entry和CD: Context Descriptor的概念。在SMMU中,一个发起DMA传输(transaction)的设备的信息由一个Stream Table Entry(STE)来描述。所有的STEs共同构成了Stream Table,可由StreamID作为Stream Table数组的索引,查找得到对应的STE,因此StreamID也就成了设备唯一性的标识。
下面的知乎专栏以ARM的SMMU为例讲解了SMMU技术
"SMMU和IOMMU技术 [一] 兰新宇"
https://zhuanlan.zhihu.com/p/75978422
SMMU和IOMMU技术[二]
https://zhuanlan.zhihu.com/p/76643300
MMU和SMMU IOMMU使用场景和区别,SMMU技术与cache的更多相关文章
- post和get的使用场景和区别
使用场景: 区别: ①传送方式不同:get通过地址栏传输,post通过报文传输. ②get产生一个TCP数据包,post产生两个数据包,对于get方式的请求,浏览器会把http header和data ...
- pandas中df.ix, df.loc, df.iloc 的使用场景以及区别
pandas中df.ix, df.loc, df.iloc 的使用场景以及区别: https://stackoverflow.com/questions/31593201/pandas-iloc-vs ...
- textContent、innerHTML、innerText、outerText、outerHTML、nodeValue使用场景和区别
今天要讲的这些属性都可以用来获取某个元素的内容,你可能会觉得不可思议,或是说上一句"丧心病狂"也.但当你看完以下内容后,会发现除outerText无用外,其他的都有各自的使用场景, ...
- Git中分支merge和rebase的适用场景及区别
Git merge是用来合并两个分支的. git merge b # 将b分支合并到当前分支 同样 git rebase b,也是把 b分支合并到当前分支 原理 如下: 假设你现在基于远程分 ...
- select,poll和epoll使用场景和区别
阻塞I/O至I/O多路复用 阻塞I/O指进程发起调用后会被挂起(阻塞),直到收到数据再返回.如果调用一直不返回,进程就一直被挂起.因此,使用阻塞I/O需要利用多线程来处理多个文件描述符. 引入非阻塞I ...
- 关于Git中分支merge和rebase的适用场景及区别
最近刚接触Git,下面对一些基本的使用做一下总结. 本文是转载于CSDN:http://blog.csdn.net/rryqsh/article/details/8230560 几乎所有的版本控制工具 ...
- session和cookie的应用场景和区别
cookie存于客户端,session存于服务器端. cookie的作用是与服务器进行交互,作为http规范的一部分存在,而web storage是为了在本地存储“数据”而生. cookie应用场景: ...
- localStorage,sessionStorage,cookie使用场景和区别
localStorage:HTML5新增的在浏览器端存储数据的方法.设置和获取localStorage的方法: 设置: localStorage.name = 'zjj'; 获取: localStor ...
- cucumber 背景和场景的区别
背景是公用的,每个场景都会执行,相当于前提条件: 场景是一个单独的case 别人的cucumber学习总结: 链接:http://ruby-china.org/topics/7119
- MySQL查询之内连接,外连接查询场景的区别与不同
前言 我在写sql查询的时候,用的最多的就是where条件查询,这种查询也叫内连查询inner join,当然还有外连查询outer join,左外连接,右外连接查询,常用在多对多关系中,那他们区别和 ...
随机推荐
- JAVA课后谈1
1.课程中动手动脑的问题 在本次课堂实验中,我暴露出了很多问题,尤其是逻辑思维方面,不能很好的处理数理运算问题.在实际生活中客户的要求千变万化,而我们作为一个合格的程序设计者应该顺应其要求,尽可能的去 ...
- 【Lodop】02 C-Lodop手册阅读上手
版本:4.0.6.2 一.概述 C-Lodop云打印是一款精巧快捷的云打印服务产品,以Lodop功能语句为基础,JS语句实现远程打印 移动设备+Wifi+普通打印机+集中打印 C-Lodop对客户端浏 ...
- PyCharm2024 专业版激活设置中文
PyCharm2024 专业版激活设置中文 官网下载最新版:https://www.jetbrains.com/zh-cn/pycharm/download 「hack-jet激活idea家族.zip ...
- 电视家APP会员退款了 —— 网络电视APP的合规性处理
今天打开家里网络电视的时候突然发现"电视家APP"居然无法使用了,随后发现账户关联的银行卡收到退款了,于是好奇的研究了一下这个事情. 由于家里是在农村,闭路电视的图像效果很差,估计 ...
- sublime 快速生成html基础代码
一.快速生成HTML5的头部信息的步骤: 1.Ctrl + N,新建一个文档: 2.Ctrl + Shift + P,打开命令模式,再输入 sshtml 进行模糊匹配,将语法切换到html模式: 3. ...
- impdp/expdp报错: ORA-39064: 无法写入日志文件 ORA-29285: 文件写入错误
问题现象 Windows服务器导入/导出Oracle 11g数据库出现如下报错提示,输出的日志文件从报错位置往后不再输出. ORA-39064: 无法写入日志文件 ORA-29285: 文件写入错误 ...
- Apache DolphinScheduler数仓任务管理规范
前言: 大数据领域对多种任务都有调度需求,以离线数仓的任务应用最多,许多团队在调研开源产品后,选择Apache DolphinScheduler(以下简称DS)作为调度场景的技术选型.得益于DS优秀的 ...
- 9组-Alpha冲刺-6/6
一.基本情况 队名:不行就摆了吧 组长博客: https://www.cnblogs.com/Microsoft-hc/p/15546711.html 小组人数: 8 二.冲刺概况汇报 张伟鹏 过去两 ...
- SMU Summer 2023 Contest Round 5
SMU Summer 2023 Contest Round 5 A. Points in Segments \(\mathcal{O}(n \times m)\) 做法数据范围小,直接把每次的\(l ...
- 初探 Rust 语言与环境搭建
1. Rust 简介 Rust 的历史 起源:Rust 语言最初由 Mozilla 研究员 Graydon Hoare 于 2006 年开始设计,并于 2009 年首次公开. 开发:Rust 是 Mo ...