- 题目:Res-DNN: A Residue Number System-Based DNN Accelerator Unit
- 时间:2019
- 期刊:TCAS-1
- 研究机构:伊朗德黑兰大学
1 缩写 & 引用
- RNS: Residue Number System余数系统
- BNS: binary number system
2 abstract & introduction
RNS的思路是把一个二进制表示的数用几个位宽更小的数表示,这样算乘加的话可以节省资源和能耗,但是过去的工作没有用RNS做符号检测、比较、scaling的
本篇论文的主要贡献:
- 提出了一个完全基于RNS的DNN架构
- 在各个模块用硬件实现了RNS操作
- 为row stationary提供一个高效的memory层次结构
- 用霍夫曼编码节省memory存储带宽
3 背景
3.1 余数系统
假设选取一组模
(
3
,
5
,
7
)
(3, 5, 7)
(3,5,7),则17可以表示成
(
∣
17
∣
3
,
∣
17
∣
5
,
∣
17
∣
7
)
=
(
2
,
2
,
3
)
(|17|_3, |17|_5, |17|_7)=(2, 2, 3)
(∣17∣3,∣17∣5,∣17∣7)=(2,2,3),即都用余数表示,这就可以表示从[0, 3x5x7)这么多的数
都用RNS表示之后,相加就是对应位置相加,相乘就是对应位置相乘
假设X=4,Y=23
好处是:可以用更小的位宽操作,而且可以很方便的并行
3.2 压缩算法
- 游程编码
- Lempel-Ziv77(LZ77)
- 霍夫曼编码
3.3 相关工作
常用的除数有
{
2
n
−
1
,
2
n
,
2
n
+
1
−
1
}
\left \{ 2^n-1, 2^n, 2^{n+1}-1 \right \}
{2n−1,2n,2n+1−1}或
{
2
n
−
1
,
2
n
,
2
n
+
1
}
\left \{ 2^n-1, 2^n, 2^n+1 \right \}
{2n−1,2n,2n+1}
为了解决溢出问题,可以动态的调整除数