Redesigned Eyeriss with Pipeline Implementation

Redesigned Eyeriss with Pipeline Implementation

Summary

Verilog, Chisel3, Quarus II

  • 在原有架构基础上引⼊ PE 内部 Pipeline 和并⾏乘加模块

Background

Eyeriss是MIT于2016年提出的CNN加速器,其核心在于尽可能多的数据复用。本project以学习的目的复现了Eyeriss的基本功能,学习Chisel3的基本使用方法。


Main Idea

PE-Cell Architecture

考虑到实际情况中kernel size普遍在7及以下,此设计与论文中PE-Cell的实现略有不同。本设计使用7个MAC并行计算,由于乘/加间有Reg.其PE-Cell有内部的pipeline。

得到以上仿真结果


PE-Array Architecture

Eyeriss独特的地方也在于2d-conv的实现上,每个PE可以独立完成1d-conv,PE-Array使用横行+斜线的方式输入数据实现2d-conv。

以上是我们提出的基于Eyeriss的由于Psum只在PE-Column内部流动,Columns之间的控制是解耦合的。从而有机会把PE内部的Pipeline在整个Columns上实现。


Simulation


Outcome


Start First Calculation: counter=0x227

Start Second Calculation: counter=0x39B

Time cost for one calculation: T=0x39B-0x227=0x174=372 cycles
Amount of operation for one calculation(100% util rate): M=12x14x32x7x(12-7)x2=376320(12x14 Array,fmap=12, kernel=7)
Calculation force (100% util rate, 200MHz): N=M*f/T≈202 Gflops

Junzhuo Zhou

HaoYu lab, SUSTech