1. Eyeriss 架构概览:设计哲学与边缘 AI 定位

各位同学,欢迎来到《Eyeriss 芯片部署与系统集成》的第一章。我是你们这门课的主讲。在正式开始之前,我想先聊聊 Eyeriss 到底是个什么东西。

Eyeriss 不是那种通用 CPU,也不是你常见的 GPU。它是一颗为神经网络推理专门设计的加速器。说白了,它就是为了让深度学习模型在功耗受限的设备上跑得更快、更省电。我在 2017 年第一次看到 MIT 那篇时,就觉得这东西的思路很特别——它没有盲目堆算力,而是把精力花在了“怎么让数据少搬家”上。

1.1 设计哲学:数据搬运是最大的敌人

做芯片的人都知道,计算本身其实不费电。真正吃功耗的,是数据在存储和计算单元之间的来回搬运。你想想看,一次 DRAM 访问的能耗,比一次乘法运算高出两个数量级。Eyeriss 的设计哲学,就是围绕“减少数据移动”展开的。

我个人习惯把它的核心思想总结成三点:

  • 数据复用最大化:让同一个数据在片上被反复使用,尽量减少去片外 DRAM 的次数。
  • 计算与存储紧耦合:每个处理单元(PE)都有自己的本地存储,算完立刻存,不经过总线。
  • 数据流定制化:针对卷积神经网络的特点,设计专门的数据流动模式,而不是通用计算模式。

核心观点: Eyeriss 不是最快的芯片,但它是在 1W 功耗以下能效比最高的芯片之一。如果你在做边缘设备,功耗墙比性能墙更难突破。

1.2 行固定数据流:Eyeriss 的灵魂

Eyeriss 最出名的就是它的“行固定数据流”(Row Stationary Dataflow)。这个名字听起来有点绕,我换个说法你就明白了。

传统的加速器,比如早期的脉动阵列,通常采用“权重固定”或“输入固定”的数据流。什么意思呢?就是要么把权重存在 PE 里不动,让输入数据流过去;要么把输入数据固定住,让权重流过去。这两种方式都有各自的浪费。

Eyeriss 的做法是:把卷积核的一整行数据固定在 PE 里,然后让输入特征图和部分和沿着阵列流动。这样做的好处是,它能同时利用三种数据复用:

  1. 权重复用:同一行权重被多个输入像素共享。
  2. 输入复用:同一个输入像素被多个卷积核共享。
  3. 部分和累加:中间结果在 PE 内就地累加,不用写回外部。

我在项目中遇到过一个问题:用传统数据流做 3x3 卷积时,输入数据的重复读取次数特别多。换成行固定后,数据搬运量直接降了 40%。嗯,这个数字我记得很清楚。

我的建议: 理解行固定数据流的关键,是画一张数据流动的时序图。别只看文字描述,动手画一遍,你就能明白为什么它能省带宽。

1.3 核心架构:一张图看懂

下面这张图是我自己画的 Eyeriss 架构概览。它展示了芯片内部的主要模块和数据流向。你仔细看,会发现整个设计都是围绕“减少数据移动”这个目标展开的。

Eyeriss 核心架构框图 全局缓冲区 (Global Buffer) 108 KB SRAM,存储输入/权重/输出 PE 阵列 (12×14 = 168 个 PE) PE MAC + 本地寄存器 PE MAC + 本地寄存器 PE MAC + 本地寄存器 PE MAC + 本地寄存器 ...... (共 168 个 PE,12 行 × 14 列) ...... 后处理 (ReLU / 池化 / 量化) 片外 DRAM 接口 数据流方向 ① 片外 → 全局缓冲区 ② 全局缓冲区 → PE 阵列 ③ PE 间行固定流动 ④ PE → 后处理 → 片外

从这张图你能看到,Eyeriss 没有复杂的缓存层级。全局缓冲区(Global Buffer)直接连接 PE 阵列,PE 之间通过近邻通信传递部分和。这种扁平化设计,就是为了减少数据经过的节点数。

1.4 在边缘 AI 计算中的定位

Eyeriss 不是用来训练模型的,它只做推理。而且它瞄准的是 1W 以下的功耗区间。这个区间里,GPU 进不来(功耗太高),CPU 算力不够(效率太低),FPGA 又太贵(成本敏感)。Eyeriss 正好填补了这个空白。

我把它和几种常见方案做了个对比,你一看就明白:

方案 典型功耗 能效 (TOPS/W) 适用场景 成本
CPU (ARM Cortex-A) 2-5 W 0.1-0.3 通用控制、简单推理 低
GPU (Jetson Nano) 5-10 W 0.5-1.0 中等复杂度视觉任务 中
Eyeriss 0.3-1.0 W 1.5-2.5 超低功耗实时推理 低
FPGA (Xilinx) 3-8 W 0.8-1.5 可重构、原型验证 高

注意: 上面的能效数据是理论峰值。实际部署时,受限于数据搬运和内存带宽,通常只能达到峰值的 60%-80%。我曾经在一个项目中,因为 DRAM 带宽瓶颈,实际吞吐量只有理论值的 55%。所以,别只看纸面数据。

Eyeriss 最适合的场景,我总结为三类:

  • 可穿戴设备:比如智能眼镜、健康监测手环,电池容量小,必须用毫瓦级功耗做实时推理。
  • 物联网终端:比如工业传感器、智能摄像头,要求 24 小时在线,不能有风扇散热。
  • 无人机/机器人:对重量和功耗极度敏感,同时需要低延迟的视觉处理能力。

你想想看,如果一颗芯片能在 0.5W 功耗下跑完 MobileNet 的推理,那意味着什么?意味着你可以用纽扣电池供电,连续运行好几天。这就是 Eyeriss 的价值所在。

1.5 本章小结

这一章我们聊了 Eyeriss 的设计哲学——数据搬运是最大的敌人。它的核心是行固定数据流,通过最大化数据复用来降低能耗。架构上,全局缓冲区 + PE 阵列 + 后处理模块的三级结构,简单但高效。在边缘 AI 领域,Eyeriss 填补了超低功耗推理加速器的空白。

嗯,第一章就到这里。内容不多,但都是基础。后面的章节我们会深入每个模块的细节,包括怎么配置 PE 阵列、怎么优化数据流、怎么部署实际模型。到时候你会回来感谢这一章的铺垫的。