MCU与MPU之间的界限正在消失?
扫描二维码
随时随地手机看文章
近年来,许多厂商开始推出兼具MCU和MPU性能的MCU产品,MPU和MCU已经开始“有机融合”,既保留传统MCU的实时性和控制力,又在性能上达到了MPU级别,让用户在开发一些特定应用方案时,不需要在实时控制和性能上做妥协。
MCU指的是微控制器,MPU指的是微处理器。
MCU集合了FLASH、RAM和一些外围器件。MPU的FLASH和RAM则需要设计者自行搭建,当然MCU也可以外扩。MPU的电路设计相对MCU较为复杂。
MCU一般使用片内FLASH来存储和执行程序代码,MPU将代码存储在外部FLASH中,上电后将代码搬运至RAM中运行。因此MCU的启动速度更快。MCU虽然也可以将代码运行在RAM中,但是内部RAM容量小,使用外部扩展RAM的话速度相对内部也较慢。MPU的主频相对较高,外接的内存也一般是DDR3,DDR4这种速度比较快的,适用于运算比较复杂的。
MCU不具备内存管理单元(MMU),不能运行Linux这种操作系统,只能运行小型操作系统,因此无法运行多进程这种程序。小型操作系统的RTOS多任务类似于多线程。
MCU相对MPU具有更强的实时性。
MCU相对MPU具有更低的功耗。虽然MPU也有低功耗模式,但不会像MCU那么低。
至于如何选择,是使用MCU还是MPU需要从性能要求,体积重量要求、预算成本等多方面综合考虑。一般地,MCU偏向于低成本低功耗,MPU趋向于高性能。目前的MCU和MPU的界限在逐渐模糊,MCU的主频也在不断提高,外设不断增加。在远程控制,消费电子或对实时要求高的场合使用MCU的多一些,在有大量计算,高速互联,或是图形交互要求高的地方使用MPU多一些。根据要求也可以使用MCU和MPU配合,现在好多芯片是同时具有MCU和MPU的多核,更方便设计者使用。
MCU和MPU消失的界限
事实上,关于MCU和MPU的争论已经有很多年了。
传统来说,MPU更多采用Arm Cortex-A系列核心,具备丰富的外设接口,MCU则大多采用Arm Cortex-M系列核心,也比MPU更便宜,更容易安装和使用。
更简单粗暴地划分二者的方式是运行Linux就是MPU,基于实时操作系统(RTOS)就是MCU。MCU的目的是永远运行一个相当简单的控制循环,或者直到它中断或停止。
随着技术和应用的发展,MCU现在可以做很多事情,包括更复杂的外围设备,现在一些MCU带有用于更复杂外设的简单软件驱动程序,此时和MPU界限便开始模糊。
当下,MCU和MPU十分相似,现在主流划分方式主要包括两种:一种是通过细微的参数差别,即CPU功能、位数、操作系统、时序要求、核心数量等方面划分;另一种是按照应用划分,MPU注重通过较为强大的运算/处理能力,执行复杂多样的大型程序,外挂大容量的存储器,MCU则通常运行较为单一的任务,执行对于硬件设备的管理/控制功能,通常以单片集成的方式在单个芯片内部集成小容量的存储器实现系统的“单片化”。
不过,依然有技术人员提出,MCU和MPU已经是过时的术语了,不仅性能上急剧提高,随着3D封装、Chiplet技术的进步,很多过去MPU才有的功能已经放到MCU。
业界则喜欢用“跨界”这样的词语来解释这种趋势和潮流,并不断推出跨界产品。
越来越像MPU的那些MCU
所谓跨界,就是把MPU才拥有的一些特性或硬件,放到MCU上,如MPU在摄像头输入、显示输出、USB等方面丰富的外设资源塞入MCU之中。
这样,又可以拥有MCU的低功耗、低成本、简单,又能够实现以往MPU才能做的应用。从各个芯片公司的动作来看,跨界MCU是布局的重点。
ST:开始越级计划
从2007年到2018年,ST(意法半导体)花了12年时间,将 “STM32 = 32位MCU = ARM Cortex MCU” 深植于大众之心。2019年,STM32从MCU跨界到MPU,推出第一颗MPU。
蝴蝶扇动翅膀,便可让彼岸刮起暴风雨。STM32这只“蝴蝶”不仅掀起了MCU的风暴,还走进了工程师和千家万户。现在,它也开始把MCU和MPU融合在一起。
2024年3月14日,ST发布一款新的集MPU和MCU两者之长的高性能产品——STM32H7Rx和STM32H7Sx,并计划在2024年4月开始量产。
STM32H7系列本身采用600MHz运行频率的Cortex-M7内核,性能非常强劲。ST将现有产品再细分为两个产品线:STM32H7R3/S3通用MCU和图形处理能力增强的STM32H7R7/S7。
之所以说是跨界,是因为两款MCU集成专用图形处理器和快速存储接口,这种硬件配置多数都放在MPU上。
STM32H7Rx和STM32H7Sx在安全功能上也非常强大,涵盖防止物理攻击、存储器保护、在运行时保护应用程序的代码隔离保护功能。此外,STM32H7S产品还增加了更多的强化的安全功能,集成了不可变的信任根、调试验证,以及硬件加密加速器。
新产品能够实现往往需要用MPU才能跑起来应用,设备厂商可以更快、更经济地开发智能家电、智能楼宇控制器、工业自动化和个人医疗设备,满足终端市场用户日益增长的需求。具体用例包括增加更丰富多彩的图形用户界面,同时执行多个不同的功能。
曾有一段时间,微处理器(MPU)与微控制器(MCU)是截然不同的两种设备,微控制器完成“控制”相关的任务,根据外界信号刺激产生反应,微处理器主要执行处理功能,对数据处理和计算能力的要求较高。但如今由于内存架构的变化,两者之间的界限正在变得模糊。
事实上,可以通过多种方式区分微处理器和微控制器,只是业界尚未对他们的区分标准达成共识。不过已经有一些人得出结论,目前两者之间的准确区分都已经不再重要了。
“近年来,MCU和MPU之间的区别变得越来越模糊。”西门子业务部门的嵌入式软件技术专家Colin Walls说,“最初,MCU在一个芯片上集成了CPU、内存和外围设备,如今大多数MCU依然如此,但因为MCU具有足够强大的功能来支持更复杂的应用程序,附加外部存储器的MCU也变得常见。”
计算芯片的两个市场
曾经有一段时间,计算芯片分为两个截然不同的市场,大部分芯片设备主要针对主流计算,性能是最主要的考虑因素,这些单片微型计算机被称之为“微处理器”,为个人计算机和更大的系统提供动力。
如今我们可以在各种类型的笔记本电脑、台式机和服务器中看到它们,值得注意的是,它们是通用引擎,旨在运行事先未知的任何数量的程序,主内存是DRAM,非易失性存储是硬盘驱动器或固态硬盘。
在不那么主流的嵌入式计算世界里,需要适度计算能力和专门用途,设计好的程序可能在固件中运行,以便让整个系统(包括程序和所有系统)在出货之前得以验证,内存需求将受到更多限制,可以将用于存储代码的SRAM和非易失性内存与CPU集成到同一块芯片上,关键一点,实时响应通常很重要。
嵌入式计算机也倾向于在有特殊I/O需求的环境中使用,一些可能是在驱动电动机,另一些可能是在处理声音或读取传感器。将专用外围设备接口硬件集成到同CPU和内存相同的芯片上十分有效,这会产生具有不同特性的各种芯片。
总的来说,CPU与SRAM、非易失性存储器和专用外设集成在一起的被称之为“微控制器”。
集成式闪存是MCU的重要特征,不过这类闪存尚未在拥有最先进节点的微控制器上使用,因此许多以微控制器形式销售的设备都使用外部闪存而不是嵌入式闪存,此外还使用外部DRAM。
实际上,一个称之为“shadowing”的过程可以从外部闪存中获取代码,并将其复制到DRAM中,然后从中执行代码,而且为了提高性能,缓存也可以包括在内。这使得CPU/内存子系统与MPU几乎没有区别。
那么现在的MCU就是MPU吗?不再有区别了吗?
当下可区分MCU与MPU的因素
如今的MCU和MPU十分相似,但依然在很多方面有一些细微的区别,这包括CPU功能、位数、操作系统、时序要求、核心数量等方面。
在CPU功能方面,如果CPU具有复杂的流水线,具有预测执行和其他超标量功能,则可以将其视为MPU,但是转变的确切位置并没有明确界定。
在位数上,8位设备更有可能被视为MCU,64位设备很可能被视为MPU。不过最早的却是MPU是4位,这更像是历史问题,而不是决定性的特征。
也可以根据计算机可运行的操作系统进行分类,如果它运行Linux,则可以将其称为MPU。如果它仅允许较小的实时操作系统,甚至只运行裸机,则可以将其称为MCU,这为能够运行的Linux的设备留出了许多中间地带。在时序方面,MCU通常用于需要硬或软实时响应的应用程序,MPU通常不能用于这一目的。
一般也将多核处理器视为MPU,尤其是在内核相同且管理对称的情况下。不过专用设备可能具有多个处理器,有些专用于诸如数字信号之类特定任务的处理器也会被认为是MCU,因此通过核心数目判断是MPU还是MCU并不是一个准确的依据。
从使用目的来看,可以认为通用设备是MPU,单用途设备是MCU,但这实际上只关乎设备的使用方式,如果在不明确使用目的的情况下使用任何设备,那时候如何称呼这一设备呢?
通常全功能MPU不会具有专用外围设备,这在很大程度上是因为它们是通用的,而不是面向特定应用,因此你可能会认为只要有这样的外围设备,就是MCU,但是事实并非如此,缺少外围设备也并不意味着就是MPU。
从上面的分析来看,每个特征因素都会存在缺陷,结果无法令人满意,那么行业专家又是怎么认为的呢?
MCU和MPU已成过时的术语
Cadence IP集团产品行销总监Marc Greenberg对此表示:“我不知道MCU与MPU之间的区别是否存在某些官方的定义,经过简单的检索似乎表明,裸片上存在NVM的为MCU,但各种MPU上都有NVM的某些位,MPU也可能在同一片裸片上具有MCU,那又是什么呢?最小的无缓存处理器可能仍具有一些寄存器和SRAM,用RTL编码的定序器与从ROM执行的通用处理器真的有区别吗?显然MCU和MPU之间的区别有些随意,这意味着这一界限并不明确甚至可以随心所欲。当我想到MPU时,我想到的是用于控制通用计算机的设备,例如台式机、服务器、平板电脑等。”
Cadence高级工程师Grant Martin认为:“根据维基百科的解释,MCU是在单个金属氧化物半导体集成电路芯片上的小型计算机,MPU是一种计算机处理器,在MOSFET结构的单个或多个集成电路上结合了中央处理单元的功能。”
“如果深入研究,MPU具有CPU的功能,因此它是计算机处理器,而MCU则是更完整的计算机,这意味着MCU内包含MPU,这与常识相反。具有多个处理器核心的16路服务器处理器是否不再是MPU?而是一种多核异构SoC?”
“例如,一部手机可能包括多个应用程序处理内核,用于音频、视频、图像处理的多个DSP,一个或两个用于在屏幕上呈现图像的GPU以及一个仅用于娱乐目的的神经网络处理单元——MCU。从我的角度来看,行业应该放弃这些过时的术语,使用更精确更具描述性的术语。”Grant Martin继续说。
西门子业务部门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。





