ARM架构

ARM官网: https://www.arm.com/

arm无处不在,从传感器到智能手机,再到服务器,2500多亿芯片无处不在

arm是全球领先的处理器ip技术提供商,满足每种设备的新能,功耗和成本

Arm CPUs and NPUs 包括Cortex-A, Cortex-M, Cortex-R, Neoverse, Ethos and SecurCore.

image-20230927123855981

以下是对ARM CPU和NPU归纳 除Ethos外其他都属于CPU

image-20230927125615294

常见的嵌入式开发使用最多的应属于 Contex-A系列与Contex-M系列了

Contex-A处理器主要应用于高端系列,多用于嵌入式Linux

Contex-M处理器主要应用于中低端,多用裸机开发与实时操作系统的应用

各系列具体分类:https://www.arm.com/products/silicon-ip-cpu

我们从 Contex-M控制器入手来简单认识ARM架构

Contex-M系列处理器比较表https://developer.arm.com/documentation/102787/latest/

该表包括了所有Contex-M系具体分类以及所支持的功能

image-20230927131408831

以ContexM7系列为例

地址:https://www.arm.com/products/silicon-ip-cpu/cortex-m/cortex-m7

从该页面我们可下载 技术参考手册以及处理器数据表以及获得开发人员参考资料

image-20230927132159262

image-20230927132924477

ARM Cortex-M7处理器是Cortex-M系列中性能最高的处理器,它被设计用于满足成本敏感和功耗受限的解决方案的需求,适用于广泛的设备。以下是该处理器的一些关键特性和应用:

关键特性:

  • 高性能:Cortex-M7是Cortex-M系列中性能最高的成员。
  • 高能效:特别适合混合信号设备,能够在保持高性能的同时实现低能耗。
  • DSP能力:具有数字信号处理(DSP)能力,适合处理复杂的数学运算。
  • 灵活的系统接口:提供了灵活的系统接口,以支持各种应用需求。

应用领域:

  • 汽车应用:适用于各种汽车电子系统。
  • 医疗应用:适用于各种医疗设备和仪器。
  • 传感器融合:适用于传感器数据的处理和融合。
  • 物联网(IoT):适用于各种物联网设备和应用。

使用场景:

Cortex-M7的高性能和灵活性使其适合用于从汽车和医疗应用到传感器融合和物联网的各种应用中。

规范:Cortex-M7使合作伙伴能够构建最复杂的各种mcu和嵌入式soc。其行业领先的高性能和灵活的系统接口是各种应用领域的理想选择,包括汽车,工业自动化,医疗设备,高端音频,图像和语音处理,传感器融合和电机控制。

image-20230927133212915

以上的结构图就是要学习的重点部分ARM架构(很多是简写)

Arm Cortex-M7 Processor Datasheet: https://developer.arm.com/documentation/102838/latest/

Arm Cortex-M7 Processor Technical Reference Manual r1p2 :https://developer.arm.com/documentation/ddi0489/f/introduction

Datasheet中对以上框图做了更详细的介绍,结合以上的框图深入了解一下

image-20230927164900057

ITCM(Instruction Tightly-Coupled Memory) 指令紧耦合存储器

ITCM是专门用于 存储指令 的内存区域,由于与处理器紧密耦合,ITCM能够提供低延迟的指令访问,适合存储性能关键的代码段,以实现更快的执行速度。ITCM通常用于存储实时任务、中断服务例程和性能关键的代码段。

DTCM(Data Tightly-Coupled Memory)数据紧耦合存储器

DTCM专门用于 存储数据 的内存区域。由于与处理器紧密耦合,DTCM能够提供低延迟的数据访问。适合存储需要快速访问的数据,例如变量和数组。DTCM通常用于存储实时任务的数据、快速缓存和性能关键的数据结构。

  • ITCM支持64位的指令 以及最大16M的指令存储器
  • DTCM支持2*32位的指令 以及最大的16M的数据存储器

image-20230927170329457

哈佛结构

ITCMDTCM 的设计与哈佛结构有关,其中指令存储器和数据存储器是分开的,有各自独立的地址空间和数据总线。这与冯·诺依曼结构形成对比,后者使用单一的存储器来存储指令和数据。

  • ITCM:由于是专门用于存储指令的内存区域,与哈佛架构中的指令存储器相对应。
  • DTCM:由于是专门用于存储数据的内存区域,与哈佛架构中的数据存储器相对应。

哈佛架构允许指令和数据并行访问,这可以提高处理器的性能。同样,ITCM和DTCM通过提供与处理器紧密耦合的、低延迟的存储区域,可以实现更快的指令执行和数据访问,从而优化系统性能。

在STM32等嵌入式系统中,利用哈佛架构的这些优势可以帮助实现实时性要求更为严格的应用,例如实时控制和数字信号处理。

NVIC(Nested Vectored Interrupt Controller)嵌套向量中断控制器

image-20230927173139308

它是ARM Cortex-M系列微控制器的一部分,负责管理和处理中断和异常。NVIC提供了一种高效的方式来管理多个中断源,并允许更高优先级的中断能够打断正在执行的低优先级中断,从而实现中断的嵌套处理。

