从字面上看,MMU 是“内存管理单元”,而 MPU 是“内存保护单元”。这两者都是 CPU 用于内存处理的专用硬件。 MMU 用于许多功能,主要是虚拟内存(即虚拟地址到物理地址的转换)和内存保护。但 MPU 仅用于内存保护。从这个意义上说,我们可以将 MMU 视为 MPU 的超集。
需要运行Android、Linux、Windows等高端操作系统的处理器通常具有MMU,而需要运行RTOS(例如ThreadX、Nucleus)的处理器通常具有MPU。让我们提及一些带有 MMU 和 MPU 的处理器的真实世界示例。通常,智能手机包含两个主要处理器——一个运行高端操作系统(例如 Android),其中运行应用程序,第二个运行基带 RTOS(例如 ThredX),其中运行 3G/4G 协议栈。第一个称为应用程序处理器,而第二个称为基带处理器。应用处理器(例如ARM Cortex-A 系列)具有MMU,而基带处理器(例如ARM Cortex-R 系列)具有MPU。
一个简单的类比可以将 MMU 视为“瑞士军刀”,将 MPU 视为“刀”!基本上,硬件中的 MMU 实现比 MPU 复杂得多。这就是为什么许多不需要虚拟内存但需要内存保护的计算机系统(例如实时嵌入式系统)具有更简单的 MPU 而不是完整的 MMU。
如果您觉得以上有用,请点赞/分享。另外,请给我们留言以获得进一步的说明或信息。我们很乐意帮助和学习🙂