2. Versal架构与视频视觉计算资源
Versal 是 AMD 面向异构计算推出的自适应 SoC 平台。理解它在视频与智能视觉系统中的价值,关键不是记住“它有很多计算单元”,而是看清一条视频流水线从像素输入到智能决策,究竟在哪些环节被不同资源承接。视频处理天然是分层的:前端是确定性的像素级处理,中段是规则化的图像变换与统计,后端是数据相关、算力密集的神经网络推理,同时还要把多路高带宽数据在 DDR 与各计算引擎之间高效搬运。Versal 的架构正是为这种“确定性 + 数据流 + 高吞吐”混合负载设计的。
一、自适应 SoC 的整体分层
Versal 可粗略分为三层:最上层是标量处理系统(PS,含 Arm 处理器与平台管理),负责控制、调度、协议栈和操作系统;中间是自适应引擎(Adaptive Engine),包含可编程逻辑(PL)、DSP Engine 和 AI Engine;底层是网络与存储基础设施,包括 NoC(片上网络)和 DDR 控制器。视频流水线的典型分工是:PS 做控制与配置,PL 做像素级与接口级处理,DSP Engine 做规则化算术,AI Engine 做向量化与矩阵化推理,NoC 与 DDR 负责把数据送到正确的位置。
这里有一个容易混淆的点:DSP Engine 与 AI Engine 都擅长乘加运算,但定位不同。DSP Engine 更接近传统 FPGA 中的 DSP48 切片,适合定点和低精度浮点的规则运算,如卷积、滤波、累加;AI Engine 则是带向量单元的 VLIW 处理器阵列,适合更复杂的向量运算、矩阵乘和流式数据流图。视频流水线中,前者常出现在前端预处理,后者常出现在推理与后处理。
二、AI Engine 与 DSP Engine 的协作方式
AI Engine 阵列由多个 AI Engine Tile 组成,每个 Tile 包含向量单元、标量单元和本地内存,Tile 之间通过 AXI Stream 或共享内存通信。视频推理中,典型做法是把一层卷积拆成若干 Tile 并行执行:输入特征图按行或按通道切分,经流接口送入不同 Tile,各自完成乘加后汇总。这种“空间换时间”的映射方式,使 AI Engine 能在较低时钟下获得很高的有效算力。
DSP Engine 则更适合放在 AI Engine 之前。例如在目标检测前,先由 DSP Engine 完成图像金字塔的缩放、均值方差归一化或 Sobel 边缘计算,把数据整理成 AI Engine 喜欢的格式。这样做的原因是:DSP Engine 的定点运算延迟确定、资源占用小,适合处理规则性强的像素级任务;而 AI Engine 的强项是数据相关、可并行的向量与矩阵运算。两者配合,可以避免把简单运算也塞进 AI Engine,造成资源浪费。
三、NoC 与 DDR 控制器的关键作用
视频流水线最容易被低估的瓶颈是数据搬运。以 4K60 视频为例,单帧约 830 万像素,若按 YUV420 8bit 计算,单帧约 12.4 MB,60 帧每秒就是约 745 MB/s 的原始码率。若中间还要做多尺度、多帧缓存和特征图读写,实际 DDR 带宽需求往往是原始码率的数倍。NoC 的作用就是在 PL、DSP、AIE、PS 与 DDR 之间提供高带宽、低延迟、可配置 QoS 的互联,避免所有数据都挤到同一条总线上。
DDR 控制器则决定了帧缓冲和权重存储的访问效率。视频处理中常见的访问模式是“大块连续读 + 小块随机写”,例如读取参考帧、写入当前帧的局部区域。若地址映射不合理,会出现 bank 冲突和行激活频繁,实际带宽远低于理论值。工程上通常会把帧缓冲按行对齐、把权重放在连续区域,并通过 NoC 的 QoS 设置给实时视频流更高优先级。
四、一个可参考的流水线映射示例
假设一路 1080p30 输入,需要完成去噪、缩放、目标检测和结果叠加。一种合理的映射是:PL 负责 MIPI 接收与去马赛克,输出 AXI4-Stream;DSP Engine 做 3×3 中值滤波和双线性缩放;AI Engine 执行轻量检测网络;PS 负责调度、读取检测结果并驱动显示。NoC 为视频流分配固定带宽通道,DDR 中划分帧缓冲区和权重区。判断这条流水线是否达标,可以观察三个指标:端到端延迟是否稳定、DDR 带宽占用是否留有余量、AI Engine 阵列利用率是否在合理区间。若延迟抖动大,优先检查 NoC 仲裁与 DDR 访问冲突;若 AIE 利用率低,则检查数据切分与流接口是否成为瓶颈。
总体来看,Versal 的自适应 SoC 架构不是把多种计算资源简单堆叠,而是让它们各自承担最擅长的任务:PL 管接口与像素级确定性处理,DSP Engine 管规则化算术,AI Engine 管向量与矩阵推理,NoC 与 DDR 管数据搬运与缓存。理解这条分工线,才能在视频与智能视觉系统中做出合理的资源分配与性能预判。