寒武纪神经网络处理器效能怎样( 二 )

寒武纪神经网络处理器效能怎样

控制类和数据存取类指令比较简单,就是提供了分支跳转以及数据的加载和写入(相对于Scratchpad Memory),不再细说。通过一段Cambricon的代码示例,可能会有助于建立一些比较感性的理解:寒武纪神经网络处理器效能怎样

上面这段代码,基于Cambricon指令集,实现了一个全连接线性变换层+sigmoid激活层的逻辑。如果有熟悉MIPS指令集的同学,看到上面这段代码应该会感觉非常亲切。基于这套指令集,文章propose了一个加速器的结构设计原型:寒武纪神经网络处理器效能怎样

如果有读过量化体系结构教材(《Computer Architecture: A Quantitative Approach》)的同学,看到上面这张结构图的第一反应恐怕会觉得这个结构图比较简单。从文章的介绍来看,这就是一个标准的MIPS指令集的流水线结构实现,由取指、译码、发射、寄存器访问、执行、写回结果、提交七级流水组成,没有支持乱序执行,是否支持多发射从论文中还看不出端倪。为了优化数据存取的信息,在Scratchpad Memory和矩阵/向量计算部件之间通过DMA来加速数据传输的效率。在结构图里,引入了一个L1 Cache,主要是为标量数据的存取提供Cache支持,我的理解,标量数据的data locality会比matrix/vector数据要强,所以对这种场景提供cache支持有助于系统整体性能的保证,而考虑到标量数据上的操作在神经网络中的整体操作里占比不高(见下图),所以cache的控制逻辑也可以适当简化,这是一个设计的trade-off。寒武纪神经网络处理器效能怎样

指令集和结构设计是Cambricon最核心的部分,剩下的就是Benchmark的选取以及评测指标的内容。Benchmark方面,文章选取了十类神经网络,分别由MLP(DNN) 、CNN、RNN、LSTM、Autoencoder、Sparse Autoencoder、Boltzmann Machine、RBM、SOM以及Hopfield Neural Network组成。评估环境的搭建上,部分使用了硬件仿真工具(Cambricon和DaDiannao),部分使用了真实物理硬件(GPU/CPU),性能对比在cycle级对比完成。评估指标上,主要关注了指令集表达效率(code density)、性能以及功耗这几个方面。具体的实验指标参考下面的图表:寒武纪神经网络处理器效能怎样

寒武纪神经网络处理器效能怎样

寒武纪神经网络处理器效能怎样

对于硬件设计背景出身的同学,可能还会关心基于Cambricon指令集的芯片layout,也就是每个功能模块在最终芯片上占据了多少比例的实地面积以及对应功耗,从下面这张图来看,无论是从芯片面积占比上还是从功耗占比来看,矩阵部分都是大头,这也比较符合我们对芯片上运行的workload的直觉理解。寒武纪神经网络处理器效能怎样

最后再说说我的一些感受。从体系结构设计的角度来看,这篇文章并没有提出多少突破性的东西,在文章中作者也专门提到了这一点(在文章的section IV.里讲到并没有使用到一些新兴的技术,比如最近在最新款的Nvidia GPU里用到的3d stacking技术),恰恰相反,从体系结构设计的角度来看,文章中提到的技术都可以说是一些“大路货”的技术,无论是指令集的设计,还是微结构设计使用的大体上都是10年以前的技术方法。真正有创新性的东西,还是在于这篇文章找到了一种开创性解决问题的方式,横跨了多个domain,使用传统的经典技术,针对日益popular的神经网络应用,提出了一种在能耗比、灵活性、性能上获得极佳trade-off的解决方案。这是一种框架性的贡献。在这个框架下,实际上可以在每个局部模块不断细化,加入更为复杂,新兴的技术。比如存储部分为了获取更好的访存性能,就可以将新近的存储技术引入。另外,在指令集设计上,可以加入对workload里更多类型逻辑的支持,比如受限的计算精度支持。在微体系结构上,是否可以结合特定的计算任务类型,在指令的调度部分做更多的考究,来更为高效地支持更为复杂的网络连接(比如Relay Back-propagation这样的多路连接的网络结构)。这可能才是这篇文章能够获得ISCA 2016最高peer review score的原因。References:. Shaoli Liu. Cambricon: An Instruction Set Architecture for Neural Networks", in Proceedings of the 43rd ACM/IEEE International Symposium on Computer Architecture. ISCA, 2016.. Scratchpad Memory. Scratchpad memory. A Brief Introduction to The Dianao Project. http://novel.ict.ac.cn/diannao/. Olivier Temam. The Rebirth of Neural Networks. https://hal.inria.fr/file/index/docid/535554/filename/ISCA2010web.pdf. ISCA, 2010. . Hugo Larochelle. An Empirical Evaluation of Deep Architectures on Problems with Many Factors of Variation. ICML, 2007. . ISCA 2016有哪些看点. ISCA 2016 有哪些看点? - 杨军的回答. Research of Olivier Temam. http://pages.saclay.inria.fr/olivier.temam/homepage/research.html. Intel Labs. From a Few Cores to Many: A Tera-scale Computing Research Overview. Intel Whitepaper, 2006.. Olivier Temam. A Defect-Tolerant Accelerator for Emerging High-Performance Applications. ISCA, 2012.. Inria - Inventors for the digital world. ISCA 2016有哪些看点. ISCA 2016 有哪些看点? - 杨军的回答. RISC. Reduced instruction set computing. CISC. Complex instruction set computing. MIPS Instruction Set. MIPS instruction set. Direct Memory Access. Direct memory access. Jishen Zhao, Guangyu Sun, Gabriel H. Loh, and Yuan Xie. Optimizing GPU energy efficiency with 3D die-stacking graphics memory and reconfigurable memory interface. ACM Transactions on Architecture and Code Optimization, 2013.. Li Shen. Relay Backpropagation for Effective Learning of Deep Convolutional Neural Networks. Arxiv, 2016.. Tianshi Chen. DianNao: A Small-Footprint High-Throughput Accelerator for Ubiquitous Machine-Learning. ASPLOS 2014.. Yunji Chen. DaDianNao: A Machine-Learning Supercomputer. Micro, 2014..Zidong Du. ShiDianNao: Shifting Vision Processing Closer to the Sensor. ISCA, 2015.. Daofu Liu. PuDianNao: A Polyvalent Machine Learning Accelerator. ASPLOS, 2015.


推荐阅读