找回密码
 立即注册
首页 业界区 安全 读书笔记 XILINX ug1085-Zynq UltraScale+ Device

读书笔记 XILINX ug1085-Zynq UltraScale+ Device

支季雅 9 小时前
目录

  • 前言
  • Chapter 4: Real-time Processing Unit 实时处理单元

    • 4.1 Introduction 介绍
    • 4.2 Real-time Processing Unit Features RPU的特性
    • 4.3 Cortex-R5F Processor Functional Description R5F处理器功能性介绍

      • 4.3.1 RPU Pin Configuration
      • 4.3.2 RPU CPU Configuration

    • 4.4 Error Correction and Detection 错误纠正与识别

      • 4.4.1 Interrupt Injection Mechanism

    • 4.5 Level2 AXI Interfaces L2AXI接口
    • 4.6 Memory Protection Unit 内存保护单元(MPU)
    • 4.7 Events and Performance Monitor 事件与性能监视器
    • 4.8 Power Management 功耗管理
    • 4.9 Exception Vector Pointers 异常向量指针(EVP)
    • 4.10 System Register Overview 系统寄存器一览
    • 4.11 Tightly Coupled Memory 紧密耦合内存(TCM)

      • 4.11.1 Tightly Coupled Memory Address Map


  • 本章小节

前言

上一章讲了ug1085MPSOC技术参考手册的第三章,讲了有关MPSOC APU的相关内容,这次我们来讲第四章,同样也是MPSOC的核心器件之一的RPU,这部分内容较APU的话会简单一点。这里再次事先声明,由于我对ARM架构完全不熟悉,所以我用了AI工具来理解这些内容,所以解释可能有问题也欢迎指出。。
Chapter 4: Real-time Processing Unit 实时处理单元

4.1 Introduction 介绍

RPU也就是实时处理单元,听名字就知道这个处理器是为了实时性的应用而生的,这一节稍微介绍了一下RPU实时性的来源,就是低延迟的中断,这是通过中断过程和重启多指令加载的低延时实现的(我的理解是中断响应低延时和加载中断服务程序的低延时),此外专有外设端口以及TCM(紧密耦合内存)也提高了这种低延时性能。
4.2 Real-time Processing Unit Features RPU的特性

这节以列表的方式整理了一下RPU的特性,这里也过一下,RPU具有以下的特性:

  • Integer unit implementing the Arm v7-R instruction set.
  • Single and double precision FPU with VFPv3 instructions.
  • Arm v7-R architecture memory protection unit (MPU).
  • 64-bit master AXI3 interface for accessing memory and shared peripherals.(RPU访问外部内存和共享外设的总线)
  • 64-bit slave AXI3 interface for DMA access to the TCMs. (外部DMA方位RPU的TCM的总线)
  • Dynamic branch prediction with a global history buffer and a 4-entry return stack.
  • Separate 128KB TCM memory banks with ECC protection for each TCM.
  • 32KB instruction and data L1 caches with ECC protection.
  • Independent Cortex-R5F processors or dual-redundant configuration.
  • 32-bit master advanced eXtensible interface (AXI) peripheral interface on each processor for direct low-latency device memory type access to the interrupt controller.(访问中断控制器的低延时总线)
  • Debug APB interface to a CoreSight debug access port (DAP).
  • Low interrupt latency and non-maskable fast interrupts.
  • Performance monitoring unit.
  • Exception handling and memory protection.
  • ECC detection/correction on level-1 memories.
  • Lock-step (redundant CPU) configuration is available to mitigate random faults in CPU registers and gates.(锁步运行模式以减少随机错误)
  • Built-in self-test (BIST) to detect random faults in hardware (probably) caused by permanent failure.
  • Watchdog to detect both systematic and random failures causing program flow errors.
  • 下面我们就跟随文档介绍下其中的一些特性。
4.3 Cortex-R5F Processor Functional Description R5F处理器功能性介绍

这节讲了R5F处理器的一些功能特性,但是最主要的还是给出了R5F的系统架构图,我们先来看看R5F的系统架构图:

