【技术实现步骤摘要】
一种神经网络硬件加速器
本申请涉及人工智能
,特别涉及一种神经网络硬件加速器。
技术介绍
目前,针对神经网络的硬件加速器有Google的TPU、NVDIA的NVDLA、寒武纪等等。主流的神经网络硬件加速器针对CNN(即ConvolutionalNeuralNetworks,卷积神经网络)网络做了大量了的计算优化,并在硬件计算的过程中针对卷积以及不同大小的卷积核卷积运算做了针对性的优化。可见,当前整个神经网络硬件加速器的架构偏向于针对CNN的优化,这一部分也确实是神经网络算法中对算力要求最高的一部分。虽然这些神经网络硬件加速器同时也可以用于RNN(即RecurrentNeuralNetwork,循环神经网络)神经网络,但是对RNN神经网络的计算优化很少,计算功效比太差。也就是说现有同样的硬件,如果用来算CNN,资源浪费很少,但是如果用来算RNN,资源浪费很多。资源浪费多意味着功耗算力比较低,这样,神经网络硬件加速器的架构在功耗效率上和成本上便没有优势可言。
技术实现思路
有鉴于此,本申请的目的 ...
【技术保护点】
1.一种神经网络硬件加速器,其特征在于,所述硬件加速器的流水线架构包括:/n指令获取模块,用于获取指令;/n指令译码模块,用于进行指令译码操作;/n半精度浮点运算模块,用于进行神经网络算法中的一维向量运算,以得到相应的一维向量运算结果;/n激活函数计算模块,用于通过查找表的方式对所述神经网络算法中的激活函数进行计算,以得到相应的激活函数计算结果;/n浮点后处理单元,用于对所述神经网络算法实现过程中的位于所述激活函数计算模块的计算之后的数据进行浮点运算;/n缓存模块,用于缓存所述神经网络算法实现过程中的中间数据;/n分布于流水线中的与所述指令译码模块处于同一级的寄存器文件,用 ...
【技术特征摘要】
1.一种神经网络硬件加速器,其特征在于,所述硬件加速器的流水线架构包括:
指令获取模块,用于获取指令;
指令译码模块,用于进行指令译码操作;
半精度浮点运算模块,用于进行神经网络算法中的一维向量运算,以得到相应的一维向量运算结果;
激活函数计算模块,用于通过查找表的方式对所述神经网络算法中的激活函数进行计算,以得到相应的激活函数计算结果;
浮点后处理单元,用于对所述神经网络算法实现过程中的位于所述激活函数计算模块的计算之后的数据进行浮点运算;
缓存模块,用于缓存所述神经网络算法实现过程中的中间数据;
分布于流水线中的与所述指令译码模块处于同一级的寄存器文件,用于暂存所述神经网络算法实现过程中的相关指令、数据和地址;
写回级模块,用于进行数据写回操作。
2.根据权利要求1所述的神经网络硬件加速器,其特征在于,所述寄存器文件,包括:
向量寄存器组、用于与加法器进行配合以协助所述指令译码模块完成地址的寻址和计算处理的地址寄存器组、用于存储非向量计算结果的普通寄存器组、为所述半精度浮点运算模块和所述激活函数计算模块提供服务的以减少流水线等待时间的功能部件寄存器组以及为循环指令和跳转指令提供服务的循环寄存器组。
3.根据权利要求1所述的神经网络硬件加速器,其特征在于,所述指令译码模块,包括:
第一级译码单元,用于完成地址的寻址和计算处理,以及对地址寄存器的数值进行更新,并对所述缓存模块发起访问请求;
第二级译码单元,用于将所述缓存模块中的数据读到相应的寄存器,以及将寄存器数据写入至所述缓存模块。
4.根据权利要求1所述的神经网络硬件加速器,其特征在于,所述半精度浮点运算模块,包括:
一个或多个半精度...
【专利技术属性】
技术研发人员:李文江,黄运新,冯涛,徐斌,王岩,李卫军,
申请(专利权)人:深圳大普微电子科技有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。