当今的大多数嵌入式系统都依赖于片上闪存或SRAM作为程序存储器(固件)。然而,这些存储器在成本和功耗方面通常很昂贵,并且还将程序大小限制在片上实现的存储器量上。协议和存储器设计的最新进展使固件能够以就地扩展(XiP)方式直接从片外非易失性存储器(NVM)设备中运行,这种方法可能会缓解上述挑战。
本文将介绍用于嵌入固件的传统解决方案的优缺点。随后将对 XiP 解决方案进行深入讨论,最后就如何选择最佳 XiP 架构提出建议。
嵌入式闪存长期以来一直是微控制器(MCU)的支柱。这些MCU通过一个或多个NVM阵列来增强片上易失性存储器阵列,用于存储固件和其他常量。要实现这一目标,需要通过大量额外的制造步骤,用NVM单元增强基本的CMOS工艺。过去,添加这些制造步骤的成本很小,但随着CMOS技术的进步,将标准CMOS工艺转变为支持NVM的工艺变得越来越复杂和昂贵。事实上,虽然当今量产中最先进的CMOS工艺低于10nm,但带有嵌入式闪存的CMOS在40nm处落后于多代。
结果是,虽然MCU供应商可以使用更快,更便宜且需要更低功率的工艺技术来构建产品,但嵌入式NVM的使用使他们无法这样做。即使他们选择支持嵌入式NVM的老一代,支持闪存的工艺与不支持闪存的工艺之间的价格差距也可能超过40%。此外,将特定的 NVM 大小提交到 MCU 中可能适用于一个应用程序,但对于另一个应用程序来说可能是错误的容量。
无论面临所有这些挑战,嵌入式NVM仍将在很长一段时间内成为MCU的支柱。对于可以在不太先进的CMOS工艺中实现的较小设计,使用嵌入式闪存将是最有效的解决方案。但更高性能、更低功耗的MCU需要替代解决方案。
使用嵌入式闪存的另一种方法是由外部串行闪存器件备份的片上SRAM阵列。启动后,外部闪存的内容被复制到片内SRAM,然后MCU开始从SRAM执行。该解决方案的最大优点是SRAM可以采用最先进的CMOS工艺制造,而无需修改工艺。但是,此解决方案需要两个固件副本 - 一个在外部闪存中,另一个在SRAM中。大型片上SRAM阵列即使在高级工艺节点中也相当昂贵。而且,由于SRAM会泄漏电流,因此当系统处于省电模式时需要关闭它们,每次MCU唤醒时都需要重复耗电且耗时的复制操作。最后,与嵌入式闪存一样,特定MCU中SRAM的尺寸是固定的,对于特定应用的需求来说,它可能太大或太小。
MCU供应商正在寻找新的内存架构,以满足新兴智能物联网边缘设备的性能和功耗要求。XiP的使用正在成为高性能、低功耗系统的首选解决方案。借助XiP,MCU可以在标准CMOS工艺技术中实现,而只有外部闪存阵列需要特殊的NVM工艺。MCU通过保存常用代码段的指令缓存进行了增强。每当处理器在缓存中找不到所需的指令(缓存未命中)时,MCU 就会启动对外部闪存的访问,以带来缺失的指令并将其存储在缓存中。随着新的JEDEC xSPI协议(JESD 251)的引入,闪存的接口可以达到200MHz,在双数据速率(DDR)中切换8位宽的数据路径。
最近,恩智浦和意法半导体都推出了可以使用外部闪存进行就地扩展(XiP)操作的MCU。意法半导体的STM32L4+和STM32L5分别是基于Arm Cortex-M4和M33内核的中端MCU,而高端恩智浦 i.MX RT1050和RT10xx系列的其他成员则实现了具有32KB指令缓存的600MHZ双问题Cortex-M7。恩智浦还通过其基于M4的中端Kinetis K8x产品和最近推出的基于Arm Cortex-M33的MCURT600支持XiP。意法半导体MCU和Kinetis K8x实现了片上闪存和对XiP的支持的组合。RT600 和 RT10xx 产品的设计没有片上闪存,因此价格非常激进。
选择用于就地扩展的外部闪存设备时,首先要问的问题是固件的哪些部分将在 XiP 模式下运行。一些设计人员选择混合方法,将程序的性能关键部分保留在芯片上(ROM、闪存或SRAM),并在XiP模式下使用外部闪存来扩展系统。
有关此的问题:
程序的全部或部分是否从片上ROM、闪存或SRAM执行?如果是,这些内存类型中的哪一种?
程序的全部或部分是否会以XiP方式直接从外部闪存中执行?
如果(a)的答案是SRAM,则需要在SoC外部使用闪存,以便在启动时加载程序。设计人员可以选择Adesto Phoenix(标准闪光灯)、Fusion(针对电池操作优化的闪光灯)或EcoXiP(针对XiP优化的八闪光灯)。对于对成本敏感且吞吐量不重要的应用程序,应选择 Phoenix。Fusion适合具有非常严格的功率限制的最佳应用。在这种情况下,只有当客户还需要 XiP 模式下的高性能,或者需要八通道闪存设备的吞吐量来实现非常快速的启动或频繁的数据读取操作时,才应考虑 Adesto 的 EcoXiP,例如人工智能推理引擎。
假设(b)的答案是肯定的(至少部分固件需要XiP),下一个问题是确定需要多少性能。由于采用了高速八通道 DDR 接口,EcoXiP 的吞吐量大约是标准闪存设备的 4 倍。此外,包装并继续命令进一步提高了可实现的吞吐量。有许多问题要问:
SoC 是否包含指令缓存?(如果没有指令缓存,XiP性能将非常低;但是EcoXiP相对于Quad设备的优势将更加显着)
CPU 将以什么频率运行,SPI 总线的频率是多少?
在 XiP 中运行时需要什么级别的性能?
设备是否需要现场软件更新(通常称为无线 (OTA) 更新)?
(c)的答案至关重要。在低频和对XiP性能要求较低的情况下,直接从标准四通道SPI闪存设备执行是相当可行的。但是,即使指令缓存中的失误百分比非常小,与用完 EcoXiP 相比,从 Quad 设备执行将提供大约 50% 的 CPU 性能。
请注意,如果对 (d) 的响应是肯定的,则 EcoXiP 的边写边读功能将使 OTA 更新变得更加容易,前提是 SoC 在没有其他代码存储存储器的情况下构建(仅依赖于 XiP)。还有其他无需随写即读即可进行 OTA 更新的解决方案,但它们都是 SRAM 密集型的,需要复杂的固件。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !