meton-robean / PaperNotes

记录阅读各类paper的想法笔记(关注体系结构,机器学习系统,深度学习,计算机视觉)
23 stars 1 forks source link

Cambricon: An Instruction Set Architecture for Neural Networks #4

Open meton-robean opened 4 years ago

meton-robean commented 4 years ago

Cambricon: An Instruction Set Architecture for Neural Networks

meton-robean commented 4 years ago

论文阅读参考

寒武纪神经网络处理器效能如何 ? - 杨军的回答 - 知乎

Selection_080 Selection_081

meton-robean commented 4 years ago

作者:杨军 链接:https://www.zhihu.com/question/41469046/answer/123965490 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

I. 采用基于load-store访存模式的RISC指令集。具体指令的选取,根据workload的类型进行计算层面的抽象得出。对于深层神经网络来说,主要的计算和控制任务有几种: 向量计算 矩阵计算 标量计算 分支跳转 其中向量计算、矩阵计算、标量计算属于标准的计算工作。形式上看起来与通用处理器没有区别,主要的区别在于细节的支撑上。比如,对于神经网络计算任务中的高频操作,就可以直接提供硬件指令集的支持,典型的例子就是应用于drop-out的Random-Vector指令,用于在一条指令内部为一个向量进行快速随机初始化,以及应用于激活层的Vector-Expotential,用于在一条指令内部为一个向量进行快速的非线性变换(这里稍微展开一些,针对神经网络的计算任务类型,在硬件层面,还可以为指数运算这样的高耗时操作进行特定优化,比如通过高阶Taylor展开来近似逼近指数运算,因为神经网络往往对于一定程度的数值误差表现出较强的tolerance,这也是一系列模型压缩技术得以有效运转的关键基石)。 而分支跳转的逻辑在神经网络计算任务里,并不像常规计算任务那么复杂,所以指令集的设计上并不需要提供丰富的分支跳转逻辑的支持,相应地,在结构设计环节,也可以减少在分支预测上花费的设计&实现精力。

meton-robean commented 4 years ago

使用Scratchpad Memory而不是寄存器堆来作为计算数据的主存储。因为AI算法的计算任务与常规的多媒体计算任务不同,指令所操作的数据长度往往是不定长的,所以应用于多媒体指令优化(SIMD)的寄存器堆就不如Scrathpad Memory灵活。

meton-robean commented 4 years ago

由于标量操作在AI算法中不是高频操作,但是又必须有,所以可以有cache结构,但是可以简化cache层级等设计,这是trade-off.

meton-robean commented 4 years ago

为了高效访问Scratchpad Memory,采用了多个matrix DMA+Scratchpad Memory分块+crossbar的方式来处理并发的访问请求问题。

Selection_083

疑问点matrix DMA 是跨在计算单元和 Scratchpad Memory之间的DMA吗? DMA控制逻辑可以放在计算器部件存储和片上存储之间?之前一直以为 DMA是挂载CPU的DRAM上的,现在看起来可以定制? DMA资料 DMA设计调研