2. EyeQ芯片硬件架构解析
EyeQ系列芯片是Mobileye面向高级驾驶辅助与自动驾驶打造的系统级芯片(SoC)。它的核心设计思想不是把CPU做得更快,而是承认一个事实:智能驾驶的感知任务里,绝大部分算力消耗在规则明确、数据密集的卷积与图像预处理上,只有少量逻辑判断、状态管理和控制流需要通用处理器。因此EyeQ从第一代起就采用异构计算路线,把不同性质的负载分派给最擅长的单元,再用片上网络和存储层次把它们粘合成一个整体。
理解EyeQ架构,最有效的方式是把它看成一个"分工明确的小型工厂":CPU是调度与决策的管理者,GPU负责图形与部分并行计算,DSP处理信号与后处理,而VMP、MPC这类专用视觉加速器则是流水线上效率最高的专用工位。下面这张图给出EyeQ典型SoC的内部结构关系,包括各计算单元、片上存储层次与总线互连。
CPU:调度者而非算力主力
EyeQ的CPU通常采用MIPS或ARM架构的多核集群,主频并不追求极致,单核性能也远不及同期的手机SoC。它的职责是运行操作系统、管理任务调度、执行感知结果的融合与决策逻辑、处理车辆网络通信。换句话说,CPU负责"想清楚要做什么",而不是"把每个像素算完"。在典型配置中,CPU占用率应保持在合理余量内,一旦CPU成为瓶颈,往往说明有本应交给加速器的任务被错误地放在了通用核上。
GPU与DSP:通用并行与信号处理
GPU在EyeQ中承担图形渲染、可视化以及部分规则较灵活的并行计算任务,例如点云处理中的部分操作。DSP则更偏向信号处理与后处理,如滤波、特征提取、目标跟踪中的数值运算。两者都不是CNN主干的主力,但在整个感知流水线中起到衔接和补充作用。实际开发中需要明确:把卷积主干放到VMP上,把后处理放到DSP上,把可视化放到GPU上,是效率最高的分工方式。
VMP与MPC:专用视觉加速器
VMP(Vector Microcode Processor)是EyeQ最具代表性的专用加速器。它本质上是一个可编程的向量处理器,通过微码调度大量并行的乘加单元,专门高效执行卷积、池化、激活等CNN核心操作。它的能效比远高于通用CPU或GPU,因为硬件结构就是为这类规则计算定制的。MPC(Multi-threaded Processing Cluster)则是一个多核RISC阵列,擅长像素级并行处理,例如光流计算、深度估计、稠密像素操作。两者配合,构成了EyeQ感知算力的主体。
片上存储层次与总线结构
异构计算最大的挑战不是算力,而是数据搬运。EyeQ采用多级存储层次:每个计算单元拥有私有的L1紧耦合SRAM,用于存放当前正在处理的局部数据;多个单元共享L2 SRAM,用于中间特征图与跨单元数据交换;再往外是外部LPDDR/DDR,容量大但带宽和延迟代价高。总线方面,EyeQ使用片上互连网络(NoC)或AXI主从结构,把各计算单元、存储控制器和输入接口连接起来。DMA引擎负责在存储层次之间搬运数据,双缓冲机制让计算与搬运重叠,从而隐藏延迟。
一个常见的性能陷阱是:算法在VMP上算得很快,但整体帧率上不去,原因往往是特征图在L2与外部DDR之间反复搬运,带宽成为瓶颈。因此,优化时不仅要看算力,还要看数据局部性——尽量让数据在L1和L2内完成复用,减少对外部存储的访问。
功耗管理机制
车载芯片对功耗和散热有严格约束,EyeQ的功耗管理通常包含三个层次:DVFS(动态电压频率调节)根据负载实时调整电压与频率;时钟门控在单元空闲时关闭时钟,降低动态功耗;电源域隔离则在不使用某些模块时将其断电,降低静态功耗。实际开发中,如果感知任务有明显的间歇性,合理利用这些机制可以显著降低平均功耗,但要注意唤醒延迟对实时性的影响。
| 计算单元 | 典型职责 | 适合的负载 | 优化关注点 |
|---|---|---|---|
| CPU | 调度、决策、通信 | 控制流、融合逻辑 | 避免占用过高,防止成为瓶颈 |
| GPU | 图形、通用并行 | 可视化、点云部分操作 | 与感知主流水线解耦 |
| DSP | 信号处理、后处理 | 滤波、跟踪、数值运算 | 与VMP/MPC的数据交接 |
| VMP | CNN主干加速 | 卷积、池化、激活 | 微码调度效率、数据复用 |
| MPC | 像素级并行 | 光流、深度、稠密操作 | 多核负载均衡 |
把上述单元、存储和总线放在一起看,EyeQ的架构逻辑就清晰了:它不是一颗"全能"芯片,而是一套经过精心分工的计算系统。开发者的核心任务,是让每一类负载落到最合适的单元上,并让数据在存储层次中尽可能少走冤枉路。做到这两点,EyeQ的能效优势才能真正发挥出来。