最近ISSCC2017大会刚刚举行,看了关于Deep Learning处理器的Session 14,有一些不错的东西,在这里记录一下。

A 2.9TOPS/W Deep Convolutional Neural Network SoC in FD-SOI 28nm for Intelligent Embedded Systems

单位:STMicroelectronics(意法半导体)

这是一篇很综合芯片SOC设计,总体架构如下:



本文采用的DSP簇作为加速阵列,包含8个DSP簇,每簇内含2个32位的DSP,4通道16KB的I-Cache,64KB的本地RAM和64KB的共享RAM;提供面向DCNN的ISA扩展;采用2D-DMA。DSP内部结构如下:

采用层次化存储结构:4MB共享RAM(4x16x64KB),每个64KB的单元都可以单独控制是否启用。共享存储通过64位的bus进行数据传输。L2 Cache通过编程可控,用于存储特征图及参数(feature maps and parameters),每一层memory的能效对比如下图。

硬件加速子系统:8个卷积加速器+16个CDNN定制流数据DMA、支持数据流可重配置的计算、专用IP(H264/MJPEG/2图像修剪单元/边缘检测单元/4色度卷积/…)



本设计是典型的CNN专用加速引擎+DSP通用处理的思路(业界很多这样类似的设计)——卷积在专用加速器里做,其他的(ReLU/Pooling/FC/LRN等)在DSP做。下面是Alexnet为例的运行切分;这样设计有一个很大也很容易想到的优势,就是专用阵列和DSP可以同时运行。

The DSPs can operate in parallel with CAs and data transfers, synchronizing by way of interrupts and mailboxes for concurrent execution.



下面是专用加速引擎比较有代表性的一个设计,就是每个kernel和data都是分batch做的,每个batch的临时结果再累加到一起。(这里batch是指channel的一批,和多张图像批处理的batch不同意思)

但是有8个CA,是不是简单的全并行处理呢(指每个CA处理一个Kernel的全部计算,分别输出)?并不是。论文中设计了并行,链式,以及混合式三种执行方法。

DCNN专用加速单元CA:核心计算部件为36个16×16的MAC计算单元+13输入的属性加法单元。通过ACCUM进行迭代以累加完成卷积运算;对参数,是进行8bit压缩存储的,计算前恢复到16bit(有损)计算;文中说的压缩实际上是一个非线性量化计算,而非传统的压缩。

论文中描写CA:

Various kernel sizes (up to 12×12), batch sizes (up to 16), and parallel kernels (up to 4) can be handled by a single CA instance

如果支持各种变化呢?看下图右半部分:对每一个窗口,先进行列的累加,再把列累加结果累加起来;CA支持一个最大一次读12个words的line-buffer(最大支持12*12的卷积,也就是一列的大小)(在卷积计算中,stride=1情况时,简单的line-buffer确实很匹配卷积的计算过程,每次窗口只需要更新一列,剩余的列都可以reuse,可以说是数据在两个窗口间最大化重用,减少了从RAM里面读数据的次数,降低了功耗),放了36个MAC,就可以在一些其他变化中做到灵活改变kernel的数量。

如果做12 * 12的卷积,那就只能做1个kernel;

如果是图中3 *3的情况,对一个kernel计算而言,每次只需要进3个新数据,加上旧数据6个总共9个数据,这样就可以做4个独立的kernel并行,共享这9个数据,因此需要36个MAC并行计算;

Batch size的大小也可以调整,只要buffer中存的下,可以根据每一层的情况,切分到不同的CA,或者一个CA计算更多的batch size,影响输入输出的bandwidth。

下面是整芯片的数据:

以及几页关于跑alexnet的数据:





整体来看,性能相当高——应该是利用率很高(buffer大,带宽小,基本全在计算),所以即使只有36*8个MAC也跑的效果很好。由此可见,很多时候我们更应该想办法把利用率做上去,而不是一味增加MAC单元。不过本篇的RAM有4MB,也确实很大。


总结:极低功耗的DCNN加速SoC,用于嵌入式及IoT场景[1]

1、基于数据流可重配置的硬件加速框架

2、面向DCNN中大型卷积运算加速的参数化硬件加速单元

3、针对不同方向进行数据等并行化发掘

4、DSP的ISA具有可扩展性

5、FD-SOI28工艺下的超宽电压阈DVFS实现

6、ALexNet峰值能效达2.9TOPS/W


最后还有两页不是很懂,懂了再写:关于低功耗设计的



参考资料

[1] https://reconfigdeeplearning.com/2017/02/08/isscc-2017-session-14-slides14-1/5

[2] A 2.9TOPS/W Deep Convolutional Neural Network SoC in FD-SOI 28nm for Intelligent Embedded Systems

