1. AMD XDNA架构概述
AMD XDNA是一种专为AI计算设计的异构计算架构,其核心设计理念是通过高度并行的计算单元阵列来实现高效的神经网络推理能力。与传统的GPU架构不同,XDNA采用了独特的二维网格结构,每个计算单元(Tile)都具备独立的执行能力和本地存储。
1.1 硬件拓扑结构
XDNA阵列由多个计算Tile和内存Tile组成,采用4行×N列的排列方式。以不同型号为例:
- Phoenix/Hawk Point NPU:4行×5列(4x5)
- Strix Point APU:4行×8列(4x8)
每个计算Tile包含:
- 一个VLIW(超长指令字)处理器核心
- 专用的程序存储器(16KB)
- 数据存储器
- 本地DMA引擎
内存Tile作为L2缓存使用,每个Tile列配备专用DMA引擎用于主机DDR与内存Tile之间的数据传输。这种设计使得XDNA特别适合连续数据流处理和固定计算图的应用场景。
1.2 架构特点与适用场景
XDNA架构的核心优势在于:
- 空间隔离:阵列可按列边界分区,每个分区可绑定到独立的工作负载上下文
- 本地化计算:计算Tile可直接访问本地存储,减少外部内存访问
- 能效优化:通过片上网络(NOC)连接各Tile,降低数据传输功耗
这种架构特别适合:
- 固定计算图的推理任务
- 低延迟要求的边缘计算场景
- 能效敏感型应用
但相比GPU,XDNA在以下方面存在局限:
- 动态图支持较弱
- 训练任务效率不高
- 超大模型处理能力有限
2. XDNA任务队列机制
2.1 软件定义的任务队列
与传统GPU的硬件任务队列不同,XDNA采用软件定义的任务队列机制,由内核驱动维护。任务队列中的每个元素称为"command",包含执行特定计算任务所需的所有信息。
任务队列的管理涉及两个关键组件:
- MERT(Main ERT):主控制器,负责命令队列管理和任务分配
- ERT(Embedded Runtime):每个Tile配备的微型控制器,负责具体任务执行
2.2 命令类型与格式
XDNA支持多种命令类型,定义在amdxdna_ctx.h中:
c复制enum ert_cmd_opcode {
