ucb-bar/gemmini
硬件与物联网面向计算机体系结构研究者的 RISC-V DNN 加速器全栈生成与评估平台。
项目介绍
Gemmini 是一个面向深度神经网络硬件的全系统、全栈探索与评估平台。它以 RoCC 加速器形式接入 Rocket 或 BOOM 核,使用自定义 RISC-V 指令,并用 Chisel 硬件描述语言实现,隶属 Chipyard 生态 ucb-bar/gemmini。目标用户是体系结构研究者和硬件工程师,关注加速器本身之外的存储层次、软件栈和数据流选择如何共同影响 DNN 性能。
加速器核心是两层结构的脉动阵列,输入输出存放在显式管理的分 bank 暂存区,另有带加法器、缩放单元和激活单元的累加器 SRAM。硬件采用解耦的存取/执行架构,分为 execute、load、store 三个控制器,由 ROB 检测跨控制器依赖,两个 DMA 通过私有 TLB 按虚拟地址搬运数据。CISC 型 loop 指令会自动分块并展开超过阵列尺寸的矩阵乘和卷积 README 架构说明。
生成参数覆盖阵列尺寸(tileRows、tileColumns、meshRows、meshColumns)、数据流(输出驻留、权重驻留或运行时可选)、暂存区与累加器容量和 bank 数、元素数据类型、队列深度以及 DMA 总线宽度。可选功能包括 move-in 时的缩放和可配置激活函数。
快速使用
Gemmini 在 Chipyard 内开发,先满足 Chipyard 依赖要求,然后克隆 Chipyard、执行初始化脚本、加载环境,并在仓库内的生成器目录安装 Gemmini 软件库:
git clone https://github.com/ucb-bar/chipyard.git
cd chipyard
./build-setup.sh
source env.sh
cd generators/gemmini
make -C software/libgemmini install
接着构建测试程序,其中包含小矩阵测试和 ResNet50 等 DNN 负载:
cd chipyard/generators/gemmini/software/gemmini-rocc-tests
./build.sh
生成的 RISC-V 二进制位于 build/,分 baremetal、Linux 和 proxy-kernel 三种变体 README 第 49–52 行。再构建 Verilator 周期精确模拟器并运行一个小型 baremetal 负载:
cd chipyard/sims/verilator
make CONFIG=GemminiRocketConfig
make CONFIG=GemminiRocketConfig run-binary BINARY=../../generators/gemmini/software/gemmini-rocc-tests/build/bareMetalC/template-baremetal
只验证功能时可用带 Gemmini 扩展的 Spike,速度更快 README 第 95–106 行。MLSys 2022 教程覆盖构建不同类型加速器、增加自定义数据类型、编写程序和性能计数分析 教程。
使用约束
三种二进制不能混用:Linux 二进制动态链接,需要运行 Linux 的 SoC;baremetal 二进制无操作系统、无虚拟内存;proxy-kernel 二进制依赖 RISC-V Proxy Kernel,堆空间有限,部分在其他模式下正常的程序可能失败 riscv-pk。大型 DNN 负载在周期精确模拟器上可能运行数天,端到端运行建议使用 FireSim 的 FPGA 加速仿真 FireSim。转置与数据流的合法组合有限制,见 config_ex 的许可表 config_ex。loop 指令和 max-pooling 标注为实验性,可能变化。仓库许可证显示为 NOASSERTION,复用前需确认具体条款。硬件和软件都在 Chipyard 中构建,Chipyard 提交版本需要匹配。
HotRepo 点评
Gemmini 在 HotRepo 的全部语言日榜和 Star 快照中没有记录,因此这里没有可报告的热度趋势。现有材料能确认的是一个始于 2018 年的长期学术项目,积累 1,555 Star 和 305 Fork,根植于伯克利的 Chipyard 生态,并有 DAC 2021 论文支撑 引用信息。它的价值主要在研究与评估:生成器把数据流、数据类型和存储参数暴露出来,便于做架构对照实验,仓库自带的 ISA 级测试则提供了可复现实验的具体起点。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。