M52处理器组件概览
M52处理器具有固定的和可选的组件块,内部结构如下图所示:
下表描述了M52处理器中各个组件:
注:
- 如果Cortex-M52处理被配置为包含最少的调试组件,那M52内部至少包含了ETM和ITM组件;
- 如果Cortex-M52处理被配置为reduce或full调试组件,那ETM和ITM组件是可选的;
- 如果Cortex-M52处理被配置为reduce或full调试组件,那BPU和DWT组件是固定包含在内的;
下表描述了M52内部包含功能安全和测试相关的组件
M52处理器核
M52处理器内部有与数据处理单元(Data Processing Unit,DPU)紧密耦合的指令提取单元(Insturction Fetch Uint,IFU)
DPU内部包含以下逻辑:
- 解码并执行整数指令
- 处理异常进入和退出时所需的寄存器转移操作
M52处理器核具备以下特性
- 一个有序的四级流水结构
- 两个计算逻辑单元(Arithmetic Logic Units,ALUs),一个ALU用于简单的算数运算,一个ALU用于处理移位和包括在DSP扩展中的SIMD操作
- 当M52处理器中配置了M-profile Vector Extension(MVE)时,内核只能处理一个32位负载操作
- N52处理器为哈佛总线结构(32bit位宽指令总线和32bit位宽数据总线),指令总线支持指令矢量提取能力,可以在进入异常时优化计算负载的操作时间
- 优化的整数寄存器库端口,以实现能效操作
- 支持操作数依赖的早期终止的整数除法单元。在此上下文中,早期终止是指在整数除法单元的预期周期数之前终止的操作。早期终止能力取决于进入流水线的数据
- 在大多数情况下,单周期分支延迟,无需分支预测要求
- 有限的双发射常见16位指令对
- 支持异常可继续的加载和存储多个访问
- 指令队列,以解耦指令获取和指令执行
Cortex®-M52处理器核心与扩展处理单元 (EPU) 配合工作,当配置为提供以下支持时:
- 包括在MVE中的整数和浮点运算操作
- 根据配置,支持标量半精度、单精度浮点运算操作,或半精度标量、单精度、双精度浮点运算操作
扩展组件
扩展处理单元 (EPU) 包括对 M-profile Vector Extension (MVE) 和半精度、单精度和双精度标量 FPv5 架构中所有指令的支持。
EPU 具有以下功能:
- MVE 使用 32 位算术和加载/存储数据路径在一个节拍每拍配置中实现。一个节拍是 MVE 指令的 1/4 的执行。指令可以重叠以允许充分利用逻辑,同时保持 32 位乘法累加 (MAC) 的持续带宽
- 扩展寄存器文件,用于高效矢量操作
- 浮点 MAC 单元,具有单精度或两个半精度的吞吐量。当 MVE 包含在 Cortex®-M52 处理器中时,每周期执行一次 MAC 指令。当仅配置标量浮点时,每周期执行一次单精度或半精度 MAC
- 面积优化的双精度浮点实现
- 支持安全
- 支持安全扩展,包括懒惰上下文堆栈
为了支持 Arm 定制指令 (ACIs),EPU 包括一个浮点和 MVE CDE 模块。此模块用于执行在浮点和 MVE 寄存器上工作的用户定义指令。如果可选的 EPU 不存在,则可选的浮点 CDE 模块也不存在。
存储组件
Cortex®-M52 处理器的内存组件包括内存认证单元 (MAU) 和内存系统接口,MAU模块框图如下:
Memory Authentication Unit
Memory Protection Unit
内存保护单元 (MPU) 支持 Arm® 受保护的内存系统体系结构 (PMSA)。因此,MPU 提供了可编程的内存保护支持,这些保护与特定软件可控的内存区域相关联。该单元定义了与内存区域相关的内存属性和地址区域的访问权限。内存区域可以编程为在不适当访问时生成故障,例如,由未授权的软件访问。这减少了错误编写的应用程序代码的范围。体系结构包括故障状态寄存器,允许异常处理程序确定故障的来源并采取纠正措施或通知系统。
如果实现了安全扩展,整个 MPU 逻辑可以分为安全和非安全 MPU 区域。
Security Attribute Unit
安全属性单元 (SAU) 根据核心或调试器的安全状态定义和验证对内存的访问。这些状态可以是以下任何一种:
- 非安全
- 安全和非安全可调用
- 安全
TCM Gate Unit
TCM 门控单元 (TGU) 根据访问的安全属性控制软件和 AHB TCM 访问 (TCM-AHB) 对 TCM 的访问
Interface to the IDAU
MAU 包含一个与实现定义的属性单元 (IDAU) 的接口,该单元位于核心外部,不是 Cortex®-M52 处理器的一部分。该单元将内存区域定义为安全、非安全、非安全可调用或免受安全检查。最终的内存区域安全映射是 SAU 和 IDAU 响应的组合
Memory system
M52 处理器的内存系统提供了核心与缓存、外部内存接口和内部内存映射寄存器之间的接口。
内存系统包括:
- 一个接口到指令紧密耦合内存 (ITCM) 和两个接口到数据紧密耦合内存 (DTCMs),D0TCM 和 D1TCM
- 一个可配置的主接口,可用于片上或片外内存和设备。主接口可以是 AXI 主 (M-AXI) 接口或 AHB 主 (M-AHB) 接口,具体取决于您的配置。M-AHB 由代码区域 AHB 主接口 (CODE-AHB) 和系统区域 AHB 主接口 (SYS-AHB) 组成
- 一个外围 AHB (P-AHB) 接口,用于访问外部外围设备
- 一个 AHB TCM 访问 (TCM-AHB) 接口,用于系统访问 TCMs
- 一个 L1 指令缓存
- 一个 L1 数据缓存
- 一个 L1 统一缓存(仅限于 L1 指令和数据缓存)
- 一个外部私有外围总线 (EPPB) 接口,用于 CoreSight™ 调试和跟踪组件
- 一个存储缓冲区 (STB),用于在离开加载/存储流水线并由 DPU 承诺后,保存针对主接口的存储操作。从 STB,存储可以执行以下任何操作:
- 通过 DCU 请求访问缓存 RAM
- 请求总线接口单元 (BIU) 启动行填充
- 请求 BIU 在主接口上写入数据
- 将存储数据转发到加载流水线
- 一个存储队列 (SQ),用于在离开加载/存储流水线并由 DPU 承诺后,保存针对 TCM (ITCM 和 DTCMs) 的存储操作。从 SQ,存储可以请求访问指令或数据 TCM
如果存在与同一 32 位对齐的字相关的多个存储事务,STB 可以将这些存储事务合并为一个事务
中断组件
M52 处理器中断组件负责低延迟中断处理,并使 M52 处理器能够进入并从低功耗状态唤醒
NVIC
NVIC与内核紧密集成,以实现低延迟中断处理,NVIC特性如下:
- 维护 Cortex®-M52 处理器的当前执行优先级
- 维护所有受支持异常的挂起和活动状态
- 当挂起异常具有优先级时调用抢占
- 提供唤醒信号以唤醒 Cortex®-M52 处理器从深度睡眠模式
- 为内部唤醒中断控制器 (IWIC) 和外部唤醒中断控制器 (EWIC) 提供支持
- 向其他处理器组件提供优先级和异常信息
M52 处理器中的 NVIC 允许最多 496 个异常,其中 480 个可以是常规外部中断
WIC
M52 处理器支持一个唤醒中断控制器 (WIC) 单元,该单元允许 Cortex®-M52 处理器进入低功耗状态。
支持的两个 WIC:
- 一个内部唤醒中断控制器 (IWIC),与处理器同步,并包含在 M52 处理器边界内
- 一个外部唤醒中断控制器 (EWIC),这是一个系统级组件,可以与 M52 处理器异步
M52 处理器支持以下任何一种配置:
- 无 WIC
- IWIC
- IWIC 仅
- EWIC 仅
- IWIC 和 EWIC
调试组件
M52 处理器具有可选和可配置的调试和跟踪组件
BreakPoint Unit
一个可配置的断点单元 (BPU) 用于实现断点
Data Watchpoint and Trace
一个可配置的数据监视点和跟踪 (DWT) 单元,用于实现监视点、数据跟踪和系统配置文件
Instrumentation Trace Marcocell
一个可选的仪器跟踪宏单元 (ITM),支持 printf() 风格的调试,使用仪器跟踪
Perfomance Monitoring Unit
一个性能监控单元 (PMU),使软件和调试器能够收集 Cortex®-M52 处理器上发生的事件的统计信息。这些统计信息可用于性能分析和系统调试
ROM Tables
ROM 表允许调试器确定在 M52 处理器中实现了哪些 CoreSight™ 组件
Debug and Trace interface
这些接口适用于:
- 通过跟踪端口接口单元 (TPIU) 将片上数据传递到跟踪端口分析器 (TPA),包括串行线输出 (SWO) 模式
- 集成一个调试访问端口 (DAP),这是一个用于控制调试功能的调试端口
- 集成一个 CoreSight™ 嵌入式跟踪缓冲区 (ETB),这是一个可选的许可跟踪缓冲区组件,用于将跟踪数据写入外部 SRAM
Cross Trigger Interface
交叉触发接口 (CTI) 使调试逻辑和嵌入式跟踪宏单元 (ETM) 能够与其他 CoreSight™ 组件交互
Embedded Trace Macrocell
可选的 ETM 提供仅指令跟踪功能
测试组件
M52 处理器内部的测试组件可以执行在线内存内置自测试 (MBIST) 和软件内置自测试 (SBIST)进行功能逻辑的测试
PMC-100
PMC-100 是一个可选的在线内存内置自测试 (MBIST) 控制器,用于测试 RAM、纠错码 (ECC) 逻辑和任何其他相关联的逻辑
SBIST controller
软件内置自测试 (SBIST) 控制器是一个可选组件,用于测试功能逻辑(不包括内存)