目录
一、简单介绍
二、Cortex-R5的结构(单核)
2.1 Data Processing Unit
2.2 Load/Store Unit
2.3 PreFetch Unit
2.4 L1 memory system
2.4.1 Icache和Dcache
2.4.2 Memory Protection Unit(MPU)
2.4.3 Tightly-Coupled Memory(TCM)接口
2.4.4 Error correction and detection
2.5 L2 AXI interfaces
2.5.1 AXI master接口
2.5.2 AXI slave接口
2.5.3 外设接口
2.6 其他模块
RPU, Real-time Processing Unit,实时处理单元。
Zynq UltraScale+里的RPU采用的是双核Cortex-R5,是Cortex R系列的第二代产品(第一代是R4)。
我们知道ARM家族现在有三类主流产品,其中Cortex A系列主打高性能,Cortex M系列主打低功耗,而Cortex R系列则一直比较低调,主打但是更快的响应,也就是高性能实时处理。R系列的处理器一般用于硬盘控制器、消费电子设备、汽车应用等等。
在U+里,Cortex-R5扩展了Cortex-R4的功能集,增强了可靠实时系统中的错误管理,能够很好的服务于网络和数据存储应用,效率和可靠性都很高。
R5是基于ARMv7架构,根据ARM的TRM文档,单核的R5结构图如下:
主要有以下Features:
• Data Processing Unit
• Load/Store Unit
• PreFetch Unit
• L1 memory system
• L2 AXI interfaces
• Dual-redundant core
• Split/lock
• Hard error features
• Debug
• System control coprocessor
• Interrupt handling
• Power management
下面我们挑几个主要的模块单独做下介绍。
Data Processing Unit,DPU,数据处理单元。
DPU包含处理器的大部分程序可见状态,比如通用状态寄存器、状态寄存器和控制寄存器。它根据ARM架构去解码、执行指令或操作寄存器中的数据。指令会经过buffer区域,从PFU获取到DPU去执行。
从上图我们可以看到,DPU还包含浮点单元FPU,也就是Floating Point Unit。浮点单元包含VFP寄存器文件和状态寄存器,是DPU的一个可选部分,负责对VFP寄存器中的数据执行浮点操作。
Load/Store Unit,LSU,下载存储单元。
LSU管理所有的下载和存储操作,与DPU连接到TCMs、缓存、外围端口和L2 Cache接口。
上面提到的DPU如果要访问内存,就必须经过LSU。
PreFetch Unit,PFU,预取单元。
PFU从指令缓存、TCMs或外部内存中获取指令并预测指令流中分支的结果。
PFU存在的目的:
1、通过预测指令流分支的结果,在DPU之前执行投机性的指令;
2、将指令数据格式化,以帮助DPU更高效地执行。
L1 Memory系统包括以下特性:
Icache和Dcache分离;
灵活的TCM接口
整个内存系统均为64bit的数据路径
MPU支持内存区域大小可配置
导出L2 Memory系统的内存属性
本地Memory支持奇偶校验或ECC校验
下面可以再详细来看看L1 Memory系统的几个子模块。
Icache和Dcache有以下特征:
支持指令Cache和数据Cache的独立配置,配置大小区间为4KB~64KB
伪随机Cache替换策略
8字节高速缓存线长度,线长度支持Write-back或Write-through两种Cache写机制,由MPU区域来决定
每个Cache可以独立地被禁用
从LDM和LDRM操作顺序数据流或者获取顺序指令流
当Cache miss的时候,可以进行关键字首次填补
使用标准的ASIC RAM编译器去实现所有的Cache RAM块、相关tag和有效的RAM块
MPU为嵌入式控制应用提供可配置的内存属性,可以将MPU配置为8个或者12个区域,每个区域的最小分辨率为32字节。
MPU的区域可以重叠,编号最高的区域优先级最高。MPU检查保护和内存属性,并且可以将它们传递给L2的Memory系统。
以下为MPU默认的Memory map:
因为有些应用不需要Cache,所以有两种TCM接口,分别是ATCM和BCTM。针对不同贷款的扩展应用,BTCM又有两个Memory端口,为B0TCM和B1TCM。
ATCM通常包含必须高速访问的中断或异常代码,不会有任何潜在的延迟去造成缓存丢失。
BTCM则通常用于存储需要密集处理的数据块,如音频或视频处理。
为了增加系统对软件内存的容错率,我们在配置Caches的时候可以:
1、进行奇偶校验和ECC校验
2、ECC代码生成、单比特纠错和双比特纠错
类似地,也可以配置TCM接口的ECC代码生成、单比特纠错和双比特纠错。
L2 AXI interfaces的作用是为了让L1 memory systems可以通过AXI master、AXI slave接口以及外设端口去访问外设和外接Memory。
AXI主口为二级缓存、on-chip RAM、外围设备和到外部内存接口提供了高带宽接口。它由一个具有64位读通道和64位写通道的AXI接口来获取指令和数据。
AXI主口可以以处理器相同的频率运行,也可以以较低的同步频率运行。如果使用了异步时钟,则需要外接异步AXI slice。
AXI从接口支持AXI主机,包括处理器的AXI主端口通过AXI系统总线访问数据和指令缓存RAMS和TCMs。
AXI从接口可以以处理器相同的频率运行,也可以以较低的同步频率运行。如果使用了异步时钟,则需要外接异步AXI slice。
外设接口为片上RAM和外设提供低延迟接口,只访问非缓存的数据。外设接口包括一个32位的可以访问两个接口的AXI端口,还有一个32位的可以访问一个接口的AHB端口。
外围接口可以以与处理器相同的频率运行,也可以以较低的同步频率运行。如果使用了异步时钟,则需要外接异步的AXI slice和异步的AHB桥。
其他的模块(Dual-redundant core 、Split/lock、Hard error features、Debug、System control coprocessor 、Interrupt handling、Power management)这边不做主要介绍了,有兴趣的童鞋可以直接去看R5的TRM文档。