AMD的SoC(系统级芯片)具有广泛的功能,适用于需要可扩展处理能力、集成功能单元和可扩展可编程逻辑的高端应用,并且可以在正常系统操作期间动态配置和重新配置。SoC架构包括一组丰富的集成硬件组件和许多用户可编程设计选项,适用于许多系统级解决方案。每个设备都包含一个处理系统、可编程逻辑、平台管理控制器以及各种集成的硬件子系统和外设。处理系统和可编程逻辑可以选择性地初始化和配置,以满足系统解决方案所需的不同功能和功率要求。
所有SoC都包括一个处理系统、一个平台管理控制器、一个NoC互连、一个或多个DRAM内存控制器以及各种I/O缓冲器。设备选项可能包括硬件加速器、通信接口等。下面分别介绍这些内容:
Processing System
versal的处理器系统和MPSoC大致一样,都是由APU(多核应用处理单元)和RPU构成(多核实时处理单元)。APU和RPU可以在同构或异构环境中运行Linux和裸机软件栈。APU与系统缓存通过一致性互连(后面结合系统框图介绍一致性)紧密耦合,提供高性能的软件计算能力。APU位于全功率域(FPD)内。RPU包括紧密耦合的内存(TCM),并且靠近片上内存(OCM)以实现标准编程环境中的确定性软件执行速度。RPU和OCM位于低功率域(LPD)内。
Application Processing Unit
APU(应用处理单元)基于两个或四个Arm® Cortex®-A72 CPU核心,这些核心包含v8-A架构中的Arm A64指令集。APU与缓存一致性互连(CCI)紧密耦合,CCI由系统内存管理单元(SMMU)围绕,用于包括DMA单元和其他系统处理器在内的其他事务主机。CCI包括带有ECC的L2系统缓存内存,形成紧密耦合的一致性系统。APU还包括Arm通用中断控制器(GIC-500),用于管理共享和系统中断。APU可用于计算、控制平面应用、操作系统、通信接口等。
Real-time Processing Unit
RPU(实时处理单元)处理器基于两个Arm Cortex-R5F CPU核心,可以在双核或锁步模式下运行。每个CPU都包括独立的L1指令和数据缓存以及专用于其RPU核心的TCM(紧耦合内存),以实现实时数据处理应用的确定性行为。CPU具有乱序执行功能,并配有单精度/双精度浮点单元(FPU)。处理器还包括一个通用中断控制器(GIC PL-390),用于管理共享和系统中断。系统内存空间是可缓存的,但TCM内存空间是不可缓存的。
RPU为实时应用提供可预测的软件执行时间。Linux和裸机软件栈可以在APU和RPU中在同构或异构环境下执行。
(锁步模式是一种故障容忍技术,用于提高系统的可靠性和安全性。在锁步模式下,两个或多个处理器(或CPU核心)同步运行相同的指令,并在每个时钟周期中进行相同的操作。这样,如果其中一个处理器出现错误,系统可以检测到差异,并采取适当的纠正措施或故障处理步骤。)
NoC Interconnect
NoC是versal中独有的互联模块,用于连接APU(应用处理单元)、RPU(实时处理单元)和其他处理器与DDR内存控制器以及可编程逻辑中的其他功能。
Programmable Logic
这部分的内容和MPSoC中的一致,可编程逻辑部分由CLB以及一些专用的资源组成(如:BRAM,DSP等)。versal的pl部分也包括LVCMOS的缓存以及高速串行收发器。
可编程逻辑支持AXI SmartConnect核心功能,可以通过AMD LogiCORE™ IP库实例化。AXI SmartConnect核心可以独立存在于可编程逻辑内部,也可以通过多个AXI接口与处理系统连接,有时会与APU系统缓存一起使用,有时则不具备协同性。
所有设备都基于NoC互联,用于将处理器和DMA单元连接到系统内存、其他处理器以及设备内部的其他资源,还可以连接到带有PCIe®(CPM)的一致模块的各种实现,这是一种设备选项。
每个设备都有一个或多个DDR内存控制器连接到NoC互联。HBM接口是一个设备选项,具有一个或多个HBM控制器。
DDR Memory Controller
在versal中,pl端不再使用mig来访问内存,同时ps端的内存也不再zynq中配置,双方的内存都是基于NoC来访问。支持的类型包括DDR/LPDDR
High-bandwidth Memory Interface
为了同时兼顾访存的速度以及容量,一些versal的设备中集成了HBM高带宽存储器,可以通过NoC来访问这些存储器。
Platform Management Controller
硬件启动方面,PMC(平台管理控制器)包含一个深度嵌入的ROM代码单元(RCU)处理器。PMC还包含一个平台处理单元(PPU),该单元执行平台加载和管理(PLM)固件,负责软件启动、设备配置、部分重配置和其他平台管理任务。
PLM还会从启动设备下载固件到处理系统管理(PSM)控制器中。
Device Boot
引导ROM代码是设备级复位后首先运行的代码。RCU引导ROM代码初始化设备,启用引导接口,并从闪存设备中访问引导设备头。在硬件引导完成后,RCU已将平台加载器和管理固件加载到PMC处理器中。
System Monitoring
系统在运行时进行监控以检测错误,并提供必要的手段来解决这些错误,这是安全性、可靠性和安全性要求的一部分。配置、启动和一般的平台管理任务包括复位、时钟、电源管理和系统监控。PLM和PSM固件在系统运行期间监视系统,以检测错误并提供必要的手段来解决这些错误,以满足安全性、可靠性和安全性要求。
Integrated Hardware Options
Coherent Module with PCIe
The coherent module with PCIe (CPM) interconnect is a device option that provides coherency between the PCIe controllers, a PL processor, and the PS. The CCIX interconnect adds memory coherency with external devices over PCIe. There are multiple types of CPM modules:
CPM5 with PCIe 5.0 and CCIX 1.1 interconnect (device option in Versal adaptive SoC)
整个versal架构的系统框图如下所示:
通过这张图来回顾一些内容:
1.CPM是一个集成的PCIe硬核管理逻辑,和PS端逻辑以及PL端逻辑相连接,同时通过NoC总线访问存储模块,包括DDR以及HBM。
2.处理器系统包含两个域,FPD(全功耗域)以及LPD(低功耗域)。APU运行在全功耗域。RPU运行在低功耗域。
3.APU包含L1与L2两级cache,RPU只含有L1一级cache,同时包含TCM集成在处理器中的存储模块以及OCM。RPU可以直接访问TCM存储器以追求实时性。因为访问TCM可以跳过cache直接访问内存。
4.HBM基于3D硅堆叠技术的FPGA。含有多个超级逻辑区(SLR)。
低级软件包括运行在两个独立的 MicroBlaze™ 三模冗余 (TMR) 处理器上的嵌入式平台加载器和管理器 (PLM) 固件和处理系统管理器 (PSM) 固件。
高级软件包括在 RPU 中运行的实时软件和在 APU 中运行的应用软件环境。Linux 和裸机软件栈可以在 APU 和 RPU 中在同构或异构环境下执行。
- 基于 MicroBlaze™ 的 TMR PPU 处理器:运行由 ROM 代码单元(RCU)BootROM 代码最初加载的 PLM 固件。
- 基于 MicroBlaze 的 TMR PSM 处理器:运行由 PLM 加载的 PSM 固件。
- Arm 实时处理单元 (RPU)。
- Arm 应用处理单元 (APU)。
- PL 中实例化的 MicroBlaze 处理器。
Processor Communications
软件通过多种硬件机制在处理器之间进行通信。这些硬件机制包括:
处理器间中断(Inter-Processor Interrupts, IPIs):
32个互斥寄存器(Mutex Registers):
来自所有设备部分的系统中断:
来自和发送到可编程逻辑的通用系统中断:
Software Development
软件可以在多个平台上进行开发,包括:
- 裸机软件栈(Bare-metal software stack):
使用标准的C库(libc和libm),基于开源的Newlib库。这种开发方式不依赖于操作系统,适用于对实时性要求高或者资源有限的应用场景。
- 中间件库(Middleware libraries):
提供网络、文件系统和加密支持。这些库简化了应用开发,帮助处理复杂的功能需求,如网络通信和数据存储。
- 应用示例:
包括测试应用程序,用于验证系统的功能和性能。
- 基于Linux的工具和操作系统软件:
PetaLinux:
- 用于快速构建嵌入式操作系统的工具,简化了Linux系统的定制和部署过程。
U-Boot:
- 引导加载程序,用于系统启动时加载操作系统。
Yocto:
- 用于创建自定义Linux发行版的工具,提供了丰富的构建和配置选项。
System Debugger
AMD系统调试器(XSDB)使用AMD硬件服务器(hw_server)作为底层调试引擎。软件开发工具包(SDK)将每个用户界面操作转换为目标通信框架(TCF)命令序列。然后,SDK处理系统调试器的输出,以显示正在调试的程序的当前状态。它通过AMD hw_server与硬件上的处理器进行通信。SDK包含Arm CoreSight™驱动程序,用于访问集成在处理系统中的调试硬件。
处理器间通信包括中断控制器、互斥寄存器和基于内存的寄存器模块。这些通信可能发生在以下单元之间:
- 应用处理单元(APU)
- 实时处理单元(RPU)
- 运行平台加载管理(PLM)固件的PMC PPU处理器
- 运行PSM固件的PSM处理器
- 在可编程逻辑(PL)中实例化的MicroBlaze处理器以及其他处理器
Inter-processor Interrupts
处理器间中断(IPI)控制器提供了设备处理器之间的交叉处理器中断。中断通道包括32字节消息缓冲通道和非缓冲通道。
Mutex Registers
PMC全局寄存器模块中有32个通用互斥寄存器。这些互斥寄存器可以在被授予访问权限时进行声明和释放。它们的使用和协议由软件定义。互斥寄存器的值不影响硬件。在PMC全局寄存器模块中可以找到32个PMC_MUTEX_n寄存器。访问互斥寄存器受PMC_XPPU保护单元的保护。
系统内置了固有的性能特性,同时提供了多种与性能相关的配置选项。
Interconnect具有专用的128位、256位和512位AXI通道连接于子系统之间。这些包括低延迟数据路径和高吞吐量数据路径,并配备缓冲。还有一些显著的数据路径。
低延迟的数据路径
高吞吐量的数据路径
重要的数据通道
Transaction Quality of Service
每个事务都包括一个服务质量(QoS)流量属性。
• 同步传输,用于视频和其他时间敏感的事务
• 低延迟,用于通信和其他应用
• 尽力而为,批量流量,用于没有严格时间要求的大数据集
QoS 属性由 AMBA® 交换机和 DDR 内存控制器识别。通过适当地设置 QoS 属性可以获得系统性能。每个事务主机可以生成一个或多个 QoS 值。
所有系统级芯片(SoC)都包含平台管理控制器(PMC)。PMC 负责启动、配置、部分重配置及其他平台管理任务,例如安全管理。PMC 包括深度嵌入的 ROM(BootROM)代码单元(RCU)用于设备启动,以及一个执行平台加载器和管理器(PLM)固件的平台处理单元(PPU)。
PLM 还管理处理系统管理(PSM)控制器,包括固件下载和管理协调。
平台管理控制包括多个功能,以支持系统硬件启动、软件启动、系统监控和响应系统请求:- RCU 三模冗余 (TMR) MicroBlaze™ 处理器:具有专用的 RCU BootROM,用于初始设备启动和防篡改监控。
- PPU TMR MicroBlaze 处理器:用于平台加载器和管理器(PLM)固件的执行。
- 系统监控 (SYSMON):提供温度和电源供应监控功能。
- 全局寄存器:用于捕获通用用途、功耗和错误状态。
- 两个流式 DMA(直接内存访问):在系统内转移数据,用于安全配置和处理。
平台管理控制器功能模块图识别了与每个主要功能相关的模块和底层单元。PMC模块图说明包含在图示后面。
在versal架构中有三个嵌入式微处理器:
- ROM 代码单元 (RCU):执行来自 ROM 的 BootROM 代码。
- PPU 处理器: 执行在平台处理单元 (PPU) 中运行的平台加载器和管理器 (PLM) 固件,具有对其本地 PPU RAM 和 PMC RAM 的访问权限。
- PSM 处理器*:执行来自 RAM 的 PSM 固件。
RCU BootROM Code
The deeply embedded RCU (Reset Control Unit)是系统复位(SRST)或上电复位(POR)后首个启动的处理器。RCU执行其BootROM代码以初始化硬件并验证引导设备;这包括处理从引导设备访问的引导头。RCU将PLM固件下载到PPU RAM中。当硬件准备就绪时,RCU释放PPU处理器上的复位,以开始执行PLM固件。
RCU的BootROM代码和PLM固件共同提供平台认证服务。平台认证服务利用平台配置寄存器(PCRs)、制造背书密钥和设备标识组合引擎(DICE)支持。
PLM Firmware Code
PLM固件在基于MicroBlaze的平台处理单元(PPU)上运行。PLM固件由AMD Vivado™和AMD Vitis™工具生成,并配置系统进行设备引导。PLM固件包括支持单一镜像或一系列镜像下载的代码。系统引导后,PLM继续管理系统资源。
PLM从引导源读取可编程设备镜像(PDI),并初始化和配置APU和RPU子系统的系统组件。PLM配置通常包括NoC初始化、DDR存储控制器初始化、可编程逻辑配置以及在处理系统中加载实时和应用软件。PLM的操作和责任由SoC应用定义。当处理系统控制SoC时,PLM监视系统活动并响应来自实时和应用处理单元、RPU、APU和可编程逻辑的系统请求。
PSM Firmware Code
PSM执行由PLM下载的固件,用于控制处理系统和其他子系统的电源管理功能。技术参考手册提供了PMC和PS中电源控制功能的编程模型。这包括电源岛、存储芯片使能、隔离以及APU的睡眠/唤醒事件。PSM物理上位于低功耗域(LPD),而不是PMC的电源域内。
嵌入式处理系统管理器处理器位于PS LPD中。