zoukankan      html  css  js  c++  java
  • 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 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

  • 相关阅读:
    HBase with MapReduce (MultiTable Read)
    HBase with MapReduce (SummaryToFile)
    HBase with MapReduce (Summary)
    HBase with MapReduce (Read and Write)
    HBase with MapReduce (Only Read)
    Hbase中的BloomFilter(布隆过滤器)
    HBase的快照技术
    How To Use Hbase Bulk Loading
    Cloudera-Manager修改集群的IP
    Java中的HashSet和TreeSet
  • 原文地址:https://www.cnblogs.com/yihaha/p/7265294.html
Copyright © 2011-2022 走看看