曾经有一段时间,微处理器和微控制器是截然不同的设备。您从未与谁打交道。但是内存架构的变化使现代设备的区别变得模糊。
可以通过多种方式来区分微处理器和微控制器。但是,关于如何实现这一目标尚未达成共识,而且某些人(虽然绝对不是所有人)已经得出结论,任何区别甚至都不再重要了。
西门子业务部门Mentor的嵌入式软件技术专家Colin Walls说:“近年来,MCU和MPU之间的区别变得越来越模糊。” “最初,MCU在一个芯片上集成了CPU,内存和外围设备。如今,尽管情况仍然如此,但附加附加的外部存储器已经很普遍了,因为MCU功能强大,足以支持更复杂的应用程序。”
关于两个市场的故事曾经有一段时间,计算芯片针对两个截然不同的市场。在更明显的方面,设备主要针对主流计算,而性能是主要考虑因素。这些单芯片计算机被称为“微处理器”,为个人计算机和更大的系统提供动力。
今天,我们可以在各种类型的笔记本电脑,台式机和服务器中看到它们。关键在于它们是通用引擎,旨在运行先验未知的任何数量的程序。主内存是DRAM,非易失性存储是硬盘(或SSD)。
在不那么明显的方面是嵌入式计算的世界。在此需要专用的适度计算能力。预期的程序可能会在固件中实施,以便可以在发货之前验证整个系统(包括程序和所有系统)。内存需求受到更多限制,可以将用于代码存储的SRAM和非易失性内存与CPU集成到同一芯片上。至关重要的是,实时响应通常很重要。
该市场也倾向于用于具有非常特定的I / O需求的环境。有些可能正在驱动电动机。其他人可能正在处理声音或读取传感器。将专用外围设备接口硬件集成到与CPU和内存相同的芯片上变得很有用。这导致了具有不同特性的各种芯片。但是总的来说,与SRAM,非易失性存储器和专用外设集成的CPU被称为“微控制器”。
微处理器已发展到多达64位的怪物,而仍然有大量的8位微控制器。但是在中间,发生了一些变化,使区分变得不太清楚。
尽管不是唯一的决定因素,但闪存的集成是微控制器的重要特征。但是,闪存尚未在最先进的微控制器节点上使用,因此,许多作为微控制器销售的设备都使用外部闪存而不是嵌入式闪存。他们还可以使用外部DRAM。
实际上,一个称为“ shadowing”的过程将从外部闪存中获取代码,并将其复制到DRAM中,然后从中执行代码。并且为了提高性能,可以包括缓存。这使得CPU /内存子系统与微处理器几乎没有区别。那现在是微处理器吗?不再有有意义的区别了吗?
图1:顶部是微处理器系统的典型简化图像。 DRAM和硬盘驱动器在芯片外部。底部在左侧显示了较旧的微控制器,在右侧显示了较新的微控制器,看上去与微处理器不再如此不同。资料来源:Bryon Moyer /半导体工程
CPU功能:如果CPU具有复杂的流水线,具有推测执行和其他超标量功能,则可以将其视为微处理器。但是,转换的确切位置并没有明确定义。
更多位:8位设备更有可能被视为微控制器,而64位设备很可能被视为微处理器。但是话又说回来,第一个微处理器是4位,所以这更多的是历史问题,而不是定义的特征。
操作系统:可以根据计算机可以运行的操作系统类型进行分类。如果它运行Linux,则可以将其称为微处理器。如果它仅运行较小的实时操作系统,甚至只运行裸机,则可以将其称为微控制器。这为可能可以运行Linux的设备留出了许多中间地带。
时序要求:尽管不是唯一地,微控制器通常用于需要硬或软实时响应的应用中。微处理器通常不能用于此目的。
多核:将多核处理器视为微处理器的可能性更大,尤其是在内核相同且对称管理的情况下。但是专用设备可能具有多个处理器,有些专用于诸如数字信号处理之类的特定任务。它们可能被认为是微控制器,但是吗?此外,设备不必是多核的就可以成为微处理器,因此这并不是一个好的决定因素。
目的:您可以说通用设备是微处理器,而单用途设备是微控制器。但这实际上就是有关设备使用方式的全部信息。您可以使用任何一种设备。在不知道其使用方式的情况下,您将如何称呼该设备?
外围设备:这使专用外围设备成为可能的差异化因素。可能的确,全功能的微处理器不会具有这些外围电路,这在很大程度上是因为它们专用于通用用途,而不是用于特定的应用。因此,您可能会说,如果有这样的外设,那就是微控制器。但是事实并非如此:缺少外围设备并不意味着它是微处理器。
每个明显的特征都会失败,或者充其量是无法令人满意的。那那把我们留在哪里呢?我们问了很多人他们的意见,但没有达成共识。这是他们的一些想法。
Cadence知识产权部产品市场部总监Marc Greenberg说:“我不知道微控制器和微处理器之间的区别是否有一些'正式的'工程定义。快速搜索似乎表明,裸片上存在NVM使其成为MCU,但各种微处理器上都有NVM的某些位。微处理器也可能在同一裸片上具有MCU,那又是什么呢?最小的无缓存处理器可能仍具有一些寄存器和SRAM。用RTL编码的定序器与从ROM执行的通用处理器真的有区别吗?因此,微控制器和微处理器之间的区别有些随意,这意味着它可以随心所欲。当我想到微处理器时,我想到控制通用机器(例如台式机,服务器,平板电脑等)的较大处理器和微控制器是无头或具有较小专用UI的嵌入式设备的核心。”
Cadence的杰出工程师格兰特·马丁(Grant Martin): ‘微控制器是在单个金属氧化物半导体集成电路芯片上的小型计算机。微处理器是一种计算机处理器,它在MOSFET结构的单个(或多个)集成电路(IC)中集成了中央处理单元的功能。两者虽然都没有用,但指出了试图区分它们的任意性。如果您对此进行深入研究,则微处理器具有CPU的功能,因此它是“计算机处理器”,而微控制器是更完整的“计算机”,这意味着微控制器包括微处理器,这与常规相反。但是,具有多个处理器“核心”的16路服务器处理器是否不再是微处理器?并且是手机中的一种多路异构SoC,它可能包括多个应用处理内核,用于音频,视频,图像处理的多个DSP,一个或两个用于在屏幕上渲染图像的GPU和一个神经网络,网络处理单元,只是为了好玩-一个“微处理器”?从我的角度来看,该行业应该放弃这些有些过时的术语,而使用更精确的术语,尽管使用的时间更长且更具描述性(我称之为“非常精确”)。”
西门子业务部门Mentor的高级产品经理Jeff Hancock:“从系统软件的角度来看,微控制器有望适合直接解释和控制硬件传感器和执行器的应用。这种访问通常涉及一致且可靠的指令时序,这与通用微处理器的需求相矛盾。通用微处理器旨在优化吞吐量,而微控制器通常会优化延迟。因此,如果您需要大型数据库,则微处理器可能是合适的。如果您想要精细的电机控制,则微控制器非常适合您。外部存储器和缓存肯定会破坏微控制器的确定性,但这距离宣布它等同于微处理器还有很长的路要走。特别是,外部存储器的存在并不要求MCU中的所有处理单元都专门使用甚至根本不使用外部存储器。可以使用隔离的子系统构建系统,这些子系统允许关键的工作负载与使用较大的外部存储器和缓存的不太关键的应用程序级系统并行进行。”
Mentor的Walls:“从软件工程师的角度来看,这是一个有趣的挑战。在不连续的地址处可能有两个内存区域。板载内存虽小,但速度更快,因此最好保留给诸如实时操作系统之类的从最佳速度中受益的代码。这有两个含义:开发工具必须足够灵活以将代码正确地映射到存储器上,而RTOS必须足够小(通常非常可扩展)以适合片上存储器。”
Tortuga Logic的高级硬件安全工程师Nicole Fern表示:“过去,微控制器与嵌入式系统相关联,在嵌入式系统中,低成本和低功耗的要求比性能更为重要。但是随着移动计算和IoT边缘计算的出现,许多嵌入式系统现在需要复杂的处理。这样就产生了看起来更像MPU的MCU产品,带有外部存储器和高速缓存的选件提供了更高的性能和可配置性,但面向嵌入式领域销售。在这些情况下,术语“ MPU”和“ MCU”之间的差异仅取决于集成了CPU的系统的系统。
Arm的低功耗物联网业务高级总监Thomas Ensergueix:“近年来,微控制器和微处理器之间的界限已经模糊。 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。
结论那么,最后确定我们的区别真的重要吗?可能不会。应用程序附带要求,而这些要求将决定使用哪种设备(与我们所说的设备无关)。
相关的MCU Dilemma微控制器供应商已经摆脱了限制他们使用多年的限制。新的内存类型和RISC-V是否可以进行下一轮更改?与内存压力的日益复杂的关系正在建立,以改变与内存相关的编程范例,但是到目前为止,经济理由阻碍了进展。 MCU知识中心MPU知识中心
对我来说,区别很简单明了:MCU没有MMU,因此没有虚拟内存寻址。 MPU确实具有MMU,因此具有虚拟内存寻址。