image-20230927173733588

为什么要设计嵌套向量中断控制器?

引用ARM处理器技术参考手册的回答

image-20230927172437390

  • 促进低延迟异常和中断处理
  • 控制电源管理

如何理解:中断允许处理器快速响应系统内外的事件,这对于实时系统和需要快速响应的应用至关重要。通过中断,处理器可以立即对异常情况或外部事件(如用户输入、外设状态变化等)作出响应,并执行相应的处理程序。

在没有任务执行时,处理器可以进入低功耗模式,等待中断事件的发生。当中断发生时,处理器被唤醒,处理中断,然后返回低功耗模式。这有助于节省能源,特别是在电池供电的设备中。中断机制允许系统根据当前的工作负载和任务需求动态调整功耗,例如,通过调整处理器的工作频率和电压。

总结: 中断机制提供了一种方式,使得处理器能够在事件发生时迅速作出响应,而不是通过轮询的方式不断检查事件的状态,这大大提高了系统的实时性和响应速度。中断还支持更为高效的能源管理,允许处理器在无需执行任务时进入低功耗状态,从而延长电池寿命并减少能源消耗。

WIC (Wake-up Interrupt Controller)唤醒中断控制器

WIC是一种中断控制器,它主要用于管理和控制在低功耗模式下,如睡眠模式或深度睡眠模式,用于唤醒处理器的中断。当系统处于低功耗模式时,WIC能够监控外部中断源,并在检测到唤醒事件时唤醒处理器,使其退出低功耗模式并开始执行代码。这使得系统能够在保持低功耗的同时,快速响应外部事件。

image-20230927173318046

FPU( Floating Point Unit)浮点单元

FPU是一种专门的硬件单元,专为执行浮点运算而设计。它包含了执行浮点加法、减法、乘法、除法和其他数学运算所需的所有逻辑和资源。由于是硬件实现,FPU可以并行执行多个操作,从而大大加速浮点运算。

image-20230927175443179

image-20230927175421583

image-20230927175229824

MPU( Memory Protection Unit)内存保护单元

MPU 是一种硬件单元,用于在嵌入式系统中提供内存保护功能。它允许开发者定义内存区域的访问权限,例如读、写和执行权限,并可以配置权限以限制特定任务或处理器模式对内存区域的访问。这有助于防止不正确的内存访问,提高系统的稳定性和安全性。

防止非法访问

  • 作用:MPU可以配置特定的内存区域,限制其访问权限,防止非法读写或执行。
  • 实例:如果一个任务只需要读取某个内存区域的数据,MPU可以配置该区域为只读,防止该任务意外或恶意地修改内存内容。

2. 隔离任务

  • 作用:在多任务环境中,MPU可以用于隔离不同任务的内存空间,防止一个任务访问其他任务的内存。
  • 实例:在实时操作系统中,MPU可以保护任务的堆栈区域,防止其他任务或中断服务例程覆盖堆栈内容。

3. 保护系统资源

  • 作用:MPU可以保护关键的系统资源,如内核数据结构和设备寄存器,防止非法访问和修改。
  • 实例:MPU可以配置为禁止用户态任务直接访问硬件寄存器,确保只有内核态代码可以访问这些资源。

4. 检测和响应

  • 作用:当检测到非法内存访问时,MPU可以生成异常,允许系统采取适当的响应措施。
  • 实例:如果一个任务试图写入一个只读区域,MPU可以触发一个异常,操作系统可以选择终止该任务或采取其他恢复措施。

5. 动态权限管理

  • 作用:MPU的配置可以在运行时动态修改,允许系统根据需要调整内存访问权限。
  • 实例:在任务切换时,操作系统可以重新配置MPU,以适应新任务的内存访问需求。

示例:

假设有一个嵌入式系统,运行着一个实时操作系统,该系统有两个任务:任务A和任务B。任务A负责处理用户输入,任务B负责控制硬件设备。

  • 任务隔离

    • MPU可以配置为给任务A和任务B各自的内存区域,防止它们相互干扰。例如,任务A无法访问任务B的堆栈,反之亦然。
  • 保护硬件设备

    • MPU可以配置为禁止任务A直接访问硬件设备的寄存器,确保只有任务B可以控制硬件设备。
  • 异常处理

    • 如果任务A试图访问任务B的内存或硬件寄存器,MPU会触发一个异常,操作系统可以终止任务A并记录错误信息。

通过这些机制,MPU有助于提高嵌入式系统的可靠性和安全性,防止软件缺陷和恶意攻击导致的非法内存访问。

image-20230927184805695

I Cache指令缓存 、D Cache 数据缓存

I-Cache(Instruction Cache)和D-Cache(Data Cache)是计算机中用于提高CPU访问速度的两种不同类型的缓存。它们分别用于存储指令和数据,以减少CPU从主内存中获取这些信息所需的时间。

