mcu与mpu的区别与联系_浅谈MCU与MPU的基本区别

曾经,微控制器(MCU)和微处理器(MPU)是两种完全不同的设备。微控制器完成与“控制”相关的任务,并根据外部信号刺激做出反应。微处理器主要执行处理功能,这需要更高的数据处理和计算能力。

但是现在由于内存架构的变化,两者的界限越来越模糊。和大家熟悉的ST、NXP一样,推出了MPU。通过对比,我们也可以发现MCU和MPU有很多共同点。

其实微处理器和微控制器的区分方式有很多种,但是业界对它们的区分标准还没有达成共识。但目前,两者之间的确切区别已经不重要了。

近年来,MCU和MPU的区别越来越模糊。起初,MCU将CPU、内存和外围设备集成在一个芯片上,现在大多数MCU仍然如此,但由于MCU具有足够强大的功能来支持更复杂的应用,带外部存储器的MCU已经变得常见。

1计算芯片的两个市场

曾经,计算芯片被分成两个完全不同的市场。大多数芯片设备主要针对主流计算,性能是最重要的考虑因素。这些单片微型计算机被称为“微处理器”,为个人计算机和更大的系统提供动力。

如今,我们可以在各种类型的笔记本电脑、台式机和服务器中看到它们。值得注意的是,它们是通用引擎,旨在运行任何数量的事先未知的程序。主存储器是DRAM,非易失性存储是硬盘驱动器或固态盘。在不太主流的嵌入式计算领域,需要适度的计算能力和特殊用途。设计的程序可能运行在固件中,这样整个系统(包括程序和所有系统)都可以在出货前验证,内存需求会更有限。用于存储代码的SRAM和非易失性存储器可以与CPU集成在同一芯片上。关键是实时响应通常很重要。

嵌入式计算机也倾向于用在有特殊I/O要求的环境中。一些可能是驱动马达,而另一些可能是处理声音或读取传感器。将专用的外围接口硬件集成到与CPU、内存相同的芯片中,会产生各种不同特性的芯片,非常有效。一般来说,集成了SRAM、非易失性存储器和专用外设的CPU称为“微控制器”。

到现在,微处理器的数量已经达到了64个,而微控制器的数量仍然在8个以上,只是中间发生了一些变化,使得它们之间的区别更加模糊。

集成闪存是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。从上面的分析来看,每个特征因素都会有缺陷,结果不尽如人意。业内专家怎么看?

3MCU和MPU已经成为过时的名词。

Cadence IP集团产品营销总监马克格林伯格(Marc Greenberg)表示:“我不知道MCU和MPU之间的区别是否有任何官方定义。简单搜索了一下,好像MCU在管芯上有NVM,但是各种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。

在我看来,行业应该抛弃这些过时的术语,使用更精确、更具描述性的术语。”格兰特马丁继续说道。西门子事业部Mentor高级产品经理Jeff Hancock认为:“从系统软件的角度来看,MCU有望适用于直接解释和控制硬件传感器和执行器的应用。这种访问通常涉及一致可靠的指令时序,这与一般MPU的要求相矛盾。一般MPU是为了优化吞吐量,而MCU通常是为了优化延迟。所以MPU更适合处理大型数据库,MCU更适合精细的机电控制。

Jeff Hancock也说过:“外存和缓存肯定会改变MCU的标准,但要把MCU等同于MPU还有很长的路要走。特别是,并非所有MCU中的所有处理单元都独占使用外部存储器,隔离的子系统也可以用于构建系统,这允许关键工作负载和不太关键的应用级系统并行继续。”

“从软件工程师的角度来看,这是一个有趣的挑战。在一个不连续的地方可能有两个存储区。集成内存虽然小,但是速度更快,所以最好留给对速度要求高的代码,比如实时操作系统。这意味着开发工具必须足够灵活,以正确地将代码映射到内存,RTOS必须足够小,以适合片上内存。”西门子业务部嵌入式软件技术专家沃尔斯补充道。

Tortuga Logic的高级硬件安全工程师Nicole Fern表示,“在过去,MCU与嵌入式系统联系在一起。在嵌入式系统中,低成本和低功耗的要求比性能更重要。然而,随着移动计算和物联网边缘计算的出现,现在许多嵌入式系统需要复杂的处理,这就产生了看起来更像嵌入式领域MPU的MCU产品,为具有外部存储器和缓存的设备提供了更高的性能和可配置性。在这种情况下,MCU和MPU这两个术语的区别只在于是否集成了CPU系统。”

Arm低功耗物联网业务高级总监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中2000多点。这些设备中的许多还具有非常大的内置存储器,或者提供连接外部存储器的快速接口。这就保证了性能和内存不再是MCU的瓶颈,让它们更接近低端MPU。

总结现在MPU和MCU界限分明真的很重要吗?

也许这并不重要。因为不管我们怎么称呼,应用都是有附加要求的,这些要求会决定使用哪个设备。

资料来源:https://semiengineering.com/mpu-vs-mcu/.

japan quarterly 日本季刊