ShiDianNao

ShiDianNao的出现是寒武纪在深度学习处理器上细分领域的更加深入。

前面介绍的DianNao针对的是大部分的深度学习神经网络算法,包括CNN和RNN等。
目前比较火而且应用面非常广的领域是计算机视觉,若在这个领域的算法精度实现巨大突破,那么,就将开启广阔的应用领域,能够真正明显地改变世界。比如自动驾驶/安防等等,利润丰厚的领域。
图像识别,这类算法主要采用CNN结构。
于是乎,开发专门针对CNN的ASIC就变得可行且有商业价值。

寒武纪为何在已经有了DianNao的基础上,还要设计ShiDianNao?

先来分析下,目前DianNao存在的缺陷。
众所周知,深度学习类的算法都是计算密集型和存储密集型。
这就造成了不低的功耗。
当这类芯片应用到终端嵌入式设备上有许多限制,比如智能手机,对芯片功耗有着严苛的要求。

因为DianNao中的数据会存储在DRAM中,而DRAM的读写会消耗非常大的功耗。
如果能够避免用DRAM存储数据,那么就能很大程度上降低功耗。
是的,就是基于这个想法,ShiDianNao诞生了。

ShiDianNao的想法就是,在实际应用时,将用于图像识别的人工智能处理器在物理位置上比较靠近图像来源(CMOS/CCD传感器),这样就避免了图像数据需要DRAM的存储。
另外,对于CNN算法,其中常用的一类CNN是共享权值的,这样权值的数量就不大,可以完整存放在片上SRAM中,从而使得权值也能避免存储在DRAM中。
这样处理后,整个系统就不需要DRAM做存储,从而大幅降低功耗。

上图将Acc(人工智能处理器)放置在离传感器很近的位置,直接从传感器获取图像数据,避免了DRAM的使用。

ShiDianNao架构
ShiDianNao的架构如下图所示。

整个架构与DianNao一脉相承。三个buffer分别存储权值/输入数据/输出数据。
核心逻辑是右边的NFU,也就是PE阵列。PE(processing elements),是最小的处理单元。
NFU的内部结构如下图所示。

从上图可以看出,权重是同时广播到所有的PE,输出也是同时传递到output,而输入数据则配合每个PE内部的两个fifo,有不同的输入规律,有时一次给所有PE提供输入,有时又只给一列提供输入其余列靠相邻右边的fifo提供,有时又给一列提供输入其余列靠相邻下方的PE的fifo提供。
单个PE结构如下图所示。

ShiDianNao与TPU1对比
与TPU的脉动矩阵相对比,发现二者都共用了权重和输入数据。但是细细分析,还是觉得TPU的脉动矩阵更加优秀高效。

比如,二者都共用了权值,ShiDianNao是统一获取权值,然后同一周期广播到所有PE。受限于信号在导线中传递速度,信号完整性以及时序同步的问题,ShiDianNao的PE阵列无法做到比较大的规模,且规模越大,需要的传输布线长度约长,传输时间越久,因此频率也无法做到很高。而且,每个PE都是单独出结果,也就是说,在PE阵列中央的PE也要直接给输出传递数据,这就意味着需要不菲的布线资源。所以,ShiDianNao的缺点还是比较明显的。

再比如,二者都共用了输入数据。ShiDianNao是在PE内部有两个FIFO来存储多个输入数据。而且因为输入数据共享的方式有几种不同的情况,所以就造成了为了共享数据,不同时刻,数据的传递方向是不同的,比如,可能是按列,从右往左传递,也可能是按行,从下往上传递。而反观谷歌的TPU,采用了脉动阵列,于是,输入数据只需要从阵列的左侧进入,然后所有输入数据都从左往右依次传递,传递方式非常简单,也不需要在PE中内置FIFO。
几种不同的输入数据传递方式,见下图所示。

另外,脉动阵列只有最下面一行的PE会输出计算结果,只有最左边的一列会接受输入数据,整体来说,所需要的布线资源就少很多。另外,因为PE所需的输入数据/权重相关信息/中间计算结果,都来自邻近的PE,不需要很长的走线,且能够轻易做到相邻PE的距离相同,那么相邻PE之间的信号传递时间就完全一致,可以保持整个脉动阵列工作在非常高的频率。

总体来看,个人认为还是谷歌TPU的脉动阵列更加高效。

计算卷积
下面看看ShiDianNao是怎么计算的。
以卷积为例。

Figure13(a)显示了一个2X2的PE阵列。所以可以同时计算4个输出。所需输入数据如图右侧的4个不同颜色方框所示。中间则表示了从cycle0开始,每个cycle,给每个PE的输入数据。可以看出,其中有部分数据可以反复利用。于是,这就给增加FIFO来实现数据复用提供了可能。
Figure13(b)则配合图(a),给出了每个cycle,每个PE中的FIFO应该如何存储输入数据,以及输出数据复用。

这种方式有个缺点,一般而言,图像数据存储在RAM中,都是按照一张图的数据集中存储在一起,那么,取同一张图像上的某些像素点作为输入数据时,每个周期的像素地址并未对齐,无法在一个周期中获取该周期需要的所有有效数据,难以满足PE阵列的需求,会降低计算速度。

状态机
整个ShiDianNao的运行,会因为算法中的不同计算而有不同的控制方式,这就需要用到状态机,如下图所示。

