1-ZYNQ 折腾记录 -APU

应用程序处理单元(Application processing units, APU)由四个 Cortex-M-A53 MPCore 处理器、L2 高速缓存和相关功能组成。Cortex-A53 MP Core 处理器是最低功耗的 Arm v8 处理器,能够无缝支持 32 位和 64 位代码。它利用高效的 8 阶段有序流水线,结合先进的取指和数据访问技术,以实现高性能。它适合用于入门级设备的功率和面积足迹,同时能够在使用高核心密度的可扩展企业级系统中提供高聚合性能。

image

image

APU Functional Units APU 功能

Instruction Fetch Unit 指令获取单元

  指令获取单元(instruction fetch unit, IFU)包含指令高速缓存控制器及其相关的线填充缓冲区。Cortex-A53 MP Core 指令高速缓存是双向集关联的,并使用虚拟索引物理标记(Virtually Indexed Physically Tagged, VIPT)高速缓存行,最多可存储 16 个 A32 指令、16 个 32 位 T32 指令、16 个 A64 指令,或最多 32 个 16 位 T32 指令。

  IFU 从指令缓存或外部存储器中获取指令,并预测指令流中分支的结果,然后将指令传递给数据处理单元(Data Processing Unit, DPU)进行处理。

Data Processing Unit 数据处理单元

  DPU 持有大多数程序可见的处理器状态,例如通用寄存器数据处理单元和系统寄存器。它提供内存系统及其相关功能的配置和控制。根据 Arm v8-A 体系结构,在操作寄存器中持有的数据时,解码并执行指令。指令从 IFU 馈送到 DPU。DPU 通过接口执行需要将数据从内存系统传输到或从内存系统传输的指令,该接口管理所有加载和存储操作。

Advanced SIMD and Floating-point Extension 高级 SIMD 和浮点扩展

  先进的 SIMD 和浮点扩展实现 Arm NEON 技术;一种媒体和信号处理体系结构,增加了针对音频、视频、3D 图形、图像和语音处理的指令。先进的 SIMD 指令可在 AArch64 和 AArch32 状态下使用。

Cryptography Extension 密码学扩展

  该加密扩展支持 Arm v8 加密扩展。该加密拓展为高级 SIMD 添加了新的 A64、A32 和 T32 指令,加速了以下操作。

  • 高级加密标准(Advanced encryption standard, AES)加密和解密。
  • 安全哈希算法(Secure-hash algorithm, SHA)功能是 SHA-1、SHA-224 和 SHA-256。
  • 在伽洛瓦/逆模式和椭圆曲线密码等算法中使用的有限域算法。

Translation Lookaside Buffer 传输旁路缓冲区

  传输旁路缓冲区(Translation Lookaside Buffer, TLB)包含主 TLB,并处理处理器的所有翻译表行操作。TLB 条目存储在一个 512 条目、4 向集合关联的 RAM 中。

Data-side Memory System 数据端存储系统

  数据缓存单元(Data Cache Unit, DCU)由以下子块组成。

  • 1 级(L1)数据缓存控制器,为相关的嵌入式标签、数据和脏 RAM 生成控制信号,并在请求访问内存资源的各个源之间进行仲裁。数据缓存是 4 路集关联的,并使用物理索引物理标记(PIPT)方案进行查找,从而在系统中实现无歧义地址管理。
  • 与 DPU 和主 TLB 接口的负载/存储管道。
  • 系统控制器,通过与 IFU 的接口直接在数据缓存和指令缓存上执行缓存和 TLB 维护操作。
  • 一个接收来自窥测控制单元(SCU)的一致性请求的接口。

Store Buffer 存储缓冲区

  当存储操作离开加载/存储流水线并由 DPU 提交时,存储缓冲区(Store Buffer, STB)持有存储操作。STB 可以请求访问 DCU 中的缓存 RAM,请求 BIU 启动 linefills,或请求 BIU 将数据写入外部写入通道。外部数据写入通过 SCU 进行。STB 可以合并以下内容。

  • 如果多个存储事务位于相同的 128 位对齐地址,则将它们合并为一个事务。
  • 在 AXI 或 CHI 写入突发事件中进行多次写入。STB 还用于在将维护操作广播到 Cortex-A53 MPCore CPU 集群中的其他核心之前,对这些操作进行排队。

  Cortex-A53 MPCoreL1 内存系统由独立的 L1 指令和数据缓存组成,还包括两个级别的 TLB。

  • 为指令和数据两侧分别设置微型 TLB。
  • 统一主 TLB,处理来自微 TLB 的错误。

