ARM_CORE 梳理--ARM系列

一、ARM 系列core概述

ARM分为三个不同的系列:
1、Cortex-A:面向尖端的基于虚拟内存的操作系统和用户应用
2、Cortex-R:针对实时系统,一般用于车规级芯片
3、Cortex-M:微控制器,替代对应的51单片机

Cortex-A Cortex-R Cortex-M
运用场景 高性能 高实时性 低功耗/低面积
操作系统 Linux/Rich OS RTOS RTOS
指令级 32/64b ARM 32b ARM 32b Thumb
中断 GIC GIC(固定延时的中断响应) NVIC
Memory 多级cache L1 cache and TCM TCM
安全等级 ASIL-B ASIL-D ASIL-D

本文章主要描述R和系列。Arm的R系列专门为严格的实时性设计,实时性主要体现在2方面:

  • memory系统的设计:采用MPU保护机制,相比于A系列的MMU会通过读写数据的实时性
  • 对中断的响应:R核的设计对应中断处理为确定的几十ns的中断响应时间,其原因是R核中设计了core的私有memory
    TCM,中断处理函数可以直接快速运行。

R核在功能安全上可支持到Asilb-D,在安全上的设计为锁步、MPU、内存ECC,总线ECC,在线MBIST、LBIST等功能。

二、ARM核R52概述

1.R52 feature

ARM_CORE 梳理--ARM系列_第1张图片

如图为R52架构图,内部包括GIC、MPU、Generic Timer、debug and trace 模块等,R52支持以下特性:
1、支持最大4个core,支持分支预测功能
2、支持ECC 对于L1 cache 和TCM RAM(64K,512K,128K)
3、针对AXIM,AIXS,LLPP,FLASH interface 进行保护
4、支持armv8-R架构
5、ETM 用于指令和数据的trace功能
6、支持GIC功能(support 32-960 spi的中断)
7、支持CTI multiprocessor debugging 、PMU和Mbist功能(可以在boot前和boot后间隔检测)

2.Generic Timer模块

(参考:architecture - Generic Timer v1.2)
作用:用于给soc中所有core提供公共的时间戳(system counter),用于记录时间的流逝,不会记录日期等信息,在arm架构中一般只需要保证所有的core在SMP的模式下,对于不同的os系统可以不一致
架构图:
ARM_CORE 梳理--ARM系列_第2张图片
1)generic Timer由System Counter和per-core timer组成.(这种架构的设计在于考虑功耗,其工作在不同的power domian,一般架构设计中core可以实现shutdown,而System Counter会在allways on domain 域)
2)system counter 一般为1MHz-50Mhz,64bit的计数器
3)每个core中有一系列的timer,分布如下:
ARM_CORE 梳理--ARM系列_第3张图片
ARM_CORE 梳理--ARM系列_第4张图片
图中CNTCKLEN需要和core中的clk同步,CNTVALUEB 为64bit的计数器,
R52中的timer:
• An EL1 physical timer.
• An EL2 physical timer.
• A virtual timer.
寄存器介绍:
CNTFRQ: 读取system counter 频率寄存器
CNTPCT: 读取system counter计数器的值

        asm ("MRC p15, 0, r0, c0, c0, 0;"      // 读取CNTFRQ 保存到r0寄存器    
        "mov %0, r0;"                          // r0
        : "=r"(count_cnt)                      // 输出r0到count_cnt
        : );
        printf("CNTFRQ  num = %d \n",count_cnt);
    asm ("MRRC p15, 0, r0, r1, c14;"      // 读取CNTPCT保存到r0寄存器  
    "mov %0, r0;"                         // r0
    : "=r"(count_cnt)                     // 输出r0到count_cnt
    : );
    printf("CNTPCT num = %d \n",count_cnt);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3.异常模型

待更新~

4.GIC

GICv3中,为什么选择将cpu interface,从gic中抽离,实现在core内部?
1、为了提高效率,因为一般对于core对中断响应的处理一般的寄存器都在cpu interface内部
GIC模块的介绍可以详看GIC模块–ARM系列