这张图整体向我们展示了R5F处理器的连接结构,我在其中标出了三部分,我本来是想对照MPSOC互联架构图来确认一下各个部件,但是最后发现有很多地方没办法对应上,就只能作罢,不过我们还是分析一下。
最上面的RPU部分,就是R5F核的核心,可以看到两核的R5F是直接与TCM相连的,TCM分为3块,一块64KB的TCMA,两块32KB的TCMB,并且都通过64位的AXI总线连接,设计出这么三块是有原因的,他们存储的东西不同,主要是为了提高RPU的实时特性。还可以看到GIC(中断控制器)与RPU也是紧密连接的,同样也是为了中断实时性的考虑。
另外两部分OCM核共享外设我们放在一起讲,首先是OCM部分有一个总线交换器或者说是路由器,这个路由器连接到RPU的64位AXI总线上,RPU就是通过该总线实现对外部设备的访问,因此该路由器连接到OCM,FPD域路由器(右下角那个),再经过LPD域路由器和IOP Inbound(IO外设流入器,我根据AXI互联总线图猜的)实现连接各种各样的共享外设。同时从LPD Inbound又连接了两根64bit的AXI Slave总线用于方位RPU的TCM。这样总体结构就算分析完了,我们在介绍下这节的其他东西。

4.3.1 RPU Pin Configuration

这个小节列表描述了一下RPU的控制信号,感觉主要是硬件参考用,这里也把表摆出来:

注意下面的提示,更多信息查看R5F的参考手册,这里不多讲了。
4.3.2 RPU CPU Configuration

这个小节要讲R5F的一个比较重要的功能,Lock-Step锁步模式,也称为安全模式。像常规的我们分开使用R5F的两个核心就是普通模式或者说性能模式,而Lock-Step锁步模式直接解释就是使两个R5F核进行同样的操作,验证其输出结果以确保结果的正确性或者安全性。锁步模式有这些特性:

  • 只有CPU0这一个处理器接口,也就是外部只能通过访问CPU0的总线来访问RPU,同样RPU也只使用CPU0的总线来访问外设。(这个是我理解的,原文只说only one set of CPU interfaces are used)
  • 只使用CPU0的数据和指令缓存
  • 中断控制器只能将中断分发到CPU0
  • 两个核心的TCMA核TCMB将会合并,形成128KB的TCMA和TCMB,合计256KB且地址连续
  • 需要使用输入信号SLCLAMP和SLSPLIT来控制处理器的组模式。
我们来看下锁步模式的示意图,可以和我总结的几点特性对应一下:

4.4 Error Correction and Detection 错误纠正与识别

这节介绍了一下R5F支持的数据ECC机制。ECC我不太熟悉其应用原理,而且一般来说是处理器自动进行的,这里的ECC应该是R5F能够搭配TCM具有的额外ECC冗余位来实现1bit纠错和2bit检测(我隐约记得数电课程好像讲了这个东西的原理,但是我已经完全忘了哈哈)
4.4.1 Interrupt Injection Mechanism

中断注入机制这节我有点没看明白,主要是还没有看到中断的章节,不过我们这里还是提一下,RPU支持使用自己的中断控制器实现160个共享外设中断,这些外设中断由RPU_INTR_x寄存器标识并被RPU_INTR_MASK_x寄存器掩码,这些寄存器每个32位一共有5个,组成了160个共享外设中断,不过中断具体是怎么实现的这里没说,我们也以后再细讲。
4.5 Level2 AXI Interfaces L2AXI接口

这节叫第二级AXI接口,我理解了下原文觉得他这里想说的是第一级是RPU内部的接口,比如R5F核访问TCM,中断控制器以及I/D Cache这些接口叫一级接口,二级的像RPU访问外设以及外部访问RPU的TCM的叫二级接口。这节就讲了这两个概念,让我有点奇怪他为什么要设置这么一节。
4.6 Memory Protection Unit 内存保护单元(MPU)

MPU单元有点类似我们讲APU时候的MMU内存管理单元,但是我看了下MPU的功能似乎要简单的多,他主要是用来管理对RPU的L1内存系统和外部内存的访问,不包含像MMU一样的地址转译功能。我这里说一下MMU的工作原理。
MMU是通过将内存划分为不同的区域,通过控制这些区域的访问权限以实现对内存的包含,其最多可以划分16个区域,每个区域可以有如下的设置:

  • 区域起始地址
  • 区域大小
  • 子区域使能
  • 区域属性
  • 区域访问权限
  • 区域使能
更详细的介绍还是要参考R5F的技术参考手册,这里只带过一下功能。
4.7 Events and Performance Monitor 事件与性能监视器

我没看懂这节要讲啥,这里就翻译一下:
处理器包括用于检测可能发生的各种事件(例如高速缓存未命中)的逻辑。这些事件提供有关处理器行为的有用信息,供调试或分析代码时使用。
事件在输出事件总线上可见,并且可以使用性能监控单元中的寄存器进行计数。
4.8 Power Management 功耗管理

功耗管理这部分RPU相比APU要简单的多,就只有三状态,运行,待机,关闭,一张表就解释完了:

4.9 Exception Vector Pointers 异常向量指针(EVP)

