一种卷积神经网络硬件加速方法技术

技术编号:12063264 阅读:75 留言:0更新日期:2015-09-17 14:20
本发明专利技术公开了一种卷积神经网络硬件加速方法,方法步骤包括:1)将卷积层运算转换为m行K列的矩阵A、K行n列的矩阵B的矩阵乘;2)将矩阵结果C分为m行n列个矩阵子块;3)启动矩阵乘法器预取矩阵子块的操作数;4)矩阵乘法器执行矩阵子块的计算并将结果写回主存。本发明专利技术能够支持各种卷积神经网络结构,具有计算效率和性能高、对片上存储资源以及片外存储带宽需求较少、通信开销小、单元部件升级与改进方便、通用性好的优点。

【技术实现步骤摘要】

本专利技术涉及卷积神经网络的硬件加速技术,具体涉及一种卷积神经网络硬件加速 方法及其AXI总线IP核。
技术介绍
下一代智能设备处理器的核心挑战是要能够感知和理解人类的世界以提供增强 用户体验和连接用户喜好的生态环境、能和用户进行类似于人类的交互。卷积神经网络 (Convolution Neural Network,CNN)就是一种代表当前最先进发展水平的感知模型之一, 该模型能够将原始输入的数据逐层解析为符号,提取出复杂的多层组合特征,在机器视觉 和听觉系统方面取得了巨大的成功和广泛的应用,2013年MIT Technology Review杂志将 以卷积神经网络为代表的深度学习评为十大突破性技术之首。卷积神经网络算法是受到 人的视觉系统的启发,利用卷积操作来模拟真实神经元的感受野。深度神经网络的计算非 常密集,在目标检测等应用中(正向分类检测,而非训练),可以轻松突破Gops,达到数十 Gops-Tops的计算能力,因此利用深度神经网络进行实时分类检测都只能依靠高性能多核 CPU和GPU来完成,对受限于功耗的智能设备(例如机器人,UAV,消费电子,智能汽车,智能 监控系统等)而言,这些处理器能耗过于高昂而使得这些应用几乎是不可能任务。相比较 使用通用器件,构建专用加速电路,是满足卷积神经网络应用(CNN应用)性能与功耗需求 的一条可行之路。通常硬件加速器部件在性能与功耗上均优于通用处理器,约有IOOx以上 的能效提升。 智能设备的核心多为片上系统,片上系统(SoC, System on Chip)是指:Host处理 器、专用电路、外设控制器集成在一块芯片上所构成的异构系统,能够根据用户需求进行定 制。随着微电子技术的发展,一块芯片内部可以集成很多器件,这种在一块可编程芯片上集 成的系统称为SoC。由于SoC的规模非常庞大,涉及工作量很大,因此对已经设计好的模块 进行重复使用十分必要,解决这个问题的一个方法是使用IP核(Intellectual Property Core)。IP核在集成电路领域指已经过验证的、可重复利用的并具有确定功能的集成电路 模块。IP核的使用可以大大降低设计时间、成本,提高设计效率。现有百万门以上的芯片 70%的模块是IP核的重复使用。通常,在普通智能设备中的SoC系统对计算量的要求并不 高,主要依靠 Host处理器,少量应用还会用到集成的通用加速器,如向量单元,MGPU等。但 新兴应用对SoC的计算能力以及能耗要求日益增加,而通用微处理器的体系结构已经逐渐 不适合这类应用了。 由于CNN应用对处理速度的要求较高,SoC中的通用微处理器并不能满足其能效 要求,必须构建专用加速电路IP核。若采用集成专用硬件加速器IP核的SoC设计,目前 通常采用如下两种方案:一是ASIC(专用集成电路,Application-Specific Integrated Circuit)投片;二是 FPGA(现场可编程门阵列,Field Programmable Gate Array)。ASIC 投片需要大量的资金和人力资源,且不可修改。而采用FPGA既能获得有关硬件实现的参数 又具有灵活性,并且克服了 ASIC设计周期长和投资大的缺点,是比较理想的选择。近年来 FPGA业界龙头厂商Altera及XiIinx均推出了基于ARM处理器的FPGA SoC解决方案。AXI 总线是目前基于ARM处理器的SoC总线标准。由于ARM处理器的广泛使用,目前采用AXI 总线标准的IP核以其灵活易用性被广泛采用。因此,构建基于AXI总线的卷积神经网络加 速器IP核对于新兴的嵌入式视觉应用有着较大的意义。
技术实现思路
本专利技术要解决的技术问题是:针对现有技术的上述问题,提供一种能够支持各种 卷积神经网络结构、计算效率和性能高、对片上存储资源以及片外存储带宽需求较少、通信 开销小、单元部件升级与改进方便、通用性好的卷积神经网络硬件加速方法及其AXI总线 IP核。 为了解决上述技术问题,本专利技术采用的技术方案为: 本专利技术提供一种卷积神经网络硬件加速方法,步骤包括: 1)预先将卷积运算的输入特征图排列组成矩阵A,将卷积运算的输出特征图对应 的卷积核排列组成矩阵B,将卷积神经网络卷积层的卷积运算转换为m行K列的矩阵A、K行 η列的矩阵B的矩阵乘运算; 2)将矩阵乘运算的矩阵结果C分为m行η列个矩阵子块; 3)启动和主处理器相连的矩阵乘法器来对所有矩阵子块进行计算;在对矩阵子 块进行计算时,所述矩阵乘法器以数据驱动的方式产生矩阵坐标(Bx,By)形式的数据请 求,将矩阵坐标(Bx,By)映射为操作数在输入特征图中的真实主存地址read_addr,从主存 中读回操作数; 4)矩阵乘法器根据读回的操作数执行每一个矩阵子块的并行计算,并将计算结果 写回主存。 优选地,所述步骤1)中将卷积运算的输入特征图排列组成矩阵A具体是指将卷积 运算的每一个输入特征图的所有卷积窗口进行横向拼接,所述横向拼接具体是指先将每一 个卷积窗口组织成一个列向量,再将这些列向量拼接成矩阵A的一个行分块,然后将各个 特征图的行分块进行纵向拼接成为A矩阵;将卷积运算的输出特征图对应的卷积核排列组 成矩阵B具体是指将卷积运算的每一个输出特征图对应的卷积核作为矩阵B的一行。 优选地,所述步骤2)具体是指根据式(1)将矩阵乘运算的矩阵结果C分为m行η 列个矩阵子块;(1) 式(1)中,C表示矩阵乘运算的矩阵结果,A表示m行K列的矩阵八,化表示矩阵A 中的第i行,B表示K行η列的矩阵B,81表示矩阵B中的第i行,C i;」表示矩阵乘运算的矩 阵结果C的第i行j列个矩阵子块。 优选地,所述步骤3)中将矩阵坐标(Bx,By)映射为操作数在输入特征图中的真实 主存地址read_addr的步骤包括: 3. 1)接收数据请求(Bx, By)以及参数卷积核尺寸Ksize、卷积窗口数目win_num、 卷积窗口偏移stride、特征图大小image_size以及第一个输入特征图的首地址img_addr ; 将数据请求的行坐标Bx对卷积核尺寸Ksize进行除法运算得到余数操作数在卷积窗口中 的列偏移〇fs_cwin_y和商temp ;同时,将数据请求的列坐标By除以卷积窗口数目win_num 得到商卷积窗口在特征图中的行偏移cwin_x和余数卷积窗口在特征图中的列偏移cwin_ y ; 3. 2)将商temp除以卷积核尺寸Ksize得到商操作数在卷积窗口中所属的特征图 编号im_num和余数操作数在卷积窗口中的行偏移ofs_cwin_x ;同时,将卷积窗口在特征图 中的列偏移cwin_y乘以操作数在卷积窗口中的偏移stride、再加上操作数在卷积窗口中 的偏偏移〇fs_cwin_y得到操作数在特征图像中的列偏移img_y ; 3. 3)将操作数在卷积窗口中所属的特征图编号im_num乘以特征图大小image_ size的平方得到所属特征图像的偏移ofs_im ;同时,将卷积窗口在特征图中的行偏移 cwin_x乘以操作数在卷积窗口中的偏移stride、再加上操作数在卷积窗口中的行偏移 ofs_cwin_x得到操作数在特征图像中的行偏移img_x ; 3. 4)将操作本文档来自技高网
...
一种卷积神经网络硬件加速方法

【技术保护点】
一种卷积神经网络硬件加速方法,其特征在于步骤包括:1)预先将卷积运算的输入特征图排列组成矩阵A,将卷积运算的输出特征图对应的卷积核排列组成矩阵B,将卷积神经网络卷积层的卷积运算转换为m行K列的矩阵A、K行n列的矩阵B的矩阵乘运算;2)将矩阵乘运算的矩阵结果C分为m行n列个矩阵子块;3)启动和主处理器相连的矩阵乘法器来对所有矩阵子块进行计算;在对矩阵子块进行计算时,所述矩阵乘法器以数据驱动的方式产生矩阵坐标(Bx,By)形式的数据请求,将矩阵坐标(Bx,By)映射为操作数在输入特征图中的真实主存地址read_addr,从主存中读回操作数;4)所述矩阵乘法器根据读回的操作数执行每一个矩阵子块的并行计算,并将计算结果写回主存。

【技术特征摘要】

【专利技术属性】
技术研发人员:文梅乔寓然杨乾明沈俊忠肖涛王自伟张春元苏华友陈照云
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:湖南;43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1