5.MPU 模型

MPU(Memory Protection Unit)提供了内存保护和访问控制的功能,用于实现操作系统的内存隔离和保护。
R52中包括2块MPU,分别为EL1和EL2,地址控制范围为4G,EL1-controlled MPU可以配置16,20,24个region,EL2-controlled MPU可以配置0,16,20,24个region。MPU的region范围:PRBAR.BASE:0b000000 <= address <= PRLAR.LIMIT:0b111111,在MPU可以对不同的region配置以下的属性:

  • SH[1:0]:Normal memory的sharebility属性,Non-shareable/Outer Shareable/Inner Shareable
  • AP[2:1]:配置数据的读写权限
  • XN:配置region是否可以执行
  • AttrIndx[2:0]:通过index来选择配置对应的memory和cachebility的属性
    ARM_CORE 梳理--ARM系列_第5张图片
    在region的属性被配置完成后,会根据属性和异常等级l来决定访问的特权模式,如表格所示。
    ARM_CORE 梳理--ARM系列_第6张图片
    在没有配置MPU时,会有defalut属性,如表格所示为EL2_MPU的默认属性,相关的属性解释可以参考memory的定义-arm系列

6.Power Management

R52提供了减少动态和静态功耗的feature

  • 内部实现自动的clock gating,减少动态功耗
  • 使用WFI和WFE状态进入cpu idle,内部实现对每个core的clock gating,power up状态减少动态功耗
  • cluster内设计了不同的power domian,实现对单core的power gating,降低静态功耗

ARM_CORE 梳理--ARM系列_第7张图片
cluster内部有2个power domain ,PDCPUx 和 PDTOP
PDTOP 包括:
• GIC distributor, Debug APB slave, CTM, and CTIs.
• AXIS interface.
• MBIST logic.
• Timers.
PDCPU 包括:
• Core x.
• L1 instruction and cache RAMs and TCM RAMs.
• Core-level debug logic.
• ETM logic.
R52内部上下电流程:
下电流程:
1.将需要保存的处理器状态或数据保存到不会断电的存储器中
2.关闭ICC_IGRPEN0和ICC_IGRPEN1的中断使能,设置GIC
distributor中对该core的wake-up request(通过GICR_WAKER 寄存器.
3.执行ISB指令,保证前两步的操作均完成
4.配置SOC中关于本core的power control寄存器
5.执行WFI指令
在上述步骤4中的寄存器被在配置后,PMU将执行以下操作:
1.等待COREPACTIVEx[1]变为0.
2.通过LPI发出使core进入SHUTDOWN状态的request.

  • 如果LPI的request成功(具体协议参照reference 1),则可以将该core断电
    上电流程:
  • 将 nCPUPORESETx 和 nCORERESETx 置低。
  • 恢复供电
  • 向 LPI 发出运行状态请求。该请求在复位前被接受。
  • 释放 nCPUPORESETx 和 nCORERESETx。

7.Debug系统

8.reset

ARM_CORE 梳理--ARM系列_第8张图片
如图为ARMv8-a架构中描述的reset复位控制的作用域,在r52中存在corereset/cpuoreset/topreset/presetdbg/mbistreset

  • corereset:为warm reset,会影响core内部相关的逻辑和功能
  • cpuoreset:为cold reset,会影响core内部的功能和内部debug模块
  • topreset:axi slave模块和GIC模块
  • presetdbg:影响core 外部的debug模块
  • mbistreset:影响dft的mbist
    ARM_CORE 梳理--ARM系列_第9张图片
    如图为复位场景及对应的reset信号,对应的场景有Powerup/Core Powerup/Core warm/Debug/MBIST。另外在同步复位和解复位时,对应复位没有顺序要求

总结

该文章主要概述ARM-R系列中的R52,主要包括内部的不同特性。

你可能感兴趣的:(CPU及处理器,arm系列介绍)