1. Eyeriss 架构概览
大家好,欢迎来到《Eyeriss 架构入门与稀疏计算》的第一章。我是这门课的主讲,一个在芯片架构和 AI 加速领域摸爬滚打了十几年的工程师。今天咱们不聊虚的,直接切入正题,聊聊 Eyeriss 到底是什么,它从哪来,又要往哪去。
1.1 Eyeriss 发展背景
说起 Eyeriss,得先聊聊它诞生的那个年代。大概是 2016 年左右,深度学习开始爆发,但大家很快发现一个尴尬的问题:GPU 虽然算得快,但功耗太高,根本塞不进手机、无人机或者可穿戴设备里。我当时参与过一个边缘端的项目,用 GPU 跑一个简单的分类网络,散热片烫得能煎鸡蛋。嗯,那场景我印象很深。
就在这个节骨眼上,MIT 的 Vivienne Sze 团队站了出来。他们想的是:能不能做一个专门为神经网络设计的芯片?不是通用处理器,而是专用加速器。说白了,就是让芯片的每一颗晶体管都为了“卷积”和“矩阵乘”服务。Eyeriss 就是他们的答案。
Eyeriss 这个名字挺有意思,取自“鸢尾花”的英文。为什么叫这个?我猜是因为它的数据流架构像花瓣一样层层展开,优雅又高效。当然,这只是我的个人解读。
核心背景总结:
- 时间节点:2016 年,深度学习从云端走向边缘。
- 痛点:GPU 功耗高、体积大,不适合移动端。
- 目标:设计一款高能效、可编程的 DNN 加速器。
- 团队:MIT 的 Vivienne Sze 团队,后来衍生出 Eyeriss v1 和 v2。
1.2 Eyeriss 核心设计理念
Eyeriss 的设计理念,我总结为三个关键词:数据流驱动、稀疏计算、近存储计算。咱们一个一个说。
1.2.1 数据流驱动架构
传统处理器是“指令驱动”的——取指令、译码、执行。但 Eyeriss 不一样,它是“数据流驱动”的。什么意思呢?就是数据在芯片内部流动时,计算单元自动被触发。你想想看,这省掉了多少指令开销?
Eyeriss 提出了一个叫 Row-Stationary (RS) 的数据流。我刚开始看时,觉得这名字挺拗口。后来在项目中自己画数据流图,才明白它的精髓:把卷积的输入行、权重行、输出行绑定在一起,让它们在 PE(处理单元)阵列里高效流转。说白了,就是让数据尽量待在原地,减少搬移。
我的个人经验: 在芯片设计中,数据搬移的功耗往往比计算本身还高。RS 数据流的核心就是“少搬数据,多算数”。我曾经在一个项目里试过类似思路,能效比直接提升了 3 倍。
1.2.2 稀疏计算支持
这是 Eyeriss 的杀手锏。神经网络里有很多零值,尤其是经过 ReLU 激活函数后。传统加速器傻乎乎地算这些零,浪费功耗和带宽。Eyeriss 则能跳过这些零值,只算非零的部分。
怎么做到的?它给每个权重和激活值加了一个“有效位”标记。如果标记是 0,就直接跳过,不参与计算。我记得第一次在仿真里看到这个机制时,心里直呼“妙啊”。
注意: 稀疏计算虽然好,但也不是没有代价。它需要额外的控制逻辑来“跳过”零值,如果稀疏度不够高,这些开销反而会拖累性能。我建议在稀疏度超过 50% 的场景下再启用这个特性。
1.2.3 近存储计算
Eyeriss 把 SRAM 和 PE 阵列紧密耦合在一起。每个 PE 旁边都有本地存储,这样数据就不用频繁跑到片外 DRAM 去取。你想想看,片外访问一次要几百个周期,而片内只要几个周期。这个差距,就是能效的鸿沟。
Eyeriss v1 用了 108 个 PE,每个 PE 都有自己的寄存器文件。v2 更是把规模扩大到了 256 个 PE,并且支持更灵活的稀疏模式。我个人觉得,这种“存储跟着计算走”的思路,是未来 AI 加速器的必然方向。
1.3 Eyeriss 在 AI 加速中的地位
Eyeriss 在 AI 加速领域,属于“教科书级”的存在。它不是最猛的(论算力比不过 NVIDIA 的 GPU),也不是最省电的(论功耗比不过某些专用 ASIC),但它是最“优雅”的之一。
为什么这么说?因为它把架构设计的每个细节都公开了,里连 PE 的微架构、数据流的调度算法都讲得清清楚楚。很多后来的加速器,比如 Google 的 TPU 和华为的达芬奇架构,都或多或少借鉴了 Eyeriss 的思路。
我列个表,大家感受一下 Eyeriss 在行业中的位置:
| 加速器 | 发布年份 | 核心特点 | 与 Eyeriss 的关系 |
|---|---|---|---|
| Eyeriss v1 | 2016 | RS 数据流、稀疏跳过 | 开山之作 |
| Eyeriss v2 | 2018 | 稀疏感知、多粒度并行 | 迭代升级 |
| Google TPU v1 | 2016 | 脉动阵列、大算力 | 同期竞品,思路不同 |
| NVIDIA Volta | 2017 | Tensor Core、通用计算 | 通用 vs 专用 |
| 华为达芬奇 | 2018 | 3D Cube、可编程 | 借鉴了数据流思想 |
从这张表能看出来,Eyeriss 虽然算力不是最高的,但它的架构思想影响深远。尤其是“稀疏计算”和“数据流驱动”这两个点,现在几乎成了 AI 加速器的标配。
下面这张图,是我自己画的 Eyeriss 核心架构概览,帮你快速建立整体认知:
从这张图能看出来,Eyeriss 的架构非常清晰:全局控制器负责调度,GLB 和权重缓冲区负责数据供给,PE 阵列负责计算,输出缓冲区负责收集结果。而稀疏跳过逻辑则贯穿其中,确保零值不参与计算。