2. EyeQ硬件架构与感知计算平台

EyeQ系列芯片是Mobileye车道与目标感知算法的物理载体。理解EyeQ的硬件架构,本质上是要回答一个问题:当摄像头以每秒数十帧的速度输入图像时,芯片内部的数据究竟经过哪些计算单元、在什么存储层次之间流动、哪些环节会成为瓶颈。只有把这条链路看清楚,才能理解为什么某些感知算法在EyeQ上能实时运行,而另一些看似更精确的算法却无法落地。

异构计算单元的分工

EyeQ采用典型的异构多核架构,其计算资源并非同质,而是按任务特性划分为几类专用单元。以EyeQ4为例,片上集成了4个MIPS Warrior系列CPU核、6个VMP(Vector Microcode Processor,向量微码处理器)和2个PMA(Programmable Macro Array,可编程宏阵列)。EyeQ5则进一步扩展为8个CPU核、18个VMP和2个PMA,并增加了硬件加速的深度神经网络单元。

CPU核负责控制流密集的任务:图像采集调度、多帧跟踪的状态管理、目标列表的维护与输出、与整车CAN或以太网的通信。它们的主频通常在1GHz量级,单核性能有限,因此不适合承担像素级运算。VMP是EyeQ架构中最具特色的部分,它是一种面向向量运算的可编程处理器,擅长对图像块做并行的卷积、梯度、积分图等操作。车道线检测中的边缘响应、方向滤波、RANSAC拟合前的特征点筛选,大多在VMP上完成。PMA则更接近粗粒度可编程阵列,用于加速固定的、高吞吐的矩阵或模板运算,例如候选目标区域的快速评分。

这种分工带来的直接约束是:算法设计必须与计算单元的能力匹配。一个在CPU上写成的逐像素循环,即使逻辑正确,也可能因为无法向量化而在VMP上效率极低。因此感知算法的实现往往需要把同一任务拆成“CPU做控制、VMP做像素、PMA做评分”的多级流水。

内存层次与数据流

EyeQ的内存层次是理解其性能边界的关键。芯片内部包含多级存储:每个计算簇带有紧耦合的本地SRAM,片上还有共享的L2 SRAM,外部则通过LPDDR4接口连接DRAM。EyeQ4的片上SRAM总量约2.5MB,EyeQ5约4MB,而外部DRAM可达8GB以上。

关键事实是:片上SRAM的访问延迟和带宽远优于外部DRAM,但容量极小。一帧1080p灰度图像约2MB,若同时保留多帧、多尺度金字塔和中间特征图,片上SRAM很快就会被占满。因此EyeQ感知流水线的核心设计原则是“让数据尽量在片上完成消费”。典型做法是:图像以条带(slice)或瓦片(tile)为单位从DRAM搬入片上SRAM,VMP在片上完成该区域的滤波与特征提取,只把压缩后的中间结果写回DRAM,而不是把整帧原始像素反复搬运。

下面的SVG展示了EyeQ感知计算平台的数据流架构:从摄像头输入到DRAM、片上SRAM、VMP/PMA/CPU各单元,再到目标与车道输出,以及各环节的带宽与容量约束。

摄像头输入 1080p @ 30fps MIPI CSI-2 外部 DRAM LPDDR4 8GB 带宽 ~25GB/s 延迟 ~100ns 片上 SRAM L2 共享 ~4MB 带宽 ~200GB/s 延迟 ~10ns 异构计算单元 CPU 核 控制/跟踪/通信 4~8 核 @1GHz VMP 向量核 卷积/梯度/滤波 6~18 个 PMA 阵列 模板评分/矩阵 2 个 感知任务映射 车道线:边缘响应→方向滤波→RANSAC拟合 目标检测:候选区域→特征提取→分类评分→跟踪 感知输出 车道线多项式系数 · 目标列表(位置/速度/类别) 通过 CAN / Ethernet 发送至整车 原始帧 条带搬运 片上消费 中间结果回写 DRAM(压缩后) 关键约束与优化空间 • 片上SRAM容量有限 → 必须分块处理,避免整帧驻留 • DRAM带宽是瓶颈 → 减少中间结果回写,提高片上复用 • VMP适合向量化 → 算法需按SIMD方式组织数据布局 • CPU核数有限 → 控制流任务需精简,避免频繁上下文切换 • PMA适合固定模板 → 评分函数应尽量规整、可阵列化 • 多帧跟踪状态小 → 可常驻片上,减少DRAM往返

对感知算法的约束与优化空间

把上述架构特征翻译成算法设计语言,可以得到几条明确的约束。第一,像素级操作的代价主要由数据搬运决定,而非计算本身。如果一段车道线检测代码在每一帧都对整幅图像做全图卷积,那么DRAM带宽会迅速成为瓶颈。优化方向是引入感兴趣区域(ROI)机制:先用低分辨率或低代价的粗检测确定车道线大致区域,再只对该区域做高精度处理。第二,VMP的向量宽度和指令集决定了哪些算子能被高效执行。例如,3×3卷积、Sobel梯度、积分图、双线性插值通常有良好支持,而动态规划、图割等不规则算法则更适合放在CPU上。第三,多帧跟踪所需的状态量很小,可以常驻片上SRAM,避免每帧从DRAM读取历史状态。

一个具体的教学示例可以说明这种权衡。假设要在EyeQ4上实现车道线检测,输入为1280×960灰度图,帧率30fps。若采用全图Canny边缘检测加Hough变换,边缘检测阶段每帧需读取约1.2MB像素,若全部从DRAM读取,仅这一项就消耗约36MB/s的带宽,看似不大,但加上多尺度金字塔、梯度计算和后续拟合,总带宽会迅速逼近DRAM上限。更实际的做法是:将图像按64行条带分块,每块搬入片上SRAM后依次完成高斯滤波、Sobel梯度、非极大值抑制和边缘点提取,只把边缘点坐标(每帧约数千个)写回DRAM。这样DRAM流量从“整帧像素多次往返”降为“整帧像素一次读入加少量点写出”,带宽压力下降一个数量级。

另一个值得注意的优化空间是计算与搬运的重叠。EyeQ的DMA引擎可以在VMP处理当前条带的同时,预取下一段条带到另一块SRAM缓冲区。这种双缓冲(double buffering)模式要求算法按条带独立处理,且条带之间没有全局依赖。对于车道线检测,边缘提取和局部拟合可以条带化,但最终的曲线拟合需要全局信息,因此通常放在CPU上对边缘点集合做一次集中处理。这种“VMP做局部、CPU做全局”的分工,正是EyeQ感知流水线的典型形态。

在实际工程中,判断一个感知算法是否适合EyeQ,可以先问三个问题:像素级运算能否向量化并分块?中间数据能否在片上完成消费?全局控制逻辑是否足够轻量?三个问题都通过,算法才有实时落地的可能。

从架构到工程决策

理解EyeQ硬件架构的最终目的,是把它转化为可执行的工程决策。当算法精度不达标时,可以选择增加VMP上的特征通道数或提高输入分辨率,但这会直接增加带宽和片上存储压力;当帧率不足时,可以降低ROI外的处理精度,或把部分评分任务从CPU迁移到PMA。这些决策的依据,都来自对计算单元能力、内存层次容量和带宽的量化认识。EyeQ不是一颗通用处理器,它的性能边界由数据流决定,而不是由主频决定。感知系统工程的核心工作,就是在这些边界内找到精度与实时性的最优平衡点。