1
控制/MCU
本文由半导体产业纵横(ID:ICVIEWS)编译自pc.watch
随着时代的流逝,8/16位MCU可能会从市场上消失。
前阵子连MCU界都在说“32位时代来了”,看来8位MCU市场真的进入了黄昏时代,它似乎正在加速。
8位MCU的定义是什么?
一个产品是MCU还是MPU(Micro Processor Unit),简单来说就是看它是否可以在没有外部存储器或其他外围电路的情况下运行,而MCU除了CPU内核本身之外,一般都是SRAM(用于程序操作/数据存储)和闪存(大多数用于程序存储,但有时用于数据存储),外围电路。它配备了时钟,外围I / O,甚至PMIC,只要外部提供电源,它将自行运行。MPU基本上具有外部存储器,并将其用作程序存储区域。
但是,有了这个定义,例如,ScratchPad区域中的SRAM呢(这很麻烦,因为有时有些东西可以在这里放置代码),或者Xeon MAX MCU是否具有64GB HBM2e封装并且在没有外部DRAM的情况下运行?
另一个定义是MMU(内存管理单元)在MPU上运行,而MPU(内存保护单元)运行或(尽管现在数量不多)还有一个分类,即MCU首先没有内存管理单元。简而言之,它是虚拟内存是否有效。
这在目前的32位到64位全盛时期是一个相当有说服力的标准,但是在4/8/16位的情况下,MPU没有配备MMU的情况很多,所以不是一个完美的标准。很难说事实上,有MPU和MCU都准备在同一个核心的相同外设配置中的例子。
那么,就趋势而言,市场上不再有8/16位MPU,可以将它假设为一个拥有内存的MCU,即:它是32位MCU和MPU的混合。64位MCU仍然很少(但不是没有),大多数是MPU。下一个问题是,8位是什么意思?
首先,8 位 CPU(或 16 位或 32 位)的定义是什么?以前说地址总线和数据总线的大小是由地址总线的大小决定的,Intel 8088是8位吗?还有说MC68000是32位还是16位,SuperH系列是32位还是16位。
在我看来,如果所有指令可以处理的最大数据类型大小是8位,那么它就是一个8位 CPU。即使是历史上被视为8位CPU的Z80,也有16位的Load/Store指令和算术运算指令,但也仅限于地址处理所必需的。其中,AND/OR/等逻辑运算XOR 只有 8 位。
即使是历史上被视为8位CPU的Z80,也有16位的Load/Store指令和算术运算指令,但也仅限于地址处理所必需的。其中,AND/OR/等逻辑运算XOR 只有 8 位。
顺便说一下,瑞萨电子的产品线中还有一款名为RL78的 8/16 位 MCU 。目前的产品,有的被当成8位(RL78G10/G1M/G1N:S1核心),有的被当成16位(其他:S2/S3核心)。
新的8位MCU
这就是为什么我要谈论与仅执行 8 位操作的 MCU 相关的数据。说实话,8位的MCU本身还在出货,甚至有新品出货。
例如,上月(2023 年 2 月),中国台湾 Holtek 半导体宣布了具有自己的 8 位 RISC 内核的“ BH66F2560 ”和“ BH67F2476 ”。不过搭载Holtek的8位MCU的产品比通用产品更接近于ASSP,所以可以说是有所不同,但在通用产品方面,去年4月Microchip推出了“AVR DD”和“ PIC16”发布了一款新产品。所以,在产品层面,还是有小幅上涨的,很多之前公布的产品还在出货中,不代表产品马上就会从市场上消失。
BH67F2476框图
不过,8位CPU内核本身也有一段时间没有新出来了。如果不是一定要商用的话,去年8月推出的Open Source Silicon Initiative就有类似“NoobsASIC ”之类的东西,但是没有什么可以商用的。
Silicon Labs在2015年宣布了一个名为“EFM8”的8位MCU系列,但实际上核心本身是一个8051兼容的核心,其流水线结构称为CIP-51。
据我所知,最新的新核心是波兰的DCD(数字核心设计)于2014年发布的PIC16兼容“ DRPIC1655X ”和MC68HC11K兼容“ D68HC11K ”,以纪念他们的15周年,以及8051-兼容“ DT8051 ”。
虽然两者都是IP形式,指令集兼容PIC16/MC68HC11/8051,但内部流水线结构独特,据说DRPIC1655X等0.35μm工艺可以运行800MHz。
顺便说一句,在8051核心方面,2012年2月(当时是IXYS公司的子公司)Zilog突然公布了一款名为“Z8051 ”的核心。该公告的新闻稿称,“Zilog 供应 Z80/Z8/Z16 等内核已超过 35 年,但 8051 内核的历史也一样长。因此 Zilog 宣布推出 Z8051。这是一件很自然的事情去做。”我猜我拿到了核心IP。顺便说一句,这款 Z8051 已经完全停产。
看产品规格,主要的指令可以在1~2个周期左右处理,所以属于高速范畴。
Zilog 也有来自前三星半导体的 4/8 位 MCU 产品线,但这是母公司IXYSCorporation 在 2013 年收购三星的整个 4/8 位 MCU 业务是被迫的。尤其是S3家族是Z80兼容核心,现在感觉来不及了。
顺便说一句,CAST在2015年2月的Embedded World上发布了“S8051XC80251”,这是一款与s3兼容的超高速IP核,但这是一款与8051二进制兼容的16位80251兼容CPU,所以我觉得它有点超出这个框架。
8位 MCU出不来的原因
言归正传,8位MCU产品还在发布,但架构上,2010年代上半年就已经完成改造,此后出新架构的可能性极低。事实上,只要一两个人愿意,就可以构建一个架构。Atmel的“AVR8”内核,广泛应用于Arduino Uno(及其前身Arduino Duemilanove、Arduino Diecimila等),最初称为μRISC,由挪威理工学院的Alf-Egil Bogen和Vegard Wollan开发。它被发展成为他的两篇毕业论文的主题。把这个带到Atmel的结果是因为“Alf and Vegard's RISC”而被命名为AVR。
AVR8 核心框图(来自收购 Atmel 的 Microchip 发布的数据表)
然而,虽然创建一个处理器很容易,但创建一个编写在其上运行的程序的环境需要付出巨大的努力和人力。仅仅准备一个汇编器和一个链接器是不够的,如果你试图准备所有的东西,比如C或者诸如移植、调试环境、集成开发环境、库、中间件、OS等等,那将花费很多(没有依据)这是一个粗略的估计,但我认为 10 倍以上的 CPU 内核开发不会奏效)。即使我们花那个成本把新架构推向世界,它的销量是否足以收回成本?答案肯定是否定的。
另一个是MCU造成的限制。即使你说,“好吧,让我们使用 8051 架构并添加超标量和乱序来创建一个运行在几个 GHz 的内核”,现有的 8051 应用程序假定一个有序/单发流水线结构,原本超标量处理的余地不大,即使乱序也很难期待性能的提升,而且无法准确计算到处理完成的处理周期。
首先,在 MCU 的情况下,将程序代码放在 NOR 闪存中是很常见的,即使以 800 MHz 驱动的 Cortex-M7 内核也跟不上从闪存中读取的速度,所以如果不使用cache在一起,就会出现Wait。Cortex-M7和Cortex-R52做dual issues没有意义,但是dual issues对于8位MCU是完全没用的。
此外,由于使用了NOR flash,因此很难使用高级工艺。三星在2019年宣布与Arm合作,在28nm FD-SOI上采用MRAM和MCU核心的Musca-A1,但尚未量产。从这个意义上说,无论你怎么努力,台积电的Around N16都是极限小型化。至于工作频率,运行在N16上的NOR flash的工作速度成为限速阶段,实际工作频率的上限在几百MHz量级。那样的话,现有的8051 IP就足够了。
市场需求与实施成本的困境
然而,市场需求正朝着更高性能和更高功能的方向发展。在过去,MCU只是用于设备内部的封闭控制,基本不需要考虑与外界的通信。然而,最近连接的设备数量开始迅速增加,但使用 USART 的串行通信显然是不够的,而且在很多情况下某种网络是必需的。
或者MCU本身对安全的需求越来越大,更不用说Secure Enclave、固件保护功能、安全密钥存储和TRNG(真随机数生成器)进行加密通信了,至少需要一个PRNG(伪随机数生成器)。
对于做一些更复杂的事情的设备,为了以防万一,对 OTA 固件更新功能的需求越来越大。这是因为即使在产品发布后发现漏洞,也必须在没有 OTA 更新的情况下进行物理收集或替换。
各种功能这样增加,代码量自然会增加,另外为了支持更新,flash容量也会增加。为了承载网络栈,对SRAM的容量也有相应的要求。因此,CPU 核心与 MCU 芯片尺寸的比例变得相当小。
以 DCD 的“DRPIC1655X”为例,MCU 所需的电路规模约为 4800 个门。另一方面,Arm 的“Cortex-M0”有大约 12000 到 25000 个门(取决于电路配置)。中国台湾晶心科技的“N22”内核(RV32)也可以实现约15800个门。也就是说,只要在8位内核上增加10000个门左右,就可以变成32位内核。此外,尝试仅使用 8 位算术来执行这些功能是非常低效的。发生这种情况时,8 位 MCU 变得低效。
当初为什么8位MCU应用如此广泛呢?优点是电路规模小,所以即使满负荷工作也能保持低功耗。但是近年由于需要的内存容量增加,所以电路规模并没有太大变化,可以说是8位或32位,节省成本的优点也没有以前那么显著了。
当网络和安全等所有处理都由公司负责时,内核的满负荷驱动时间比32位MCU更长,因此,省电的优势很小(或者更糟糕的是,8位消耗更多的功率)。目前,市场上新的8位MCU仅限于与这些限制没有太大关系的产品。
比如开头提到的Holtek的BH66F25609(脉搏血氧仪MCU)只有1KB SRAM/32KB闪存/EEPROM 1KB的数据,当然也不支持网络。它之所以有效,是因为它没有安全功能,并且适用于真正低成本的脉搏血氧仪。
顺便说一句,除了8位之外,16位 MCU的情况几乎一样。本来16位的MCU是介于8位和32位之间的中间产品,但是随着32位低端替代8位的快速增长,不仅8位连16位都失去了位置。尽管如此,Renesas Electronics 的 RL78 系列和 TI 的 MSP430 等供应商正在尽力而为,但 Microchip 的 PIC24 系列非常艰难。
MCU迁移到32位的速度比预期的要快
这就是 8 位(和 16 位)MCU 市场缓慢萎缩的原因,越来越多的人倾向于在新设计中使用 32 位而不是 8/16 位。
嵌入式行业的特点是“渐强”。总之,如果新产品所需要的功能是全新的,不能通过扩展现有设计来实现,如果可以通过对现有设计进行返工来完成,那么最好遵循设计并可靠地开发它。
至于可靠性,如果我们能在一定程度上掌握现有产品的特殊性和故障率,当然,即使最后做适当的验证,使用现有产品的衍生模型更可靠。所以笔者认为,距离8/16位MCU不再用于新产品的那一天还有10到20年的时间。
由于新冠疫情导致半导体短缺,这种前景被打破了。简而言之,8位 MCU 已经没有了。就Sourcengine去年11月发布的Q4 2022 Lead Time Report来看,8/16位 MCU的采购暂时需要相当长的lead time,解决这个问题的可能性不大。换句话说,只要你使用的是8/16位的MCU,产品制造就需要这么多的交货时间。简而言之,产品无法发货。在这种情况下,别无选择,只能使用任何可用的东西进行制造,即使它是分销库存。
报告的嵌入式处理页面,8/16位价格有进一步上涨趋势
在这种情况下,8/16位 MCU就很吃亏了。由于内存量本来就很小,所以代码是以针对每个体系结构优化的形式编写的。将这样的软件移植到其他MCU上是非常困难的,或者更确切地说,它比移植更接近于新开发。而且,你现在能拿到的MCU,以后不一定都能拿到。
最近Arm和RISC-V MCU的快速崛起,是因为多家厂商发布了基于相同架构的产品,所以厂商之间切换(外围电路,内存映射等)相对容易,即使改变了, CPU 内核的架构很常见。为了吸收外围电路、内存映射等硬件的差异,最简单的方法是在两者之间用HAL(Hardware Abstraction Layer)进行抽象。为此,RVM-CSI提供了 8/16 位中不存在此类措施。
因此,由现有 8/16 位 MCU 扩展支持的新产品开发正迅速转向 32 位 MCU。于是,原以为要提前10年到20年的“8/16位MCU不再用于新产品的那一天”,似乎比预想的要早很多。
Arduino 项目当然提供基于 8 位 AVR 的套件,例如现有的 Arduino Uno,但最近该项目专注于配备 32 位 SAMD21 的 MKR 系列。从 8 位到 32 位的转变逐渐变得明显。
随着时代的流逝,本以为8/16位终究会从市场上消失,没想到这种趋势竟然加速到现在。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !