前言
对于一些小伙伴来说,CPU、MCU、MMU、MPU这几个U的概念总是有些模糊不清的,本文特此总结一下它们之间的区别。
CPU
CPU(Central Processing Unit,中央处理器),作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。
一颗芯片中最不可或缺的组成结构就是CPU,按照集成度来分的话,电脑和手机是最极端的两个例子。组成一台电脑需要由中央处理器、显卡、内存条、硬盘等多个外接硬件,与之相反,手机则是将这些外设尽可能地集成在一颗芯片内。所以CPU既可以是一颗独立的芯片,也可以是一颗芯片的组成单元。
MCU
有了上面的简单了解,我们可以来谈谈MCU了。MCU英文全称为:Micro controller Unit,也译作微控制器,内部集成了中央处理器(CPU)、内存(RAM 和 ROM)、输入/输出端口、计时器、计数器、通信接口(如UART、SPI、I2C)以及其他接口,构成一个完整的系统。
MCU通常用于嵌入式系统,如家电、汽车、医疗设备、工业自动化等,用于执行对算力要求较小的控制任务。对于开发者而言,MCU通常采用裸机开发或移植实时操作系统开发。
MMU
MMU是Memory Management Unit的缩写,中文名是内存管理单元,是用于内存管理的硬件。操作系统通过MMU能够将物理内存(RAM)扩展到更大的址空间,从而使操作系统和应用程序能够独立于实际的物理内存大小,以便于更有效地管理内存资源。
MMU 还提供了内存保护功能,防止程序访问未分配的内存区域或其他进程的内存。它通过访问权限位(如读、写、执行权限)来控制对不同内存区域的访问。
根据不同的使用场景,MMU可以被制成一颗独立的芯片,也可以像CPU一样被集成在一颗芯片当中。而MPU就是一种包含了MMU的芯片。
MPU
MPU (Micro processor Unit),称为微处理器。相比与MCU,MPU内部多了内存管理单元(MMU),初学者可以简单地认为MPU=MCU+MMU。
在计算性能上,MPU的算力比MCU大得多,大多数MCU可以完成的工作,MPU都可以完成。拥有内存管理单元,可以让系统能够支持多任务处理,允许多个程序同时运行,每个程序都拥有自己的内存空间和执行环境。这类芯片通常使用Linux系统进行开发。
然而这并不意味者在开发者在产品中可以无脑选择MPU,除了考虑成本以外,MPU和MCU的侧重点也有所不同。
MPU侧重于执行复杂的算法和处理大量数据,以及多任务执行的情境下。这可能不适用于某些实时应用。
MCU可以直接与传感器、执行器和其他实时设备通信,对外部事件作出快速响应。对于特定任务,时间控制较为严格的场景,选择使用MCU具有更高的实时性。