【ARM Cache 系列文章 6 番外篇 – MMU, MPU, SMMU, PMU 差异与关系】

文章目录

    • [MMU 与 MPU 之间的关系](#MMU 与 MPU 之间的关系)
    • [MMU 与 SMMU 之间的关系](#MMU 与 SMMU 之间的关系)
    • [MMU 与 PMU 之间的关系](#MMU 与 PMU 之间的关系)

上篇文章:ARM Cache 系列文章 5 -- 内存屏障ISB/DSB/DMB

MMU 与 MPU 之间的关系

MMU(Memory Management Unit)和MPU(Memory Protection Unit)都是ARM架构中用于内存管理的关键组件,但它们的主要功能和使用场景有所不同。

MMU:MMU是负责虚拟内存管理的硬件单元。它将虚拟地址转换为物理地址,并管理内存保护和缓存控制。使用MMU,操作系统可以实现内存保护,把每个程序运行在独立的内存空间中,防止程序间互相干扰。此外,MMU还可以实现虚拟内存机制,允许程序使用的内存空间超过物理内存的大小。MMU通常在需要运行复杂操作系统(如Linux或Windows)的系统中使用。

MPU:MPU则是一种更简单的内存管理硬件,它不能转换虚拟地址,只能为内存区域设置权限,例如设定某段内存只读或可执行。MPU主要用于实现内存保护,防止程序访问不应访问的内存区域。由于其结构简单,MPU通常用在资源有限,只需要运行裸机程序或实时操作系统的嵌入式系统中。

MMU 常鉴于ARM Cortex-A 系列, MPU 常见与 ARM Cortex-系列。

总的来说,MMU和MPU都在内存管理中有重要作用,但MMU提供了更复杂、更全面的功能,适合于复杂的操作系统,而MPU则提供了一种轻量级的内存保护机制,适合于资源有限的嵌入式系统。

MMU 与 SMMU 之间的关系

MMU(Memory Management Unit)和SMMU(System Memory Management Unit)都是在ARM架构中使用的内存管理硬件组件,但它们的主要功能和使用场景有所不同。

MMU:MMU主要服务于CPU,它将虚拟地址转换为物理地址,并处理诸如内存保护和缓存控制等任务。通过MMU,操作系统可以创建一种虚拟内存环境,使得每个运行的程序都认为自己是在连续的内存空间中运行,同时还能防止一个程序访问另一个程序的内存空间。

SMMU :SMMU则是专门为系统的外设(如GPU,DMA 等)设计的。它为系统的IO设备提供了与CPU类似的虚拟地址到物理地址的转换服务。这意味着IO设备可以直接在虚拟地址空间中操作,从而大大简化了驱动程序的设计。此外,SMMU还可以为IO设备提供内存保护功能,防止IO设备访问未授权的内存区域。

总的来说,MMU主要为CPU提供内存管理服务,而SMMU则为系统的IO设备提供类似的服务。它们共同为系统提供了一致的内存管理机制和内存保护机制。

MMU 与 PMU 之间的关系

ARM架构中的MMU(Memory Management Unit)和PMU(Performance Monitoring Unit)是两种完全不同的硬件组件,它们各自负责不同的功能。

MMU:MMU是一种硬件单元,负责处理虚拟内存和物理内存之间的映射。它能将CPU产生的虚拟地址翻译成物理地址,这样每个进程就能在自己的独立地址空间中运行,同时可以实现内存保护和缓存控制。

PMU :PMU则是一种硬件单元,用于监控处理器的性能相关的事件 。例如,它可以跟踪指令的执行次数,缓存的命中率,分支预测的准确性等等。通过PMU,开发者可以详细了解软件运行的性能表现,优化代码,提高运行效率。

总的来说,MMU和PMU在ARM系统中负责不同的功能:MMU负责内存管理,而PMU负责性能监控。

上篇文章:ARM Cache 系列文章 5 -- 内存屏障ISB/DSB/DMB

相关推荐
ai产品老杨11 小时前
异构计算时代的安防底座:基于 Docker 的 X86/ARM 双架构 AI 视频管理平台深度解析
arm开发·docker·架构
誰能久伴不乏14 小时前
击碎纯逻辑的幻想:嵌入式按键底层的“物理学骗局”
arm开发
xu_wenming14 小时前
在 TinyML 场景下,如何将模型从 FP32 量化为 INT8?
arm开发·算法·iot
蜕变的小白14 小时前
ARM 知识点总结
arm开发
果果燕14 小时前
ARM嵌入式学习(二)---ARM 汇编与中断学习笔记
arm开发
姜太小白16 小时前
【其他】QEMU 在 Windows 和 CentOS 7 下安装及运行 ARM 操作系统指南
arm开发·windows·centos
somi717 小时前
ARM-08-I.MX6U UART 串口
arm开发·单片机·嵌入式硬件·自用
observe10117 小时前
ARM学习之时钟,EPIT,GPT
arm开发·学习
誰能久伴不乏17 小时前
从数字世界到物理引擎:用 PWM 撕开 0 和 1 的结界
linux·arm开发·c++·qt
果果燕17 小时前
ARM嵌入式学习(一)---ARM基础概念学习
arm开发·学习