MCU与MPU的基本区别
MCU与MPU的基本区别
题记:一般来说,mpu的价格是mcu的数倍。
参考资料:
1.前言
曾经 微控制器(MCU)与微处理器(MPU)是截然不同的两种器件,微控制器完成“控制”相关的任务,根据外界信号刺激产生反应,微处理器主要执行处理功能,对数据处理和计算能力的要求较高。
但如今由于内存架构的变化,两者之间的界限正在变得模糊。像大家熟悉的ST、NXP都推出了MPU,通过对比大家也能发现MCU和MPU之间有很多共性。
事实上,可以通过多种方式区分微处理器和微控制器,只是业界尚未对他们的区分标准达成共识。不过目前两者之间的准确区分都已经不再重要了。
近年来,MCU和MPU之间的区别变得越来越模糊。最初,MCU在一个芯片上集成了CPU、内存和外围设备,如今大多数MCU依然如此,但因为MCU具有足够强大的功能来支持更复杂的应用程序,附加外部存储器的MCU也变得常见。
2.各种观点
西门子业务部门Mentor的高级产品经理Jeff Hancock认为:“从系统软件的角度来看,MCU有望适用于直接解释和控制硬件传感器和执行器的应用。这种访问通常涉及一致且可靠的指令时序,这与通用MPU的需求相矛盾。通用MPU旨在优化吞吐量,而MCU通常会优化延迟。因此,如果是需要处理大型数据库,MPU更合适,如果是要精细的机电控制,那么MCU更合适。
Jeff Hancock还说:“外部存储器和缓存肯定让MCU的标准有所变化,但这距离将MCU等同于MPU还有很长的路要走。特别是并不是所有MCU中的所有处理单元都专门使用外部存储器,也可以使用隔离的子系统构建系统,这些子系统允许关键的工作负载和不太关键的应用程序级系统并行继续。”
“从软件工程师的角度看,这是一个有趣的挑战,在不连续的地方可能有两个内存区域,集成式内存虽小,但速度更快,因此最好留给对速度有高要求的代码,例如实时操作系统。这意味着开发工具必须足够灵活以将代码正确地映射到存储器上,而RTOS必须足够小适合片上存储器。”西门子业务部门的嵌入式软件技术专家Walls补充到。
Tortuga Logic的高级硬件安全工程师Nicole Fern表示:“过去,MCU与嵌入式系统相关联。在嵌入式系统中,低成本和低功耗的要求比性能更为重要。但是随着移动计算和IoT边缘计算的出现,许多嵌入式系统现在需要复杂的处理,这样就产生了面向嵌入式领域看起来更像MPU的MCU产品,为带有外部存储器和高速缓存的器件提供了更高的性能和可配置性。这种情况下,术语MCU和MPU之间的差异仅取决于是否集成CPU系统。”
Arm的低功耗IoT业务高级总监Thomas Ensergueix也认为:近年来,MCU和MPU之间的界限已经模糊。MCU和MPU之间的主要区别之一是软件和开发。MPU将支持丰富的OS,如Linux和相关的软件堆栈,而MCU通常将专注于裸机和RTOS。在决定哪种硬件平台、MCU或MPU最有效之前,由软件开发人员决定哪个软件环境和生态系统最适合他们的应用。
随着现在MCU已经过渡到32位,我们还看到了性能的急剧提高,这有助于缩小MCU和MPU之间的差距。例如:许多基于Arm Cortex-M7的MCU可提供100多个Dhrystone MIPS,或在CoreMark中提供2,000多个点。这些设备中的许多设备还具有非常大的内置存储器,或者提供快速接口来连接外部存储器。这确保了性能和内存不再是MCU的瓶颈,并使它们更接近低端MPU。
3. 进一步理解
MPU的全称叫Micro Processor Unit,MCU的全称是Mirco Controller Unit。首先这两个词都有一个Micro开头,其实这就表明了这是计算/控制单元小型化后出现的技术。
由于主要完成“控制”相关的任务,所以被称为Controller。也就是根据外界的信号(刺激),产生一些响应,做一点简单的人机界面。对于这种需求,通过不需要芯片主频太高。早期8051系列主频不过10几MHz,还是12个周期执行一条指令。经过多年的“魔改”也最终达到了100MHz。其次就是处理能力不用太强,8位的MCU长期是微控制器的主流。后来16位的MCU逐步开始占领市场。而随着ARM的32位MCU的出现,采用ARM的M系列的MCU也开始逐步扩大市场。以ST、NXP公司的产品为主要代表。但是这些ARM系列MCU的主频一般也是在几十MHz到100多MHz的量级。其次由于执行的“控制相关”任务,通常不需要支持复杂的图形界面和处理能力。在MCU上完成的任务大多数是一些简单的刺激-响应式的任务,而且任务类型单一,任务执行过程简单。在这种情况下一般不需要MCU去执行功能复杂、运算量大的程序,而通常不需要运行大型操作系统来支持复杂的多任务管理。这就造成了MCU一般对于存储器的容量要求比较低。
而Processor,顾名思义是处理器。处理器就是能够执行“处理”功能的器件。其实具备Processor这个单词的器件不少。比如CPU就被称为“中央处理器”,那既然有“中央”就应该有“外围”。GPU在经典的桌面计算机中就是一个典型的“外围”处理器,主要负责图形图像处理,由于图形图像显示。当然,今天由于AI的崛起,GPU变身成为了人工智能的训练神器。带“P”的还有DSP,数字信号处理器,一种专门为了数字信号处理而生的“领域专用处理器”。所以这些带P的处理器,都是要具备“处理”能力的。“处理”什么?自然是处理数据/信息了。也就是说处理器本身都需要较为强大的数据处理/计算能力。 以GPU为例,正是由于它强大的并行浮点运算能力才能支持高速的图像处理,使音视频播放、多媒体技术成为可能。同样由于这样的处理能力使之在AI时代来临之时发挥巨大作用。
以上对于处理器说了这么多,核心意思就是一个。处理器一定要处理/运算能力强,能够执行比较复杂的任务。而微处理器,其实就是微型化/集成化了的处理器。准确的说是微型化/集成化的“中央处理器”。这就是把传统的CPU之外集成了原属于“芯片组”的各类接口和部分“外设”而形成的。 MPU从一开始就定位了具有相当的处理和运算能力,一帮需要运行较大型的操作系统来实现复杂的任务处理。因此这就决定了MPU应该具备比较高的主频,和较为强大的运算能力。MPU很早就演进到了32位处理器,现在更是开始大力普及64位。现在MPU领导具有绝对影响力的Arm公司一开始就定位要做32位。同时MPU也一直追求实现较高的主频。早期经典的Arm 9系列MPU频率就在200MHz-400MHz。现在手机上使用的高端MPU更是到达了3GHz,和主流的桌面处理器是一个级别了。 和通用的桌面处理器一样,MPU现在也普遍“多核化”。
为了支撑MPU强大的算力,使得“物尽其用”。必然要求在MPU上运行比较复杂的、运算量大的程序和任务,通常需要有大容量的存储器来配合支撑。而大容量的存储器难以被集成到以逻辑功能为主的MPU内部,因此MPU现在要运行起来通常需要“外挂”大容量的存储器。主要是大容量的DDR存储器和FLASH。在手机领域前者被称为“运存”而后者被称为“内存”。为了支撑运行复杂操作系统和大型程序,往往还需要MPU中集成高性能的存储控制器、存储管理单元(MMU)等一整套复杂的存储机制和硬件。
所以从形态上看,MPU由于需要运行对处理能力要求复杂大程序,一般都需要外挂存储器才能运行起来。而MCU往往只是执行刺激-响应式的过程控制和辅助,功能比较单一,仅仅需要使用片上集成的小存储器即可。这是区别MPU和MCU的重要表象,但不是核心原因。
总结一下,MPU和MCU的区别本质上是因为应用定位不同,为了满足不同的应用场景而按不同方式优化出来的两类器件。MPU注重通过较为强大的运算/处理能力,执行复杂多样的大型程序,通常需要外挂大容量的存储器。而MCU通常运行较为单一的任务,执行对于硬件设备的管理/控制功能。通常不需要很强的运算/处理能力,因此也不需要有大容量的存储器来支撑运行大程序。通常以单片集成的方式在单个芯片内部集成小容量的存储器实现系统的“单片化”。
但需要指出的是,随着技术的不断演进。以上的产品形态也会发生一系列的变化和衍生。现在NXP已经开始推出主频在1GHz,带强大运算能力的MCU。而随着3D封装、Chiplet技术的进步,把大容量存储器以先进封装的方式实现“单片集成”也正在实现。所以这种技术名词最终还是应该从他们出现的原因去理解,而不应该简单的从一些形态、架构去解释。更不应该机械的搞一些没有什么意义的“定义”,还让学生在考试的时候去回答。