A 28nm SoC with a 1.2GHz 568nJ/Prediction Sparse Deep-Neural-Network Engine with >0.1 Timing Error Rate Tolerance for IoT Applications

单位:Harvard(哈佛大学)

这是一篇专门为DNN加速设计的芯片,在CNN加速芯片设计当道的今天也算是非常另类了~~不过能在ISSCC上发表,自然也有它的innovation,下面讲一讲。

就我当前的可以理解部分(知识结构不足哈,Razor timing violation detection这一块暂时不是特别清楚,留着以后再补),我觉得本文的创新点有:(1)稀疏计算,数据0不会参与运算;(2)采用sign-magnitude number format保存参数和计算;

DNN计算(就是一个向量*矩阵)是存在SIMD窗口的,一个输入同时可以计算多个节点。但是很容易想到,如果SIMD窗口太大,数据是重用了,但是参数一次要读太多会使得带宽变大。

因此,作者分析了数据和参数读取的相对比例,如图,可以看出,8通道的SIMD其效率是较高的,带宽也在合理范围内,同时可以在128b位宽的AXI总线下运行获得10x的数据有效重用率。

下面是整体架构图,是一个5阶段的SIMD流水架构,流程基本上是:

1、Host Processor将配置和输入数据载入CFG和IPBUF

2、乘累加器进行计算,数据由IPBUF读入,权重由W-MEM读入

3、在Activation步骤,进行偏置、激活操作,随后将数据写回XBUF(隐藏层结果)

4、向host发起中断请求,数据输出

分别对几个点展开讲一下:

XBUF:有两份,使得同时可以写结果到XBUF,又可以读数据用于计算;

Weight采用sign-magnitude number format:其实就是1bit符号位,后面是绝对值的原码,这样的好处是减少了补码表示带来的bit翻转率,既降低了功耗,也减少了出错率;

MAC Datapath:有8个并行的16bit MAC单元。因为采用SM,所以作者对同号和异号分开处理——其实就是同号乘结果累加,异号减去。

重点还有sparse怎么做。在MAC单元计算完(累加完成),然后要加上Bias,然后过RELU单元(也是因为RELU所以数据结果才稀疏,但是换其他激活函数就不行了),对于0数据(以及小于阈值的比较小的值),是不会写回XBUF的,同时Activation生产了SKIP信号存在临时的NBUF中。NBUF(512B SRAM)中维护的是参数中非零的index,DMA阶段会根据index来生成weight address,用于下个阶段从W-MEM取参数;这样就可以避免0数据的计算cycle了。

最后总结[1]:

DNN ENGINE——一款高能效的DNN加速器(568nj/pred@1.2GHz),时序容差>10^-1@MNIST 98.36%

-Parallelism:10x的数据重用@带宽128b/cycle

-Sparcity:+4x吞吐,-4x能耗

-Resilience:+50%吞吐/-30%能耗(2/Razor)

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

[2] ISSCC2017, A 28nm SoC with a 1.2GHz 568nJ/Prediction Sparse Deep-Neural-Network Engine with >0.1 Timing Error Rate Tolerance for IoT Applications

ISSCC 2017论文导读 Session 14: A 28nm SoC with a 1.2GHz Prediction Sparse Deep-Neural-Network Engine的更多相关文章

  1. 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 ...

  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 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network

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

  4. 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 ...

  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 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 ...

  7. 论文翻译:2022_PACDNN: A phase-aware composite deep neural network for speech enhancement

    论文地址:PACDNN:一种用于语音增强的相位感知复合深度神经网络 引用格式:Hasannezhad M,Yu H,Zhu W P,et al. PACDNN: A phase-aware compo ...

  8. 【论文笔记】Malware Detection with Deep Neural Network Using Process Behavior

    [论文笔记]Malware Detection with Deep Neural Network Using Process Behavior 论文基本信息 会议: IEEE(2016 IEEE 40 ...

  9. 论文阅读(XiangBai——【AAAI2017】TextBoxes_A Fast Text Detector with a Single Deep Neural Network)

    XiangBai——[AAAI2017]TextBoxes:A Fast Text Detector with a Single Deep Neural Network 目录 作者和相关链接 方法概括 ...

随机推荐

  1. LeetCode——Pascal's Triangle II

    Description: Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3 ...

  2. Android 简单案例:onSaveInstanceState 和 onRestoreInstanceState

    import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widg ...

  3. 【BZOJ1787】[Ahoi2008]Meet 紧急集合 LCA

    [BZOJ1787][Ahoi2008]Meet 紧急集合 Description Input Output Sample Input 6 4 1 2 2 3 2 4 4 5 5 6 4 5 6 6 ...

  4. http://blog.csdn.net/ym19860303/article/details/8462450

    http://www.himigame.com/iphone-cocos2d/444.html 很多游戏中,便于开发就会直接采用Cocos2d提供的字体库来使用,但是因为提供的种类很多,那么Himi利 ...

  5. go练习2-go的学习资料

    好吧 我承认,有自己添加的内容也有从别人的blog 中 ctrl + c 的 官方:http://golang.org ,经常被封 中文手册的翻译:http://code.google.com/p/g ...

  6. java父类可以强制转化成子类吗?

    转自:http://blog.csdn.net/ld422586546/article/details/9707997 Java中父类强制转换成子类的原则:父类型的引用指向的是哪个子类的实例,就能转换 ...

  7. ping 10.13.5.233

    3. 环境 URL选择器 tableView ping 10.13.5.233

  8. 在Silverlight 5 项目中创建单元测试项目

    下载安装Silverlight ToolKit:测试框架程序集路径:C:\Program Files (x86)\Microsoft SDKs\Silverlight\v5.0\Toolkit\dec ...

  9. 13.Github使用

    我们一直用GitHub作为免费的远程仓库,如果是个人的开源项目,放到GitHub上是完全没有问题的.其实GitHub还是一个开源协作社区,通过GitHub,既可以让别人参与你的开源项目,也可以参与别人 ...

  10. matplotlib-曲线和折线案例

    matplotlib-曲线和折线案例 import matplotlib.pyplot as plt import numpy as np x = np.linspace(-5, 5, 100) pr ...