异常向量指针EVP类似于中断向量表IVT,里面存储的是异常服务程序的入口地址,这里讲EVP主要是由于EVP能够根据R5F的SCTRL.V 位设置EVP的存放地址,SCTRL.V为0则EVP就放在0x0000_0000(LOVEC)的位置,为1就放在0xFFFF_0000(HIVEC)的位置上,我本来也不太明白为什么要这么设置,后面问了下通义千问也算有了个比较合理的解释,我这里说一下。
之所以要给EVP设置一个可切换的地址,是因为在上电时,启动程序会在OCM上先执行,(因为SCU单元只会将FSBL程序加载到OCM上执行,具体的以后将boot过程细说)TCM此时是没有数据的,为了RPU的正常工作,此时EVP是会被放在OCM的0xFFFF_0000处,而且在上电时默认EVP为HIVEC,而在执行FSBL时,RPU为了低延迟的响应中断,EVP会被移动到LOVEC(这一移动应该是可选的,但是最好这么做),这里忘记提了,对于RPU来说TCM作为他内部的一块RAM,实际上是被映射到从0x0000_0000开始的,然而对于APU或者说是全局地址,TCM则位于0xFFE0_0000的位置,这点我们后面会提到。
4.10 System Register Overview 系统寄存器一览

这小节列表描述了一下RPU内部的一大堆寄存器,我也还是贴一下表,具体的看表应该就有简短解释了:


4.11 Tightly Coupled Memory 紧密耦合内存(TCM)

TCM紧密耦合内存 我们前面经常提到,这里借用原文介绍一下:
紧耦合存储器(TCM)是低延迟存储器,可提供可预测的指令执行和可预测的数据加载/存储时序。每个Cortex-R5F处理器在ATCM和BTCM端口上包含两个64bit宽的64KB内存组,总共有128KB内存。将RAM分为两个存储体,并将它们放置在端口A和B上,允许加载-存储、指令预取或AXI从端口同时访问两个存储体。
BTCM存储库分为两个32 KB的队列,连接到Cortex-R5F处理器的BTCM-0和BTCM-1端口。有两个TK接口,允许连接到紧耦合存储器(ATCM和BTCM)的可配置存储块。


  • ATCM通常保存必须高速访问的中断或异常代码,而不会因缓存未命中而导致任何潜在延迟。
  • BTCM通常保存用于密集处理的数据块,例如音频或视频处理。
这里就解释了TCM为什么要分块的原因,还有一张图来解释他们的连接结构,但是这张图里的LSU和PFU单元我没看懂是个啥,通篇也没介绍,我也不多解释了,具体的连接其实我我刚开始将RPU系统结构的时候比较类似,可以类比着看。

这里后面还有一部分讲锁步模式和TCM的地址映射的,我看了下锁步模式其实之前就讲的差不多了这里我们着重讲一下TCM的地址映射。
4.11.1 Tightly Coupled Memory Address Map

我们之前讲过TCM由于RPU的使用以及EVP异常向量指针的存放的原因,需要对其进行地址映射,这一映射使得RPU能够通过0x00地址直接访问TCM,而外部可以通过全局地址访问TCM,这一映射可以体现在下面的两个表格中,一个是具体映射的地址,另一个是示意图:


这里我在第一个表中额外多截了几句话,讲的是R5_0的0xFFE6_00000xFFE0_0000和R5_1的0xFFEE_00000xFFE9_0000这些地址可以被连到R5F的从接口,也就是包括TCM和I/D Cache都是可以被外部访问的。
最后这部分还有一点和GIC相关的内容,大致是说CCI可能会以R5_0的身份访问内存,如果不把RPU加入可信赖的名单的话可能会由于安全设置导致错误,这里就简单翻译一下了:
在某些情况下,CCI-400将使用与R5_0相同的主ID生成交易。如果该区域是一致的并受XMPU保护,则将生成错误,除非R5_0添加到XMPU的允许主ID列表中。如果R5_0对该区域的访问与系统的安全或安全目标不兼容,则用户可以仅使用R5_1运行R5 F应用程序(不使用R5_0),或者跳过使用一致性并且不将R5_0添加到XMPU允许列表。
其实这节最后还有一点介绍使用汇编语言使能R5F处理器的锁步模式的过程,但是都用上汇编了确实有点抽象,自从微机原理学完我都多久没见过汇编了,这里也就不在解释了,有兴趣可以去看第82页。
本章小节

在写完前一章的APU的内容后,写这一章RPU的内容可以让我感觉十分轻松了,大部分概念都不难且也并不复杂,总之我们下一章再见。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册