2. EPYC平台固件架构

在AMD EPYC服务器平台上,固件并不是单一程序,而是一组分工明确、彼此协作的组件集合。理解AGESA、PSP、SMU、MPIO与BIOS/UEFI各自的职责边界和交互路径,是后续进行固件更新、故障定位和生命周期管理的基础。本节从“谁负责什么、谁和谁通信、启动时按什么顺序交接”三个角度展开。

一、五个核心组件的角色定位

BIOS/UEFI是平台固件中最上层、最贴近操作系统和用户的部分。它负责平台初始化策略、设备枚举、启动设备选择、ACPI/SMBIOS等运行时表的构建,以及把控制权交给引导加载程序。在EPYC平台上,BIOS/UEFI通常以SPI Flash中的固件镜像形式存在,由OEM或主板厂商基于AMD参考代码定制。

AGESA(AMD Generic Encapsulated Software Architecture)是AMD提供的处理器初始化抽象层,以模块化库的形式被BIOS/UEFI调用。它封装了内存训练、CCX/CCD初始化、Infinity Fabric链路训练、PCIe根端口配置等与SoC强相关的底层流程。BIOS工程师通常不直接修改AGESA内部算法,而是通过配置参数(如内存频率、时序、链路宽度)来影响其行为。

PSP(Platform Security Processor)是集成在EPYC SoC内部的ARM Cortex-A5安全处理器,运行独立的固件。它负责安全启动链的根信任、固件签名验证、安全密钥管理、以及部分平台复位与电源序列控制。PSP固件通常与AGESA、SMU固件一起打包在BIOS镜像中,由PSP在启动早期加载并验证。

SMU(System Management Unit)是SoC内部的微控制器,负责电源管理、时钟与电压调节、温度监控、以及P-state/C-state协调。它运行自己的固件(SMU FW),通过邮箱(mailbox)机制与BIOS、操作系统和PSP交换命令与状态。

MPIO(Multi-Processor I/O)在EPYC语境中通常指多路平台下的I/O互连与资源分配逻辑,涉及Socket间Infinity Fabric链路、PCIe根复合体归属、以及NUMA相关的I/O拓扑。它并非单一固件模块,而是由AGESA、BIOS和硬件共同实现的一组配置与协调机制。

EPYC平台固件组件交互关系 BIOS / UEFI 平台策略 · 设备枚举 · ACPI/SMBIOS AGESA 内存训练 · IF链路 · PCIe根端口 PSP 安全启动 · 签名验证 · 密钥管理 SMU 电源管理 · 时钟电压 · 温度监控 MPIO / 多路I/O协调 Socket间IF · PCIe归属 · NUMA拓扑 EPYC SoC 硬件层:CCD/CCX · IOD · Infinity Fabric · PCIe控制器 · SPI Flash 调用初始化库 加载/验证固件 邮箱命令 I/O拓扑配置 安全策略 电源/时钟协调 图例 调用/加载 配置/协调 硬件访问

二、启动阶段的交接顺序

EPYC平台的上电启动大致遵循以下顺序,理解这个顺序对判断“卡在哪个阶段”至关重要。

上电复位后,首先由PSP获得执行权。PSP从SPI Flash中读取自身固件并完成自检,随后验证BIOS镜像的签名。如果签名验证失败,平台会进入恢复模式或停止启动,这是安全启动链的第一道关卡。验证通过后,PSP将BIOS代码释放到x86核心可执行的内存区域,并把控制权交给BIOS/UEFI。

BIOS/UEFI开始执行后,首先调用AGESA完成处理器核心初始化。这一阶段包括:内存控制器初始化与DDR训练、CCX/CCD使能、Infinity Fabric链路训练、PCIe根端口枚举。AGESA通过回调函数把训练结果和拓扑信息返回给BIOS,BIOS据此构建ACPI SRAT/SLIT等NUMA描述表。

在AGESA初始化过程中,BIOS还会通过邮箱向SMU发送电源管理配置命令,例如设置PPT/TDC/EDC限制、配置P-state表、使能温度监控阈值。SMU固件在收到命令后执行实际硬件调节,并通过邮箱返回状态码。如果SMU未就绪或命令超时,BIOS通常会记录错误并可能降级启动。

对于多路EPYC系统,MPIO相关的协调发生在AGESA完成单Socket初始化之后。BIOS需要配置Socket间Infinity Fabric链路、确定每个PCIe根复合体归属哪个Socket、以及设置NUMA节点间的距离信息。这些配置直接影响操作系统看到的I/O拓扑和内存访问延迟。

三、运行时交互与固件更新视角

进入操作系统后,BIOS/UEFI的大部分代码已退出,但SMU和PSP仍在运行。操作系统通过ACPI接口与SMU交互电源管理请求,通过PCI配置空间和MSR访问部分平台状态。PSP则继续提供安全服务,例如可信执行环境的管理。

从固件更新角度看,AGESA、PSP、SMU固件通常打包在同一个BIOS镜像中,由OEM以整体包形式发布。更新时,PSP负责验证新镜像签名,SMU固件在下次复位后生效,AGESA版本随BIOS镜像一起切换。因此,在排查“更新后内存训练失败”或“更新后电源管理异常”时,需要同时确认BIOS版本、AGESA版本和SMU固件版本是否匹配。

在实际运维中,可通过以下方式确认各组件版本:BIOS版本在开机自检画面或BMC界面查看;AGESA版本通常包含在BIOS版本字符串中;SMU固件版本可通过dmidecode -t bios或厂商专用工具读取;PSP固件版本在部分平台上可通过BMC的固件清单查看。三者版本不匹配是导致启动异常或性能异常的常见原因之一。

四、组件职责速查

组件 核心职责 典型交互对象 更新方式
BIOS/UEFI 平台策略、设备枚举、启动管理、ACPI表 AGESA、PSP、SMU、OS 整体BIOS镜像刷新
AGESA CPU/内存/IF/PCIe底层初始化 BIOS、硬件 随BIOS镜像更新
PSP 安全启动、签名验证、密钥管理 BIOS、SMU 随BIOS镜像更新
SMU 电源、时钟、电压、温度管理 BIOS、PSP、OS 随BIOS镜像更新
MPIO 多路I/O拓扑、NUMA协调 AGESA、BIOS、硬件 随BIOS/AGESA配置更新