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 处理器阵列,适合更复杂的向量运算、矩阵乘和流式数据流图。视频流水线中,前者常出现在前端预处理,后者常出现在推理与后处理。

Versal 自适应 SoC 在视频流水线中的资源分工 视频输入 MIPI / SDI / HDMI 可编程逻辑 PL 接口时序 / 去马赛克 几何校正 / 像素级流水 DSP Engine 卷积 / 滤波 / 累加 定点与低精度浮点 AI Engine 向量 / 矩阵乘 流式数据流图推理 NoC 片上网络 多路视频流仲裁 · 带宽分配 · 低延迟路由 DDR 控制器 + DDR 内存 帧缓冲 · 参考帧 · 权重与特征图 多端口访问 · 带宽与延迟约束 标量处理系统 PS Arm 核 · 控制调度 · 协议栈 配置 AIE / PL · 任务编排 视频输出 / 智能决策结果 显示输出 · 编码码流 · 检测框 / 分类标签 / 跟踪 ID 前端 搬运 存储/控制 输出

二、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 上做视频流水线设计时,建议先画一张“数据流—资源”对应图,明确每一段数据由谁产生、由谁消费、经过哪条 NoC 路径、是否落 DDR。这张图往往比直接写代码更能提前暴露带宽和延迟问题。

总体来看,Versal 的自适应 SoC 架构不是把多种计算资源简单堆叠,而是让它们各自承担最擅长的任务:PL 管接口与像素级确定性处理,DSP Engine 管规则化算术,AI Engine 管向量与矩阵推理,NoC 与 DDR 管数据搬运与缓存。理解这条分工线,才能在视频与智能视觉系统中做出合理的资源分配与性能预判。