最近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. Python全栈day28(描述符应用)

    描述符的使用 python是弱类型语言,及参数的赋值没有类型限制,下面通过描述符机制来实现类型限制功能 描述符应用1.py class Typed: def __get__(self, instanc ...

  2. UNION DISTINCT

    w同结构表读写合并. DROP PROCEDURE IF EXISTS w_ww_amzasin; DELIMITER /w/ CREATE PROCEDURE w_ww_amzasin() BEGI ...

  3. 解决64位debian下无法安装ia32库的问题

    原文地址:http://crunchbang.org/forums/viewtopic.php?pid=277918 因为64位debian源中并没有包括32位的软件包,所提安装ia32会提示依赖无法 ...

  4. 记录一次gitlab->github企业版的迁移

    cd到你想要存放新的工程的文件夹内, 1.使用git clone --mirror命令制作旧git的镜像 $ git clone --mirror git@git.aaaa.com:mario/my- ...

  5. mongodb批量插入数据

    年前由于公司业务需要,后台需要获取流水记录,需要每天定时跑脚本,将流水记录跑入库里边,每天大概有个一百万左右,使用的数据库是mongodb,考虑到一条一条录入数据,100多万会跑断,就想着批量录入数据 ...

  6. 剑指Offer——二进制中1的个数

    题目描述: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 分析: 加入一个数的二进制位是XXX...XXX1000...000,那么这个数减去1,就会变成XXX...XXX0111 ...

  7. Apache mahout 源码阅读笔记-DataModel之UserBaseRecommender

    先来看一下使用流程: 1)拿到DataModel 2)定义相似度计算模型 PearsonCorrelationSimilarity 3)定义用户邻域计算模型 NearestNUserNeighborh ...

  8. Git 使用配置

    应用情景:使用Git前需要配置 user.name 和 user.email 信息.Git利用这些信息记录谁进行了什么样的操作.Git属于分布式版本管理系统,开发者很多,配置这个就相当于自报家门,告诉 ...

  9. 关闭linux的防火墙

    有两道防火墙 第一道 iptables -L iptables -F systemctl disable firewalld 第二道 [root@python3 ~]# getenforce Enfo ...

  10. Mybatis框架学习总结-Mybatis框架搭建和使用

    Mybatis介绍 Mybatis是一个支持普通SQL查询,存储过程,和高级映射的优秀持久层框架.Mybatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.Mybatis可以使 ...