探索ARM Cortex-M7核心:为明日物联网预做准备

本技术白皮书将详细阐述Cortex-M7处理器,探讨在设计核心时面临的架构考量、以及关于配置选项的信息,同时也说明它在IoT应用中的重要性。此信息适用于希望对处理器本身有更深一步了解的人士、或有兴趣从事嵌入式系统设计和软件开发的专业人士。

ARM Cortex-M7 处理器

Cortex-M处理器系列的最新成员是Cortex-M7。这款新的核心具备可用于支持新型嵌入式技术需求的功能,它设计用于需要较高处理性能、实时响应能力和能效的应用。总体而言,Cortex-M7处理器包含下列关键特性:

• 高性能、双指令签发6级流水线,每个时钟周期最多可执行两个指令;
• 64位AXI系统总线接口;
• 可选指令缓存(4到64KB)及数据缓存(4到64KB),每种缓存内存均有可选的ECC(错误校正码)支持;
• 可选64位指令紧密耦合内存(ITCM)及可选双32位数据TCM(D{0,1}TCM),每个TMC内存阵列均支持客户ECC实现;
• 可选的低延迟AHB外设总线接口,允许在实时应用程序中对外设进行确定性的快速访问。

图1 ARM Cortex-M7 处理器

图1 ARM Cortex-M7 处理器

ARM Cortex-M7 处理器配置选项

Cortex-M7处理器的微架构与Cortex-M处理器系列中的其他核心不同。Cortex-M7的微架构具有6级超标量流水线实现,通过改善架构性能(减少每个指令周期数)和提升运行频率,大幅改善系统性能。为支持超标量设计更高的指令和数据带宽要求,其关键内存接口设计为64位宽度。AXI系统总线和单周期ITCM接口均为64位,双32位D-TCM接口可以在一个周期内处理两个32位传输或一个64位数据传输。表1总结了Cortex-M7处理器微架构中的总线,强调了新接口与前代ARM Cortex-M系列设备的对比。

在支持许多IoT应用所需的内存扩展性时,AXI主控器接口可发挥重要的功能。由于新的使用模型建立于持续收集和分析的数据基础上,因此能够利用外部内存来增加功能性显得至关重要。除了AXI主机接口外,TCM接口也提供最优的单周期接口,用于执行控制所需的实施运算。若要支持超过5 CoreMarks/MHz的处理器性能级别,高性能内存和总线接口则至关重要。

选择要在SoC中使用哪些总线以及如何加以利用时,需要考虑多个要素,其中包括:
• 哪些外设需要连接Cortex-M7处理器上的AHB外设总线,来实现低延迟访问能力?
• 哪些外设需要由DMA控制器访问?
• 需要哪些形式的访问控制和内存保护?

图2 最小微控制器

图2 最小微控制器

表1 ARM Cortex-M7总线类型和说明

表1 ARM Cortex-M7总线类型和说明

举例来说,在非常简单的设计中,内存系统可以连接至TCM接口,外设可以连接至AHB外设接口,如图2所示。这种配置使得SoC不仅能够利用Cortex-M7核心的可缩放性能,而且仍然能够应对与成本和尺寸相关的挑战。例如,通过SRAM与TCM接口的连接,可以活动支持,实现需要实时性能的控制边缘节点。

另一种配置选项是将嵌入式内存和(或)外部内存与AXI接口连接,并通过使用缓存内存来实现更高的性能。大多数微控制器应用包含许多小的控制循环,因此固件执行的缓存未命中数非常低。使用基于缓存的设计时,系统在从AXI总线系统执行程序时的确定性可能较低。不过,可以在与ITCM接口连接的SRAM中,放入异常矢量表和中断处理程序,从而实现在执行中断处理程序时的确定行为。

AXI接口和缓存的内存可扩展性、性能以及效率优势是满足应用需求的关键所在。此类配置提供与IoT应用相符的诸多优势,如支持无线固件更新和利用大型外部内存的数据存储需求。然而,并非所有应用案例都需要每个选项,所以必须要考量与成本、尺寸和功耗相关的挑战。

内存系统的设计可以提供各种各样的配置选项。需要考虑多个方面和因素,其中包括:
• 来自AXI或TCM接口的执行;
• 缓存大小(如果使用AXI);
• 嵌入式内存访问加速的方式,以及闪存的带宽;
• 可选ECC支持。

许多不同因素可以影响到决策,如嵌入式闪存的读取访问速度,时钟速度要求,以及目标应用的典型大小及其程序流行为。

如果嵌入式内存访问速度与所需的处理器速度相近,则嵌入式闪存可以和具有一些闪存访问加速的ITCM接口连接。而在其他情形中,使用带有缓存的AXI将更加合适。如果应用需要从外部内存控制器执行程序,那么内存控制器通常会与AXI接口连接,也就需要指令缓存和数据缓存的支持。在一些情形中,应用可能只需要将外部内存用于数据存储。这样的情形中不需要指令缓存。

