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平台的上电启动大致遵循以下顺序,理解这个顺序对判断“卡在哪个阶段”至关重要。
上电复位后,首先由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固件版本是否匹配。
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配置更新 |