【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

相关推荐
Dlrb121115 小时前
ARM---IMX6ULL 的 PWM 模块介绍及其程序的编写
arm开发·arm·pwm·imx6ull·lcd屏幕
byte轻骑兵1 天前
如何定制BlueZ编译:开启/关闭BLE/音频模块的编译参数配置
linux·arm开发·蓝牙·bluez·电脑蓝牙
亿道电子Emdoor2 天前
【Arm】MSP和PSP的区别简介
c语言·arm开发·单片机·mcu
Lee_jerome2 天前
《C/C++编译全家桶:g++四阶段、.a与.so区别、CMake构建、ARM交叉编译,这篇全讲透了》
c语言·开发语言·arm开发·c++·编译·cmake·cmakelists
Dlrb12113 天前
ARM---IMX6ULL的LCD模块简介及LCD驱动程序的编写
arm开发·lcd·arm·imx6ull·显存·像素
深信达沙箱3 天前
漏洞修不完、合规过不了?先御OS如何让嵌入式设备‘出厂即合规
arm开发·操作系统·嵌入式操作系统
木木_王4 天前
嵌入式学习 | STM32 裸板驱动开发(Day05)超详细复习笔记外部中断 EXTI、NVIC 优先级、串口中断实战
arm开发·stm32·学习
振南的单片机世界4 天前
3.5T静默分帧,CRC16校验:Modbus-RTU帧结构解析
arm开发·stm32·单片机·嵌入式硬件
m0_547486664 天前
《Arm Cortex-M4嵌入式系统-STM32G4系列微控制器的原理架构与开发》全套PPT课件
arm开发·stm32·嵌入式硬件
工业设备方案笔记4 天前
RK3588 AI部署实战:如何在ARM设备上运行AI模型?——从模型转换到边缘推理全过程解析
arm开发·人工智能·边缘计算