ARM SMMU (System Memory Management Unit) 和 IOMMU (Input-Output Memory Management Unit) 都是用于管理系统内存访问和保护的硬件模块,但它们有不同的功能和用途。

1. 功能与作用

- IOMMU:IOMMU 是一个通用的内存管理单元,通常位于 CPU 和外设之间,用于管理和转换外设对内存的访问。它的主要功能是为外设提供虚拟地址到物理地址的转换,并提供内存访问保护,从而防止外设访问不该访问的内存区域。

- ARM SMMU:ARM SMMU 是 ARM 架构下特定的一种 IOMMU。它专门用于 ARM 处理器体系结构中,功能上和通用 IOMMU 类似,主要用于管理外设的内存访问,但 SMMU 具有与 ARM 体系结构深度集成的特点,能够更好地支持 ARM 的各种处理器核以及相关的内存模型。

2. 应用场景

- IOMMU:广泛应用于各种平台,不限于某个特定的处理器架构。它被用于虚拟化环境中,以确保虚拟机内的外设不能非法访问宿主机的内存,还用于提供更好的安全性和稳定性。

- ARM SMMU:专门应用于 ARM 体系结构的 SoC(系统级芯片)中。随着 ARM 处理器的广泛应用,SMMU 在移动设备、嵌入式系统以及其他 ARM 架构的设备中得到了广泛应用。

3. 特性

- IOMMU:支持虚拟化、内存隔离和保护、DMA(直接内存访问)重映射等特性,广泛适用于各种处理器和平台。

- ARM SMMU:作为 ARM 的一个实现,除了具有 IOMMU 的基本功能外,SMMU 还针对 ARM 处理器进行了优化,能够支持 ARM 特有的安全扩展(如 TrustZone)、大物理地址扩展(LPAE)等特性。

总结

IOMMU 是一个通用的概念,而 ARM SMMU 是 ARM 架构下的特定实现。SMMU 主要用于 ARM 生态系统中,并对 ARM 处理器做了专门的优化。

ARM SMMU 与 IOMMU 的区别的更多相关文章

  1. ARM指令和Thumb指令区别

    Thumb指令集 ]的问题而提出的,它具有16为的代码密度.Thumb不是一个完整的体系结构,不能指望处理程序只执行Thumb指令而不支持ARM指令集.因此,Thumb指令只需要支持通用功能,必要时, ...

  2. ARM与X86 CPU架构区别

    CISC(复杂指令集计算机)和RISC(精简指令集计算机)是当前CPU的两种架构.它们的区别在于不同的CPU设计理念和方法.早期的CPU全部是CISC架构,它的设计目的是 CISC要用最少的机器语言指 ...

  3. DSP处理器和ARM处理器的区别以及各自应用在那些领域

    由于工作经常接触到各种多核的处理器,如TI的达芬奇系列芯片拥有1个DSP核3个ARM核.那么DSP处理器和ARM处理器各自有什么区别,各自适合那些领域? DSP:digital signal proc ...

  4. iommu系列之---概念解释篇

    本文会对iommu中的一些容易引起疑惑的概念进行阐述,内核版本为4.19. 先上简写: DMAR - DMA remapping DRHD - DMA Remapping Hardware Unit ...

  5. 如何在 arm 官网上找到合适的手册

    http://infocenter.arm.com/help/advanced/help.jsp 在这里输入合适的版号即可 这样就可以不用去 CSDN 了 100000_0000_00_EN - AR ...

  6. GNU ARM 汇编基础

    ARM GNU汇编基础 0 前言 全文补充提醒: 笔者在阅读ARM官方文档及查阅实际的u-boot源码中的汇编代码后,发现了一些不同于ARM官方文档中的汇编语法,查阅相关资料后,才发现主要由于汇编器的 ...

  7. ARM伪指令与伪操作

    一.伪指令 ARM伪指令有四个,分别是LDR.ADR.ADRL和NOP,下边对其分别介绍. 1.1 LDR LDR 伪指令用于加载 32 位的立即数或一个地址值到指定寄存器 .形式如  LDR{con ...

  8. ARM学习1

    ARM相关概念 1.ARM的发展史 1. 1978年,CPU公司 Cambridge processing Unit 2. 1979年 Acorn 3. 1985年, 32位,8MHz, 使用的精简指 ...

  9. 【原创】Linux虚拟化KVM-Qemu分析(二)之ARMv8虚拟化

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: KVM版本:5.9 ...

  10. rust-vmm 学习

    V0.1.0 feature base knowledge: Architecture of the Kernel-based Virtual Machine (KVM) 用rust-vmm打造未来的 ...

随机推荐

  1. 用IO多路复用实现 nginx 静态资源代理(C/Java/Golang)

    用IO多路复用实现 nginx 静态资源代理(C/Java/Golang) 效果展示 代理 HTML 代理图片 注意, 静态资源代理基于 HTTP, 可以了解上一篇文章: 几十行代码使用TCP简单实现 ...

  2. 简单聊聊WebDAV

    1.什么是WebDAV? WebDAV是一种基于HTTP协议的扩展,旨在提供在Web服务器上进行文件管理的标准化解决方案.它允许用户通过网络对远程主机上的文件进行读写.编辑和删除操作.与传统的HTTP ...

  3. 【SpringMVC】12 文件上传和下载

    编写一个请求上传和下载的JSP页面 <%@ page contentType="text/html;charset=UTF-8" language="java&qu ...

  4. PVE linux_VM 扩容分区

    页面 调整磁盘大小 手动分区 fdisk -l fdisk /dev/sda 对该磁盘进行分区, 输入n并回车,n是"new"新建分区 [root@localhost ~]# fd ...

  5. nvidia公司官方迁移学习套件 —— NVIDIA TAO Toolkit

    资料: https://blogs.nvidia.com/blog/what-is-transfer-learning/ 相关: https://developer.nvidia.com/tao-to ...

  6. 服务器上运行 xvbf 时报错 —— Unknown encoder 'libx264'

    解决方法: 使用conda环境(不具体交代) conda install ffmpeg 成功运行:

  7. DRF中serializer的中的模型字段解释

    序列化器--Serializer 选项参数: max_length 最大长度 min_length 最小长度 allow_blank 是否允许为空 trim_whitespace 是否截断空白字符 m ...

  8. Linux内存占用分析的几个方法,你知道几个?

    0. 引言: 系统内存是硬件系统中必不可少的部分,定时查看系统内存资源运行情况,可以帮助我们及时发现内存资源是否存在异常占用,确保业务的稳定运行. 例如:定期查看公司的网站服务器内存使用情况,可以确保 ...

  9. windows启动jar包并显示标题

    cmd启动java的jar并显示窗口标题 title xx服务 D: cd D:\xx服务 java -jar guns-vip-main.jar 文件名名为 run.bat 双击即可运行

  10. PyJWT 和 python-jose 在处理JWT令牌处理的时候的差异和具体使用

    PyJWT 和 python-jose 是两个用于处理 JSON Web Tokens (JWT) 的 Python 库.它们都有助于生成.解码.验证和管理 JWT,但它们在功能范围和设计哲学上有一些 ...