ARM Cortex R52内核 01 Introduction
1.1 Cortex®-R52介绍
Cortex-R52处理器是一种中等性能、有序、超标量处理器,主要用于汽车和工业应用。它还适用于各种其他嵌入式应用,如通信和存储设备。
Cortex-R52处理器具有一到四个核心,每个核心实现一个单一的Armv8-R AArch32兼容处理单元processing element (PE)。在Cortex-R52上下文中,PE和核心在概念上是相同的。
多个受保护的内存系统架构Protected Memory System Architecture(PMSA)上下文可以使用虚拟化技术在同一核心上执行。处理器允许包含不同上下文的实时性能,这防止了一个上下文影响更关键上下文的响应时间和确定性。处理器可以为双核锁步Dual-Core Lock-Step(DCLS)操作拥有逻辑和比较器实例的冗余副本。
下图显示了一个Cortex-R52处理器系统的示例。
1.1.1 特点
Cortex-R52处理器的主要特点包括:
-
最多四个核心,每个核心都有一个八级有序的超标量流水线,具有分支预测
-
对于实例化的RAM和连接的闪存,可以使用双重错误检测Double Error Detect (DED)或单错误纠正双重错误检测Single Error Correct Double Error Detect (SECDED)保护。实例化的RAM包括:
- 指令缓存标签和数据RAM
- 数据缓存标签和数据RAM
- 紧密耦合存储器Tightly Coupled Memories(TCM)
-
可选总线保护主要main AXI Master(AXIM)接口,AXI Slave (AXIS)接口,低延迟外设端口Low-latency Peripheral Port (LLPP)接口,和Flash接口:
- 可选的数据,地址,控制和响应有效载荷的信号完整性保护,以及 握手信号
- 可选的互连保护
-
错误报告接口
-
电源管理
-
Armv8-R AArch32 Debug提供硬件断点和观察点,自托管和外部调试。它还支持调试目标和主机之间的通信。Aarch32概要的Armv8-R Debug基于Armv8.0 Debug架构
-
用于指令和数据跟踪的嵌入式跟踪宏单元Embedded Trace Macrocell(ETM)
-
用于仿真和校准的内存重构端口Memory Reconstruction Port (MRP)
-
基于PMUv3架构的性能监控单元Performance Monitoring Unit (PMU)支持
-
用于多处理器调试的交叉触发接口Cross Trigger Interface (CTI)
-
集成的、快速响应的通用中断控制器Generic Interrupt Controller (GIC)和虚拟化
-
用于在引导时间和引导时间后预定时间间隔测试内存的在线内存内置自测试Memory Built-In Self Test (MBIST)接口
1.1.2 接口 Interface
Cortex-R52处理器有几个外部接口。
下图显示了Cortex-R52处理器的外部接口。箭头指示每个接口中的信号方向。
1.1.3 配置选项Configuration options
Cortex-R52处理器具有一些选项,您可以在实现和集成阶段进行配置,以满足您的功能需求。
下表显示了处理器的可配置选项。
Processor configurations
Cortex-R52处理器可以配置为实现DCLS和Split-Lock配置。
DCLS(Dual-Core Lock-Step)
在DCLS配置中,每个核心的大部分核心逻辑都有一个第二个冗余副本, 以及共享逻辑的一个冗余副本。
冗余逻辑由与功能逻辑相同的输入驱动。特别是,冗余核心逻辑与功能核心共享相同的缓存RAM和TCM。因此,只需要一套缓存RAM和TCM。冗余逻辑与核心锁步操作,但不会以任何方式直接影响处理器的行为。处理器输出到系统的其余部分以及核心输出到缓存RAM和TCM都由功能核心驱动。 在实现过程中,可以包括比较器逻辑来比较冗余逻辑和功能逻辑的输出。这些比较器可以检测出由于辐射或电路故障而发生在任一逻辑集上的单个故障。当与RAM错误检测方案一起使用时,可以保护系统免受故障。
如果您正在实现DCLS配置,请联系Arm获取更多信息。
Split-Lock
在分区锁定配置中,每个核心必须有两个或四个完整的冗余副本。下表显示了在锁定模式和分区模式下核心的使用情况。 在下表中:
- N是物理核心的数量。
- LOCK_N是锁定模式下使用的核心数量。
- SPLIT_N是分区模式下使用的核心数量。
在锁定模式下,高阶核心作为低阶核心的冗余副本。例如,如果N是4,只有低阶核心在逻辑上存在,即核心0和核心1。核心2和核心3是高阶核心,它们在逻辑上不存在,但作为冗余副本。 虽然存在,但属于高阶核心的输入和输出、缓存RAM和TCM是禁用的,并且在锁定模式下不得使用。
在分裂模式下,与选定的物理核心数量相关联的所有接口、缓存RAM和TCM都存在并启用,但无法进行冗余检查。
与DCLS类似,可以在锁定模式操作期间包括比较器逻辑来比较冗余逻辑和功能逻辑的输出。分裂模式操作禁用比较器逻辑。 对于分裂锁,必须设置一个新的输入信号CFGSLSPLIT,以确定是否配置了分裂模式或锁定模式。
如果选择了锁定模式,除了CFGSLSPLIT外,必须驱动所有的DCLS信号。如果选择了分裂模式,除了CFGSLSPLIT外,只必须驱动CLKINDCLS。有关DCLS信号的更多信息,请参阅Appx-A-589页的A.15 DCLS信号。如果你正在实现一个分区锁配置,请联系 Arm 以获取更多信息。
1.2 组件模块 Component blocks
下图显示了双核配置中处理器的主要组件块。
1.2.1 Instruction Fetch 指令获取
预取单元 Prefetch Unit (PFU)从指令缓存、TCM或外部存储器中获取指令,预测指令流中分支的结果,并将指令传递给数据处理单元Data Processing Unit (DPU)进行处理。
PFU每周期从内存中取64位。
Cortex-R52 处理器中的指令取出总是小端的。
取出和解码阶段之间的指令队列将指令执行与指令取出解耦。这允许在取出阶段由于预测分支而刷新时继续执行指令。
Cortex-R52分支预测机制在流水线早期阶段检测分支。此外,它们立即将指令重定向到适当的地址,而不是等待分支到达流水线的末端。然而,并不是所有的分支都以这种方式预测。
Branch Target Address Cache 分支目标地址缓存
PFU包含一个16条目分支目标地址缓存Branch Target Address Cache (BTAC)来预测间接分支的目标地址(除了子例程返回)。BTAC实现在架构上是透明的,所以它不需要在上下文切换时刷新。
Branch predictor 分支预测
分支预测器是一个全局类型,它使用分支历史寄存器和一个2048条模式历史预测表。
Return stack 返回堆栈
PFU包含一个8条调用返回栈,以加速子例程调用的返回。对于每个子例程调用,返回地址被推送到硬件栈上。当一个子例程返回被识别时,返回栈中的地址被弹出,PFU将其用作预测的返回地址。返回栈在架构上是透明的,因此它不必在上下文切换时刷新。
Exception Target Address Cache 异常目标地址缓存
异常目标地址缓存Exception Target Address Cache (ETAC)是一种结构,用于通过缓存这些异常的通用处理程序的地址来减少IRQ和FIQ异常的最佳情况下的延迟。
ETAC在重置状态下启用。将1写入系统寄存器CPUACTLR.ETACDIS,禁用ETAC。
ETAC只支持中断Interrupt (IRQ)和快速中断Fast Interrupt (FIQ)向量项的缓存。
其他类型的异常不分配到ETAC中。这是因为对IRQ和FIQ异常的快速响应在实时系统中是至关重要的。
如果向量在TCM中,则向量只被缓存在ETAC中。位于任何其他类型的内存中的向量永远不会分配或命中ETAC。这是因为TCM是唯一具有完美响应的内存。其他内存可能会受到缓存失败的影响,在这些情况下,与缓存失败的延迟相比,ETAC提供的节省是最小的。
如果向量表中的指令是兼容指令,则ETAC只缓存与IRQ或FIQ异常对应的向量。兼容指令是所有B#immed的编码。如果异常向量不是一个兼容指令,则ETAC不会缓存该向量。这个IRQ和FIQ异常可以被带到异常级别EL1或EL2,这取决于中断时的异常级别以及HCR.IMO和HCR.FMO的值。
ETAC独立地支持IRQ和FIQ异常带到EL1和EL2,这意味着对于这些情况,有四个独立的条目。
1.2.2 高级SIMD和浮点支持 Advanced SIMD and floating-point support
每个核心支持的高级SIMD和浮点使用NEONTM技术,一种SIMD架构。
高级SIMD和浮点功能提供:
- 单精度(C programming language float type)数据处理操作的指令。
- 双精度(C double type)数据处理操作的可选指令。
- 组合乘法和累加指令以提高精度(Fused MAC)。
- 硬件支持转换,加法,减法,乘法,可选累加,除法和平方根。
- 硬件支持超常量和所有IEEE标准754-2008四舍五入模式。
- 对于单精度浮点,有32个32位单精度寄存器或16个64位双精度寄存器。
- 如果包括双精度和高级SIMD的可选指令,则总共有32个64位双精度寄存器或16个128位寄存器可用。
1.2.3 GIC Distributor
GIC Distributor接收、优先级和路由物理中断到适当的中断目标。
GIC Distributor的输出是每个中断目标的最高优先级挂起的中断。中断目标要么是核心的 GIC CPU 接口,要么是连接到外部设备(如直接内存访问Direct Memory Access (DMA)控制器)的输出端口。
1.2.4 GIC CPU interface
GIC CPU接口处理每个核心的物理和虚拟中断的中断抢占。
每个GIC CPU接口的虚拟部分被分为hypervisor寄存器和guest OS寄存器。 hypervisor使用GIC CPU接口生成到guest OS的中断。
1.2.5 Memory system
Cortex-R52内存系统提供不同的内存和接口,这取决于你的实现。
为了在没有强烈实时要求的上下文中使用,每个Cortex-R52内核都有一个专用的128位AXIM接口,用于内存、指令和数据以及外设访问。
此外,为了在实时上下文中使用,每个Cortex-R52内核可以有:
- 三个统一的TCM,每个8KB-1MB提供最低延迟访问指令和数据。
- 可选,32位AXI4 LLPP接口设备数据访问专用外设。
- 128位只读Flash接口。
- ECC保护所有TCM和闪存提供SECDED保护。
- TCM访问DMA通过AXIS接口。
- TCM测试使用MBIST接口。
备注:实时上下文也能够访问AXIM,尽管这种访问可能不是理想的, 这取决于系统设计。
每个Cortex-R52内核都有可选的哈佛缓存,可以用来缓存来自Flash接口和AXIM接口的数据。缓存行为取决于内存属性。
每个内核有:
- 存储缓冲区,用于存储合并和转发(适当)。
- 4路指令缓存,4-32KB。 • 指令行填充缓冲区。
- 4路数据缓存,4-32KB,具有写入行为。
- 数据读取缓冲区。
- 所有缓存内存(包括标签RAM)的ECC保护。
- 64位数据路径用于加载和存储缓存。
- 根据ARM架构进行缓存维护操作。
- 使用MBIST接口进行缓存内存测试。
1.2.6 Memory management
内存保护单元 Memory Protection Unit (MPU)决定每个内存位置的属性,包括权限、类型和缓存能力。提供了两个可编程的MPU,分别由EL1和EL2控制。
访问权限决定允许访问一个位置的特权级别,以及是否允许写访问或指令执行。内存类型和缓存能力影响处理器处理特定访问的方式,例如,如果处理器允许将两个存储合并为单个写访问。这些属性及其含义由ARM架构定义。
1.2.7 Debug, trace, and test
处理器具有制造测试设施,处理器中的每个核心都具有侵入式调试和非侵入式调试功能,以支持软件调试。
侵入式调试功能包括硬件异常捕获、断点和观察点、通过调试通信通道的数据传输和单步调试。侵入式调试模式是自承载(或监视)调试和外部(或停止)调试。侵入式调试影响处理器的性能,尽管如果时间允许,您可以安排自承载调试。
非侵入式调试功能包括跟踪指令执行和跟踪数据传输。每个核心都有自己的ETM,允许所有核心在可用的跟踪带宽下同时跟踪。跟踪信息在ATB跟踪总线上导出,可以连接到CoreSight系统,用于组合跟踪源、缓冲和导出它们。
处理器包括PMU,可以生成和计数在核心中发生的事件,如缓存线填充、流水线停顿和ECC错误。这些事件也可以适当地导出供外部硬件使用。
制造测试包括MBIST。
1.3 Interfaces接口
Cortex-R52处理器具有几个外部接口。
1.3.1 Advanced Microcontroller Bus Architecture (AMBA) interfaces 高级微控制器总线体系结构接口
处理器实现了以下 AMBA 接口。
AXIM
Cortex-R52处理器的每个核心都具有一个128位AXIM接口,可高效地访问外部存储器和外设。
AXIS
Cortex-R52处理器中的每个核心都连接到一个共同的128位AXIS接口。这提供了对TCMs的外部访问。AXIS接口支持外部控制器与内部存储器之间的DMA访问。
Advanced Peripheral Bus (APB) Debug interface
AMBA APBv3接口用于调试目的。
LLPP
Cortex-R52处理器中的每个核心都有一个专用的32位LLPP主接口。这些端口旨在用于需要低延迟访问的私有外设。
1.3.2 Flash interface
Cortex-R52处理器中的每个核心都有一个专用的128位只读Flash主接口,可以用作AXI4接口。该接口旨在为连接到处理器上的闪存提供低延迟访问,使处理器能够从闪存ROM中执行实时任务并进行缓存。
1.3.3 Memory Reconstruction Port
Cortex-R52处理器的每个核心都提供了一个MRP来报告写入访问,以便重建内存映像。
每个核心的MRP接口的主要特点是:
- MRP的跟踪信息是未压缩的。
- MRP不包括任何过滤。
1.3.4 Interrupt interface
Cortex-R52处理器的中断接口具有一个可配置数量的共享外设中断Shared Peripheral Interrupts (SPI)输入端口,范围从32到960(以32的倍数增加),每个核心至少为32个。所有SPI都可以配置为上升沿触发或电平敏感主动高电平。
中断分配器还具有用于将中断路由到外部设备(如DMA引擎)的可选中断导出端口。
中断控制器通过与将中断路由到核心相同的方式选择此端口来路由SPI。中断控制器还提供了私有外设中断 Private Peripheral Interrupts (PPIs)和软件生成的中断 Software Generated Interrupts(SGIs),这些对于每个核心是私有的。其中一些PPI被公开作为主要输入信号。
1.3.5 MBIST interface
MBIST接口用于在生产测试期间测试RAM。
Cortex-R52处理器允许在正常执行期间使用MBIST接口测试RAM。这被称为在线MBIST。
现有的生产测试MBIST控制器不支持在线MBIST的要求,因此,有必要使用专门为此目的开发的PMC-R52。PMC-R52是Cortex-R52 RTL的一部分。它是一个集成选项,可能不会出现在每个实现中。
有关PMC-R52的更多信息,请参阅Appx-D-632页上的附录D PMC-R52。
有关MBIST接口和在线MBIST的更多信息,请联系您的实现团队。
1.3.6 Low Power Interface
The P-channel 接口用于向外部电源控制器传递电源状态信息。
1.4 Supported standards
该处理器符合或实现了Arm定义的各种规范。
1.4.1 Arm architecture
Cortex-R52处理器实现了Armv8-R AArch32架构。这包括:
- 支持AArch32执行状态。
- 支持异常级别,EL0,EL1和EL2。
- 支持符合ANSI/IEEE Std 754-2008的浮点计算功能,IEEE二进制浮点运算标准。
参见Arm®架构参考手册补充Armv8,了解更多关于Armv8-R AArch32架构简介的信息。
1.4.2 AMBA
Cortex-R52处理器符合以下要求:
1.4.3 Generic Interrupt Controller architecture
Cortex-R52处理器支持GIC架构版本3的一个子集。请参阅Arm®通用中断控制器架构规范,其中包括GIC架构版本3.0和4.0。
1.4.4 Generic Timer architecture
该处理器实现了Arm通用定时器架构。有关更多信息,请参阅《Arm®体系结构参考手册补充 Armv8,针对Armv8-R AArch32体系结构配置文件》。
1.4.5 Debug architecture
该处理器实现了符合CoreSight架构的Armv8-R AArch32调试架构。更多信息请参阅以下内容:
-
Arm® CoreSight™ Architecture Specification v2.0。
-
Arm® Architecture Reference Manual Supplement Armv8,适用于Armv8-R AArch32体系结构配置文件。
1.4.6 Embedded Trace Macrocell architecture
该处理器实现了ETMv4.2架构。请参阅Arm®嵌入式跟踪宏单元架构规范ETMv4。
1.5 Documentation
Cortex-R52处理器文档如下:
Technical Reference Manual
技术参考手册(TRM)描述了处理器的功能和功能选项对其行为的影响。在设计流程的所有阶段都需要使用该手册。在设计流程的早期做出的选择可能意味着TRM中描述的某些行为与实际情况不相关。如果您正在编程处理器,还需从以下方面获取额外信息:
-
从实施者处确定实现版本配置;
-
从集成商处确定所使用设备的引脚配置。
Configuration and Sign-off Guide
《配置和签署指南Configuration and Sign-off Guide(CSG)》描述了以下内容:
-
可用的构建配置选项及其选择相关问题。
-
如何使用构建配置选项来配置寄存器传输级(RTL)源文件。
-
如何集成RAM阵列。
-
如何验证RTL。
-
如何运行测试向量。
-
考虑到平面布局的因素。
-
签署已配置设计的流程。
Arm产品的交付成果包括参考脚本和有关如何使用它们来实施设计的信息。由Arm提供的参考方法流是示例参考实现。如果需要EDA工具支持,请联系您的EDA供应商。CSG是一本保密书,只对许可证持有人开放。
Integration Manual
集成手册 Integration Manual (IM)描述了如何将处理器集成到SoC中。它详细说明了集成者必须连接的信号,以配置宏单元进行所需的集成。一些实施选项可能会影响可用的集成选项。该IM是一本保密书籍,仅供许可证持有人使用。
Safety Manual安全手册
安全手册 safety Manual (SM)及其他相关文件详细描述了故障检测和控制功能的能力,开发过程以及使用假设,以支持集成具有定义的功能安全要求的处理器的产品开发。该安全手册是一本保密书籍,仅供许可证持有人使用。
1.6 Design process
Arm处理器以可综合RTL的形式交付。在该处理器能够用于产品之前,必须经过以下流程:
Implementation
实施者配置和综合RTL以生成一个硬宏单元。这可能包括将缓存RAM集成到设计中。
Integration
集成器将配置的设计连接到SoC。这包括将其连接到内存系统和外围设备。
Programming
这是最后一个步骤。系统程序员开发:
- 用于配置Arm处理器的软件
- 用于初始化Arm处理器的软件。
- 应用软件和SoC测试。
每个过程:
- 可以由不同的参与方执行。
- 可以涉及做出配置选择,影响处理器的行为和功能。
最终设备的操作取决于:
Build configuration
实施者选择影响RTL源文件预处理的选项。这些选项通常包括或排除可能影响结果宏单元的面积、最大频率和功能的逻辑。
Configuration inputs
集成商通过将输入与特定值相连来配置处理器的某些功能。这些配置会影响在进行任何软件配置之前的启动行为,并且还可以限制软件可用的选项。
Software configuration
程序员通过将特定的值编程到寄存器中来配置处理器。这会影响处理器的行为。
以上是ARM R52架构的介绍,下节讲程序模型