首页 > 其他分享 >MMU和SMMU IOMMU使用场景和区别,SMMU技术与cache

MMU和SMMU IOMMU使用场景和区别,SMMU技术与cache

时间:2024-07-18 17:43:15浏览次数:13  
标签:DMA SMMU MMU IOMMU 内存 用户程序

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

标签:DMA,SMMU,MMU,IOMMU,内存,用户程序
From: https://www.cnblogs.com/linhaostudy/p/18310095

相关文章

  • Visual Studio Community 2022美化
    说明:VS版本:VisualStudioCommunity2022背景美化【扩展】【管理扩展】搜索“ClaudiaIDE”,【下载】,安装完扩展要重启VS在wallhaven下载壁纸图片作为文本编辑器区域背景图片【工具】【选项】搜索ClaudiaIDE,修改【图片路径】和【透明度】主题美化同样,在【扩展】里安装Visua......
  • Franka Robot 测试网络性能的示例(communication_test.cpp)
    //Copyright(c)2023FrankaRoboticsGmbH//UseofthissourcecodeisgovernedbytheApache-2.0license,seeLICENSE#include<chrono>#include<iostream>#include<thread>#include<franka/active_control.h>#include<frank......
  • ImmutableMultiDict 添加字段
    ImmutableMultiDict是Flask中处理HTTP请求中的多值字典,它是不可变的,意味着一旦创建,其内容不能被修改。但是,你可以通过复制并修改它的方式来添加字段。以下是一个如何添加字段到ImmutableMultiDict的例子:fromwerkzeug.datastructuresimportImmutableMultiDict#......
  • BGP路由优选实验(包含as策略,Community属性等)
    实验背景实验目的1.使用AS_PATH属性,确保R4通过R3到达192.168.11.0/242.使用LOCAL_PREF属性,确保R1通过R2到达192.168.1.0/243.使用MED属性,确认R4通过R3到达192.168.12.0/244.使用LOCAL_PREF属性,确保R1通过R3到达192.168.2.0/245.使用AS策略,AS500不接受任何始发于AS1......
  • PVE 开启IOMMU(硬件直通)
    一、前言什么是硬件直通(Passthrough)VT-d、DirectPathI/O,通过DirectPathI/O,虚拟机可以使用I/O内存管理单元访问平台上的物理PCI功能,就是俗称的虚拟化直通,简单理解就是允许宿主机将某些硬件资源的管辖权直接移交给虚拟机,虚拟机会以直通独占的方式使用硬件,宿主机将不能......
  • Ubuntu 24.04 LTS 安装配置 MySQL Community Server 8.4.0 LTS
    1安装 AptRepository​​​​​​​地址MySQL::DownloadMySQLAPTRepositorysudodpkg-imysql-apt-config_0.8.30-1_all.deb #安装mysql8.4ltssudoaptupdatesudoapt-getinstallmysql-server#修改mysqlroot密码策略 2查看版本test@test:~$my......
  • Kali Linux 2024.2 发布 (t64, GNOME 46 & Community Packages) - 领先的渗透测试发行
    KaliLinux2024.2发布(t64,GNOME46&CommunityPackages)-领先的渗透测试发行版ThemostadvancedPenetrationTestingDistribution请访问原文链接:https://sysin.org/blog/kali-linux/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgKaliLinux2024.2已......
  • 图文详解Windows系统下搭建mysql开发环境——mysql Community 8 和 navicat Premium 1
    在正式开始学习使用MySQL之前,我们有必要先搭建一个良好的开发环境,让我们的学习和工作效率事半功倍。本文涉及到的软件百度云盘:链接:https://pan.baidu.com/s/1jj_YajEv8adeEjMrXLhOTQ?pwd=1023提取码:1023目录客户机—服务器软件MySQL版本MySQL的下载和安装MySQL服务的......
  • AUTOSAR_SWS_DiagnosticCommunicationManager-1
    目录7Functionalspecification7.1ErrorClassification7.1.1DevelopmentErrors7.1.2RuntimeErrors7.2Generaldesignelements7.2.1SubmoduleswithintheDcmmodule7.2.2NegativeResponseCode(NRC)7.2.3Non-volatileinformation7.2.4Types7.2.4.1Atomictype......
  • C132 线段树分治 CF1814F Communication Towers
    视频链接: CommunicationTowers-洛谷|计算机科学教育新生态(luogu.com.cn)Problem-1814F-Codeforces//线段树分治O(mlognlogn)#include<iostream>#include<cstring>#include<algorithm>#include<vector>usingnamespacestd;#defineintlong......