ISSCC 2017论文导读 Session 14 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network的更多相关文章

  1. ISSCC 2017论文导读 Session 14 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network SOC

    最近ISSCC2017大会刚刚举行,看了关于Deep Learning处理器的Session 14,有一些不错的东西,在这里记录一下. A 2.9TOPS/W Deep Convolutional N ...

  2. ISSCC 2017论文导读 Session 14 Deep Learning Processors,DNPU: An 8.1TOPS/W Reconfigurable CNN-RNN

    转载请注明,本文出自Bin的专栏http://blog.csdn.net/xbinworld,谢谢! DNPU: An 8.1TOPS/W Reconfigurable CNN-RNN Process ...

  3. ISSCC 2017论文导读 Session 14:A 288μW Programmable Deep-Learning Processor with 270KB On-Chip Weight

    A 288μW Programmable Deep-Learning Processor with 270KB On-Chip Weight Storage Using Non-Uniform Mem ...

  4. ISSCC 2017论文导读 Session 14:ENVISION: A 0.26-to-10 TOPS/W Subword-Parallel DVAFS CNN Processor in 28nm

    ENVISION: A 0.26-to-10 TOPS/W Subword-Parallel Dynamic-Voltage-Accuracy-Frequency-Scalable CNN Proce ...

  5. ISSCC 2017论文导读 Session 14:A 0.62mW Ultra-Low-Power Convolutional-Neural-Network Face-Recognition Pro

    A 0.62mW Ultra-Low-Power Convolutional-Neural-Network Face-Recognition Processor and a CIS Integrate ...

  6. ISSCC 2017论文导读 Session 14: A 28nm SoC with a 1.2GHz Prediction Sparse Deep-Neural-Network Engine

    A 28nm SoC with a 1.2GHz 568nJ/Prediction Sparse Deep-Neural-Network Engine with >0.1 Timing Erro ...

  7. 深度学习FPGA实现基础知识10(Deep Learning(深度学习)卷积神经网络(Convolutional Neural Network,CNN))

    需求说明:深度学习FPGA实现知识储备 来自:http://blog.csdn.net/stdcoutzyx/article/details/41596663 说明:图文并茂,言简意赅. 自今年七月份 ...

  8. Deep Learning 19_深度学习UFLDL教程:Convolutional Neural Network_Exercise(斯坦福大学深度学习教程)

    理论知识:Optimization: Stochastic Gradient Descent和Convolutional Neural Network CNN卷积神经网络推导和实现.Deep lear ...

  9. Neural Networks and Deep Learning(week2)Logistic Regression with a Neural Network mindset(实现一个图像识别算法)

    Logistic Regression with a Neural Network mindset You will learn to: Build the general architecture ...

随机推荐

  1. bzip2 --安装

    下载源文件安装包: http://www.bzip.org/downloads.html 解压: tar -xzvf bzip2-1.0.6.tar.gz 进入解压后的目录: cd bzip2-1.0 ...

  2. linux-----遇到的问题----tab键不补全sh文件不能运行

    在linux上部署tomcat,进入bin目录后 遇到了tab键不补全sh文件不能运行的情况. 如果自己输入sh文件名后也会报错: [x@web bin]$ ./startup.shbash: ./s ...

  3. HDU 4722 数位dp

    Good Numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  4. 洛谷P1637 三元上升子序列

    P1637 三元上升子序列 48通过 225提交 题目提供者该用户不存在 标签云端 难度提高+/省选- 时空限制1s / 128MB 提交  讨论  题解 最新讨论更多讨论 为什么超时啊 a的数据比较 ...

  5. 关于NUL

    问题:正常的order by不起作用了,如下图 分析:使用notepad++打开,发现 NUL以字符'\0'作为字符串结束标志.'\0'是一个ASCII码为0的字符,从ASCII码表中可以看到ASCI ...

  6. OpenCV---直方图反向投影

    一:直方图反向投影的方法 二:二维直方图的表示 (一)直接显示 def hist2D_demo(image): hsv = cv.cvtColor(image,cv.COLOR_BGR2HSV) hi ...

  7. bzoj 3884 欧拉定理

    求$$2^{2^{2^{2^{…}}}} mod n$$的值,其中n有1e7. 老实说这题挺有趣的,关键是怎么化掉指数,由于是取模意义下的无限个指数,所以使用欧拉定理一定是可以把指数变为不大于$\va ...

  8. HDU3068 最长回文 MANACHER+回文串

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=3068 Problem Description 给出一个只由小写英文字符a,b,c...y,z组成的字符 ...

  9. 使用JavaScript实现使用鼠标画线的效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. 一般处理程序、ASP.NET核心知识(5)

    初窥 1.新建一个一般处理程序 新建一个一般处理程序 2.看看里头的代码 public class MyHandler : IHttpHandler { public void ProcessRequ ...