选择缓存大小很大程度上取决于应用程序代码的属性。在嵌入式内存运行程序代码时,会同时利用指令缓存和数据缓存,因为程序映像通常会随指令一起包含文字数据、查找表或只读常量。与程序映像内部中的数据/常量相比,应用程序通常有更多指令字。随着程序大小变大,缓存要求也在提高,指令缓存大于数据缓存也不罕见。相反,一些应用程序可能有很小的控制或DSP循环,同时可能有大量的数据用作计算的系数。在此类情形中,较大的D缓存可能比较大的I缓存更对系统性能有益。

当然,进行性能优化时,也需要最大化缓存以确保较大代码和数据大小的最低延迟性。不过,通过以等同于处理器的速度运行大缓存内存,可能会根据其他因素而造成缓存查找消耗大量的功率。此外,大多数应用程序的缓存未命中率曲线随着尺寸增大而向零靠近,这意味着进一步增大缓存大小并不会提高性能。所幸的是,Cortex-M7核心的可配置性使得SoC架构师能够整合各种各样的缓存尺寸,从无缓存到最高64KB的指令缓存和64KB数据缓存。借助这样的灵活性,设计人员可以调节SoC来满足目标应用的需求。

图3 带外部内存的微控制器

图3 带外部内存的微控制器

图4 ARM Cortex-M7处理器双核锁步配置

图4 ARM Cortex-M7处理器双核锁步配置

除了架构选项外,Cortex-M7处理器上的许多其他功能也可加以配置。例如,SoC的浮点单元(FPU)功能可以配置为完全不含FPU、具有IEEE-754单精度浮点运算的FPU,或者同时支持IEEE-754单精度运算和双精度运算的FPU。

其他配置功能包括:
• 中断数、以及NVIC中的优先级别数;
• 内存保护单元(MPU)配置;
• 调试与跟踪功能;
• 功能安全性相关的功能(ECC、双核锁步)。

浮点运算硬件加速有诸多优点。显而易见,具有硬件浮点单元时浮点运算的性能可以得到加速。此外,由于硬件支持减少了执行浮点运算所需的软件库数量和相关大小,因此内存空间也得以优化。缩短处理时间并且减少内存足迹最终提高应用的能效,为执行传统上需要更多复杂嵌入式系统的功能扫清了障碍。这种优势对能效而言非常重要,因为DSP过滤器的浮点运算最高可提速20倍。同时具备单精度和双精度浮点功能选项可进一步提高新款处理器的可扩充性。

随着IoT的演讲逐步带来技术的扩充,应对嵌入式应用的安全性和完整性挑战的需求也在增长。除了与其他Cortex-M处理器相同的错误异常处理功能和内存保护单元外,Cortex-M7处理器也包含可选的TCM内存和缓存错误校正代码(ECC)支持。这可以实现自动即时更正内存中的单比特错误、以及检测双比特错误。

此外,Cortex-M7处理器也支持双核锁步配置选项。在这种配置中,核心逻辑进行两次实例化,缓存和TCM内存阵列则是共享的。这是因为它们可以通过ECC加以保护,其硅面积成本能大幅降低(见图4),实现非常强健的容错系统设计。

飞思卡尔Kinetis KV5x MCU系列的实现

Cortex-M7处理器的一个实现选择示例是飞思卡尔最新发布的Kinetis KV5x MCU系列,这一可扩充的MCU产品系列定位是面向电机控制和数字功率转换应用。在这一SoC中,Cortex-M7处理器选择的部分配置选项包括整合16KB指令缓存和8KB数据缓存。此SoC将64位AXI总线用作嵌入式闪存存储器的访问端口。指令缓存和数据缓存确保驻留于嵌入式内存中的控制软件得以加速,支持所连的工业级控制用例所需的性能级别。除了缓存之外,Kinetis KV5x MCU系列还集成了64KB与ITCM接口连接的SRAM、以及128KB与DTCM接口连接的SRAM。这可提供必要的处理器本地存储,以延迟性最低的内存支持实时控制运算。

图5 Kinetis KV5x MCU系列框图

图5 Kinetis KV5x MCU系列框图

Kinetis KV5x MCU配置仅仅是一个示例,说明了如何构建SoC以应对关注于联网控制的特定应用。随着时间推移、以及互连应用数量和多样性的增加,未来必定会出现对SoC设计的调节,从而在Cortex-M7处理器上进行更广泛范围的配置。性能水平与可比较的Cortex-M4解决方案相比将可达到两倍以上的提高,这将为嵌入式领域实现更多的创新。凭借其可扩充性、性能和可扩展功能,可调节型Cortex-M7核心将在支持“明日物联网”的舞台中扮演重要的角色。

来源:飞思卡尔MCU