搞懂CPU、MCU、MPU、SOC、SOPC、MMU、CACHE的区别与联系
CPU(Central Processing Unit):中央处理器,是计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。CPU由运算器、控制器和寄存器及实现它们之间联系的数据、控制及状态的总线构成。CPU一般的工作流程包括四个步骤:提取(Fetch)、解码(Decode)、执行(Execute)和写回(Writeback)。CPU从存储器或高速缓冲存储器中取出指令,放入指令寄存器,并对指令译码,并执行指令。所谓的计算机的可编程性主要是指对CPU的编程。
MCU(Micro Control Unit): 微控制器,是指随着大规模集成电路的出现及其发展,将计算机的CPU、RAM、ROM、定时计数器和多种I/O接口集成在一片芯片上,形成芯片级的芯片。常见的典型MCU包括51,AVR、Cortex-M这些芯片,内部除了CPU外还有RAM、ROM,可以直接加简单的外围器件(电阻,电容)就可以运行代码了。
Kinetis K02_100 MCUs Block Diagram
MPU(Micro Processor Unit):微处理器(不是微控制器),通常代表一个功能强大的CPU(暂且理解为增强版的CPU吧),但不是为任何已有的特定计算目的而设计的芯片。Intel X86、ARM中的一些Cortex-A芯片如飞思卡尔i.MX6、全志A20、TI AM335X等都属于MPU。
i.MX21 Multimedia Applications Processor Block Diagram
SoC(system on chip):系统级芯片,也称为片上系统,意指它是一个产品,是一个有专有目标的集成电路,其中包含完整系统并嵌入软件的全部内容。而SOC是系统级的芯片,它既MCU(51,avr)那样有内置RAM、ROM同时又像MPU那样强大,不单单是放简单的代码,可以放系统级的代码,也就是说可以运行操作系统
SoPC(System On a Programmable Chip):可编程片上系统,上面4点的硬件配置是固化的,就是说51单片机就是51单片机,不能变为avr,而avr就是avr,不是51单片机,他们的硬件是一次性掩膜成型的,能改的就是软件配置,通俗说就是改代码,本来是跑流水灯的,改下代码,变成数码管。而SOPC则是硬件配置,软件配置都可以修改;可以自己构建硬件,这颗芯片称为“白片”,什么芯片都不是,把硬件配置信息下载进去了,他就是相应的芯片了,可以让他变成51,也可以是avr,甚至arm,同时SOPC是在SOC基础上来的,所以他也是系统级的芯片,所以记得当把他变成arm时还得加外围ROM,RAM之类的,不然就是MPU了。
CACHE():高速缓冲存储器,其作用是为了更好的利用局部性原理,减少CPU访问内存的次数。简单地说,CPU正在访问的指令和数据,其可能会被以后多次访问到,或者是该指令和数据附近的内存区域,也可能会被多次访问。因此,第一次访问这一块区域时,将其复制到cache中,以后访问该区域的指令或者数据时,就不用再从内存中取出。
MMU(Memory Management Unit):内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权,多用户多进程操作系统。
TIPS:
CPU与MCU区别:CPU指代的是运算单元;
MCU与MPU区别:典型的MCU通常使用片内flash存储器来存储和执行程序代码。而MPU没有存储空间的限制,MPU使用外部存储器提供程序和数据空间。程序一般放在非易失性存储器如NAND或者串行Flash内,启动时,程序载入到外部DRAM中,然后开始执行。
SOC可以简单看成MCU与MPU的结合版,但是实际情况往往很复杂,比如某些MPU内部也包含ROM和RAM,可以实现启动阶段的一部分功能(系统启动过程,参见前文《不同嵌入式系统的启动过程分析》);
CACHE分为一级缓存、二级缓存、三级缓存,缓存级别越低,速度越快,当然价格也更高。
通常情况下,有没有MMU可以看做区别SOC和MCU的特征,没有MMU一般就是MCU,包含MMU的是SOC。
最后,区分这些概念并没有什么乱用,只是为了辅助理解不同型号的芯片工作流程。