【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

相关推荐
dadaobusi1 天前
qemu构建arm环境(AI生成)
arm开发
mucheni2 天前
迅为RK3562开发板ARM四核A53核心板多种系统适配全开源
arm开发
阿让啊2 天前
单片机获取真实时间的实现方法
c语言·开发语言·arm开发·stm32·单片机·嵌入式硬件
手打猪大屁2 天前
ARM裸机开发——I.MX6U_汇编LED灯驱动
汇编·arm开发
深圳信迈科技DSP+ARM+FPGA2 天前
基于ARM+FPGA+DSP的储能协调控制器解决方案,支持国产化
arm开发·fpga开发·信号处理
承接电子控制相关项目2 天前
STM32F103 单片机(基于 ARM Cortex-M3 内核)的启动过程涉及硬件初始化、固件配置和程序执行流程。
arm开发·stm32·单片机·cortex-m3内核启动
技术领导力2 天前
事关数据安全,ARM被爆不可修复漏洞
arm开发
完成大叔3 天前
嵌入式:ARM公司发展史与核心技术演进
arm开发·嵌入式硬件
木木不迷茫(˵¯͒¯͒˵)3 天前
Keil MDK‑5 中使用 GNU ARM GCC 的 -Wno-* 选项屏蔽编译警告
arm开发·gnu·keil
迷路的小灰仔3 天前
ESP32 搭建IDF+Vscode环境(详细教程)
c语言·arm开发·单片机·mcu·物联网·visual studio·iot