Bus Interface Unit and SCU Interface 总线接口单元与 SCU 接口

  总线接口单元(Bus Interface Unit, BIU)包含 SCU 的接口和缓冲区,以将接口与缓存和 STB 解耦。BIU 接口和 SCU 始终在处理器频率下运行。

Snoop Control Unit 窥探控制单元

  窥探控制单元(SCU)将 APU MP Core 与 Zynq UltraScale+ MPSoC 中使用的加速器一致性端口(ACP)连接起来。SCU 还拥有用于一致性支持的 L1 数据缓存标签的副本。SCU 与处理器同步运行,运行频率相同。SCU 包含缓冲区,可以处理处理器之间的直接缓存到缓存传输,而无需向外部存储器系统读取或写入任何数据。缓存行迁移使脏缓存行可以在处理器之间移动,并且不需要将传输的缓存行数据写回外部存储器系统。Cortex-A53 MP Core 处理器使用 MOESI 协议来维护多个核心之间的数据一致性。

L2 Memory Subsystem L2 内存子系统

  Cortex-A53 MPCore 处理器的 L2 内存系统大小为 1MB。它包含 L2 缓存管道和所有逻辑,以维护集群核心之间的内存一致性。它具有以下功能:

  • SCU 通过主存储器接口将内核连接到外部存储器系统。SCU 维护 APU MPCore 之间的数据缓存一致性,并仲裁内核的 L2 请求。
  • L2 缓存是 16 路集合关联的物理地址。
  • L2 缓存标签与 SCU 重复标签并行查找。如果 L2 标签和 SCU 重复标签都命中,则读取访问 L2 缓存,而不是窥探其他处理器之一。

Cache Protection 缓存保护

  Cortex-A53 MP Core 处理器使用两个独立的保护选项,支持以 ECC 形式对处理器中的 RAM 实例进行缓存保护。

  • SCU-L2 缓存保护
  • CPU 缓存保护

  这些选项使 Cortex-A53 MP Core 处理器能够检测并纠正任何 RAM 中的 1 位错误,并检测某些 RAM 中的 2 位错误。Cortex-A53 MP Core RAMs 受到单事件翻转(Southeast University)的保护,因此处理器系统可以检测并继续进行,而不会发生数据损坏。一些 RAM 具有奇偶校验单错误检测(Single Error Detect, SED)功能,而其他 RAM 具有 ECC 单错误纠正、双错误检测(Single Error Correct Double Error Detect, SECDED)功能。

  当任何 RAM 中出现单比特错误时,处理器可以取得进展并保持功能正确。如果在多个 RAM 中出现多个单比特错误,或者在同一个 RAM 中的不同保护粒度内出现单比特错误,则处理器仍然保持功能正确。如果在同一个保护粒度内的单个 RAM 中出现双比特错误,则行为取决于 RAM。

  • 对于具有 ECC 功能的 RAM,如果错误位于包含脏数据的缓存行中,则会检测并报告错误。
  • 对于只有奇偶数的 RAM,不会检测到双位错误,因此可能会导致数据损坏。

  错误事件中断允许系统采取适当行动,包括清空和重新加载缓存,记录错误等。通过适当的交错、选择 ECC 和奇偶校验编码可以避免多比特干扰(MBU)。

Debug and Trace 调试和跟踪

  Cortex-A53 MP Core 处理器支持一系列调试和跟踪功能,包括以下功能。

  • 每个核心中的 Arm v8 调试功能。
  • 每个核心的 ETMv4 指令跟踪单元。
  • CoreSightTM 跨触点接口(CTI)
  • CoreSight 交叉触发矩阵(CTM)
  • 调试 ROM。

Generic Interrupt Controller 通用中断控制器

  Cortex-A53 MPCore 使用外部通用中断控制器 GIC-400 来支持中断。它是 GICv2 的实现,并提供硬件虚拟化的支持。

Timers 定时器

  Cortex-A53 MP Core 处理器实现 Arm 通用计时器架构。

  ‍

1 操作
naive 在 2024-10-28 15:34:40 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...