I-Cache用于存储CPU即将执行的指令。当CPU需要执行指令时,它首先会在I-Cache中查找这些指令。如果找到(Cache Hit),CPU可以直接从I-Cache中获取并执行这些指令,而无需访问较慢的主内存。

如果在I-Cache中未找到指令(Cache Miss),CPU必须从主内存中获取这些指令,并将它们存储在I-Cache中以供后续使用。

目的

  • 减少CPU获取指令的延迟。
  • 提高指令的访问速度,从而提高程序的执行效率。

D-Cache用于存储CPU即将访问的数据。当CPU需要读取或写入数据时,它首先会在D-Cache中查找这些数据。如果找到(Cache Hit),CPU可以直接从D-Cache中读取或写入数据,而无需访问较慢的主内存。

如果在D-Cache中未找到数据(Cache Miss),CPU必须从主内存中读取数据,并将其存储在D-Cache中以供后续使用。对于写操作,根据缓存策略,数据可能会被写回主内存。

目的

  • 减少CPU访问数据的延迟。
  • 提高数据的访问速度,从而提高程序的执行效率。

举例:

  • 当一个程序正在运行时,CPU会不断地执行指令并访问数据。如果没有I-Cache和D-Cache,CPU将不得不直接从主内存中获取指令和数据,这会导致较高的访问延迟,从而降低系统性能。
  • 通过使用I-Cache和D-Cache,CPU可以快速访问经常使用的指令和数据,大大减少了访问延迟,提高了系统性能。

总结:

I-Cache和D-Cache是为了优化CPU的性能而设计的,它们分别缓存了指令和数据,使得CPU可以更快地访问这些信息,从而提高了整体的系统性能。

AXI (Advanced eXtensible Interface)高级可扩展接口

这是一种由ARM公司定义的高性能、高频率的系统总线接口标准。AXI是AMBA(Advanced Microcontroller Bus Architecture)规范的一部分,AMBA是一种用于连接嵌入式微控制器(如STM32)中的不同组件(如CPU、内存控制器、外设等)的开放标准。

AXI的特点:

  1. 高性能:AXI设计用于高速数据传输,支持多个独立的读和写事务。
  2. 并发:AXI允许多个事务同时发生在总线上,支持并发和流水线操作。
  3. 突发传输:AXI支持突发传输,允许连续多个数据字在一个事务中传输。
  4. 分离的读写通道:AXI有独立的读和写通道,允许读写操作同时进行。
  5. 可扩展性:AXI接口可以扩展以适应不同的系统需求和配置。

STM32中的AXI:

在STM32微控制器中,AXI接口通常用于连接高速组件,如:

image-20230927190757161

AHB (Advanced High-performance Bus)高性能总线

AHB的特性:

  1. 高性能:AHB设计用于高性能模块之间的连接,支持高数据吞吐量。
  2. 突发传输:支持突发传输模式,允许在一个事务中连续传输多个数据,提高数据传输效率。
  3. 单周期访问:支持单周期访问,允许在一个时钟周期内完成数据读写。
  4. 流水线:支持流水线操作,允许同时进行多个事务,提高总线利用率。

STM32中的AHB:

image-20230927191225670

ECC( Error-Correcting Code)错误纠正码

ECC 是一种用于数据存储和传输中检测并纠正错误的技术。ECC 能够检测并自动纠正存储或传输过程中发生的一位或多位错误,从而提高了数据的可靠性和完整性。

ECC 的工作原理:

  1. 编码:在数据被存储或发送之前,会生成一些额外的校验位(ECC位)。这些校验位是基于原始数据计算得出的,通常使用一些特定的算法,如汉明码。
  2. 存储/传输:数据和对应的ECC位一起被存储或传输。
  3. 解码:在数据被读取或接收时,系统会使用存储或接收到的ECC位来检查数据是否发生了错误。如果检测到错误,且错误在可纠正的范围内,系统会自动纠正这些错误。

ECC 的应用:

ECC 主要应用于需要高可靠性和数据完整性的场合,例如:

  1. 内存:ECC 常用于服务器和关键任务计算机的 RAM,以纠正由于噪声、干扰、辐射等原因引起的数据错误。
  2. 存储设备:一些 SSD 和硬盘驱动器使用 ECC 来纠正读取数据时可能发生的错误。
  3. 通信:在无线通信和网络传输中,ECC 用于纠正传输过程中由于干扰和噪声引起的数据错误。
  4. 数据传输:在某些数据传输协议中,也会使用 ECC 来确保数据的完整性。

ECC 的优点:

  • 提高可靠性:能够自动检测并纠正错误,提高系统的可靠性和稳定性。
  • 增强数据完整性:通过纠正错误,确保数据的完整性和准确性。

ECC 的缺点:

  • 增加开销:需要额外的存储空间来存储 ECC 位,增加了存储和传输的开销。
  • 性能影响:计算 ECC 位和进行错误检测和纠正会占用一定的处理时间,可能会对性能产生一定影响。

总之,ECC 是一种重要的技术,用于保护数据不受错误的影响,特别是在高可靠性和数据完整性至关重要的应用中。

如果觉得我的文章对你有用,请随意赞赏