引入状态机控制ShiDianNao工作,就可以采用指令集的方式,描述需要的操作,然后由状态机执行。
这一点,比较赞。

猜测寒武纪的一系列芯片应该都采用了这样的状态机进行控制。

AI芯片:寒武纪ShiDianNao结构分析相关推荐

  1. 极客公园-零基础看懂全球 AI 芯片:详解「xPU」

    https://www.sohu.com/a/169062329_413980 随着 AI 概念火爆全球,做 AI 芯片的公司也层出不穷.为了让市场和观众能记住自家的产品,各家在芯片命名方面都下了点功 ...

  2. 寒武纪上市:AI芯片和普通芯片有何不同?全球AI芯片公司大全都在这里了

    来源:Zach小生 作者:腾讯新闻知识官.美国宾州州立大学硕士.芯片工程师Zach小生 7月20日,寒武纪正式在A股科创板上市,成为AI芯片第一股,引起了业内的热议和关注. 根据相关的资料显示,目前中 ...

  3. 上海人工智能再出重磅!寒武纪科技发布新一代云端AI芯片,联想、曙光、科大讯飞发布相关应用...

    来源:文汇网  作者:许琦敏.郭超豪 峰值功耗不超过110瓦,等效理论峰值速度可达每秒166.4万亿次定点运算.寒武纪科技在上海发布了中国第一款云端智能芯片--Cambricon MLU100芯片和板 ...

  4. 寒武纪找到了引领中国AI芯片走向世界的路

    大约6亿年前在地质学上被称作"寒武纪"的时代,大量无脊椎动物在短时间内出现"生命大爆发".如今,"寒武纪"这个名字再次被人们提及,它源自中科 ...

  5. 寒武纪官宣25亿美元估值融资,也有AI芯片公司要被收购了

    李根 发自 凹非寺  量子位 报道 | 公众号 QbitAI △ 寒武纪创始人陈天石.中科院副院长刘伟平.中科院计算所所长孙凝晖和陈云霁 今天(6月20日),AI芯片公司寒武纪正式官宣了新一轮融资,投 ...

  6. 寒武纪讯飞京东等合搞AI芯片评测标准,作者包括陈云霁陈天石

    问耕 发自 凹非寺 量子位 出品 | 公众号 QbitAI 尽管标题很长,但是还没写全. 详细一点的说法是:中科院计算所.寒武纪.科大讯飞.京东.锐迪科.AMD等六家携手合作,推出BenchIP.这是 ...

  7. 寒武纪“失速”,是AI芯片行业的阵痛?

    寒武纪又被捅上了风口浪尖. 2020年5月7日,上海证券交易所公布了寒武纪在科创板IPO的问询回复,涉及三个文件,<发行人及保荐机构回复意见>.<会计师回复意见>.<补充 ...

  8. AI处理器-寒武纪NPU芯片简介

    一.前言 当今时代,人工智能(AI)正被广泛运用于各式各样的应用上.人工智能的三大支撑是硬件.算法和数据,其中硬件指的是运行 AI 算法的芯片与相对应的计算平台.由于使用场景变多,所需处理的数据量变大 ...

  9. AI芯片:寒武纪DianNao,英伟达NVDLA和谷歌TPU1的芯片运算架构对比分析

    前面几篇博客分别分析了目前市面上能够找到的各家AI芯片的结构. 下面做一个阶段性的对比分析及总结. AI芯片运算架构对比 整体来看,NVDLA的架构与寒武纪的DianNao比较像.所以,单位资源的性能 ...

最新文章

  1. 【微信小程序企业级开发教程】后台用Java操作MySQL表
  2. java文件读取异常_关于Java:从文本文件读取会引发异常
  3. idea 编译显示source1.3不支持泛型(请使用source5或更高版本)
  4. SAP UI5 应用开发教程之二十八 - SAP UI5 应用的集成测试工具 OPA 介绍
  5. php 分页类视频,php分页类_你不可错过的一个php分页类
  6. A+B in Hogwarts (20)
  7. 赠书 | 集成学习方法及应用,破解AI实践难题
  8. 顶配 12699 元、没有 5G,“浴霸三摄”的 iPhone 到底长什么样?
  9. Adb命令笔记 --菜鸟的笔记
  10. Multisim14.0的详细安装步骤
  11. Redis_04_Redis客户端
  12. 一名数据分析师的工作职责和需要掌握的基本知识
  13. aidlearning开发python使用教程_极致安卓之—Aid Learning基于Jupyter开发Java和Python
  14. DLNA(明基的返校讲座)
  15. Excel 文本转数值的方法
  16. github下载文件时让输入用户名和密码
  17. GBASE 8C——SQL参考 5 全文检索
  18. C++学习笔记——第三天运算符和表达式
  19. audio自动播放遇到的问题
  20. 【Ubuntu】命令行的使用

热门文章

  1. 如何优雅的管理以及书写好代码
  2. Ubuntu安装MATLAB并设置桌面快捷方式!!!
  3. python 环境配置
  4. 凸包算法Graham扫描法
  5. LPC1768处理器开发板下载软件的使用方法
  6. DGV下面加入合计功能
  7. 经典DSR路由协议分析:路由发现
  8. 【关于Endnotes】
  9. Propensity Score Matching
  10. typora 快捷键使用(mac)