最近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 SOC的更多相关文章

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

    最近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. Net 常用资源

    opensource: http://www.dotnetfoundation.org/projects https://github.com/dotnet/corefx Enterprise Lib ...

  2. Entity Framework 项目使用心得

    在博客园很久了,一直只看不说,这是发布本人的第一个博客. 总结一下在项目中,EntityFramework使用的一下经验拿来和大家分享,希望对大家有用~ 1.         在Entity Fram ...

  3. Django 框架之 Models

    1. 数据库配置 Django默认支持sqlite, mysql, oracle, postgresql 数据库: Django默认使用sqlite数据库,引擎名称:django.db.backend ...

  4. SqlServer SqlBulkCopy批量插入 -- 多张表同时插入(事务)

    这段时间在解决一个多个表需要同时插入大量数据的问题,于是在网上找了下,查到说用SqlBulkCopy效率很高,实验后确实很快,10万条数据只要4秒钟,用ef要用40秒.但是我的还需两张表同时插入,且需 ...

  5. Visual Studio 2017 新特性

    1. out-variables(Out变量) 以前,我们使用out变量的时候,需要在外部先申明,然后才能传入方法,类似如下: string ddd = ""; //先申明变量 c ...

  6. golang http.ResponseWriter valid json

      golang httpserver如果采用 fmt.Fprintf(w, result)来输出json数据时,若json数据包含%号,则会出现问题.   输出结果里面会包含(MISSING)字样, ...

  7. git别名

    git config --global alias.lg 'log --oneline --all --graph --decorate'

  8. 小技巧-如何加快github下载代码的速度(转)

    作为开发人员,github是大家的标配了,常常会苦恼于gitclone某个项目的时候速度太慢,看着控制台那几K十几K的龟速,吐血!! 原因很简单:github的CDN被伟大的墙屏蔽所致. 所以解决方案 ...

  9. mdf, ldf文件导入到sql server 2005的方法

    mdf, ldf文件导入到sql server 2005的方法 在实际的工作中, 有很多涉及到数据库资料的备份,转移, 恢复等方面的工作, 但是并不是所有的资料都是以.bak格式存在的, 比如说, 你 ...

  10. HTTP中的header头解析说明

    HTTP的头信息比较多,这里根据实际例子作出说明.下面图片是访问 http://kccdzz.com 的一个HTTP请求的header信息,可以看出Headers主要分为Response Header ...