没有合适的资源?快使用搜索试试~ 我知道了~
神经网络加速器指令控制系统设计.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 187 浏览量
2022-12-01
09:09:32
上传
评论
收藏 948KB DOCX 举报
温馨提示
试读
12页
神经网络加速器指令控制系统设计.docx
资源推荐
资源详情
资源评论
1. 引言
近年来,深度神经网络(Deep Neural Networks,DNN)在语音识别、机器视觉、目标检
测等领域的优势不断显现,激活了各行各业对智能化的需求.但随着智能算法类型、计算复
杂度、应用场景的增加,出现了不少应用效果显著优于传统方法,但前推过程计算量和内
存资源占用量巨大的 DNN 网络模型
[1-2]
.作为网络主要组成层的卷积、全连接、池化等算子
对不具备并行性优势的传统处理器并不友好,易造成效率低下.因此,在应用需求最为强烈
的低能耗、高实时性智能化解决方案中,CPU 加专用加速器硬件协同异构设计已成为趋势
[3-4]
.神经网络加速器是为 DNN 算法运行定向优化的专用处理器,相比通用处理器在处理性
能、体积、功耗方面具有显著优势.
DNN 网络模型一般为多种层算子的组合.从遥感图像智能处理、手写体识别到语音识
别,需求各异的应用场景对算子类型及输入数据、滤波器的规模范围提出了多样的要求
[5-6]
.
常用 DNN 模型算子有近十种,部分算子类型又可细分为多种二级子分类.作为 DNN 网络
中必不可少的层,卷积算子是典型的例子,它具有算法类型和可调参数较多的特点.智能算
法中常见算子类型及主要配置参数项如下表 1 所示.
表 1 DNN 常见算子类型及配置参数
[1-6]
Table 1. Common DNN operator types and configuration parameters
算子层类型
算子二级分类
算子参数
卷积
常规卷积
膨胀卷积
DW 卷积
PW 卷积
池化
最大/最小池化
平均池化
卷积核长宽
特征图长宽
输入通道大小
步长
Padding
输出通道大小
全连接
/
输入通道大小
特征图长宽
Eltwise
元素乘
元素加
元素最大值
输入通道大小
特征图长宽
Concat
/
输出通道大小
上采样
近邻插值
反池化
输入通道大小
特征图长宽
LSTM
/
特征图长宽
隐藏层数及参数
堆叠层数
激活
Relu
Relu6
Leaky_relu
Sigmoid
Leaky relu 参数
Rulu6 参数
下载: 导出 CSV
| 显示表格
神经网络加速器对不同算子类型及参数配置范围的良好支持即是通用性的体现,但不
同算子数据流的明显差别给硬件设计带来挑战.Xilinx DPU 提出了输入、通道及特征图像素
点并行的计算架构
[7]
,具有大小核可选择,但所有类别计算核均不能支持 LSTM 及 Sigmoid
激活函数等算子,且 FPGA 平台资源量会对其支持算子类型及其参数配置范围造成进一步
限制.英伟达的开源神经网络加速器 NVDLA 提出了一种由数据流控制单元及 4 种算子处理
单元共同组成的硬件架构
[8]
,但对于 eltwise 及 LSTM 算子不能很好支持.
低功耗、高实时性嵌入式平台是智能算法的重要应用场景,因此要求神经网络加速器
具有高能效比.Jixuan Li
[9]
等提出的基于 FPGA 的神经网络加速器使用了内核分区技术来均
衡功耗和算力,但算子产生的中间数据需进行大量外存读写,造成计算阵列的等待和额外
能耗,且不能适配高分辨率图像(4K 以上)的输入.Huipeng Deng
[10]
等采用 Winograd 算法对
卷积的多维度进行灵活分解,设计了一款神经网络加速器,能效是 GPU GTX TITAN X 的
11.8 倍.但 Winograd 算法只适用于卷积算子,其他算子要通过额外模块实现.网络层算子间
普遍为串行结构,因此会导致计算中存在不可避免的计算资源闲置,影响能效.
强通用性和高能耗比是神经网络加速器架构设计及优化的重点也是难点,对最终产品
的应用场景是否广泛有直接的影响
[5]
.针对上述难点,本文提出输入数据解耦分块后进行高
并行流水处理的方法,提高整系统的通用性和能效比,设计了一种为 DNN 计算优化定制
的指令控制系统,主要包括指令集解析及指令配置信息分发调度模块两部分.
2. 神经网络加速器通用性与能效比
指令控制系统是神经网络加速器指令流和数据流的控制模块,作为加速器软硬件之间
的连接桥梁,负责参数配置、启动控制及流水处理调度.它对软件来说相当于硬件加速器的
抽象,在硬件层面也是整体架构的重要体现,对加速器整系统能效比及通用性有至关重要
的影响
[10-11]
.
神经网络加速器通用性设计的难点在于不同算子的数据流控制方式区别较大,架构设
计需要能适配不同算子模式,且内部缓存需兼容不同参数配置情况.设计中可通过提升架构
的灵活性,以及将复杂算子分解来实现.算子按硬件平台设定阈值,分为单元块,神经网络
加速器对不同单元块进行处理,拼接输出数据完成单层算子的计算.因此,图像、权重的数
据特征及算法等配置情况不再成为限制.
与常见的处理器计算任务相比,DNN 计算具有计算量大和访存量大的特点,加速器
架构中针对这两点的优化设计是凸显其能效优越性的关键,即高效调度存储、计算资源,
优化单位算力所需的硬件逻辑资源和外存交互数据量.架构设计需实现连续的并行流水计
算,调度大量计算单元(processing unit,PE)工作,提高峰值算力,且减少流水等待时的资
源闲置,使总功率中“有效功率”提高.但 DNN 巨大参数量带来的高片外访存不仅制约性能
提升,也带来很大比例的能耗.考虑到算子访存操作往往具有可解耦性及可重用性的特点,
在片上存储空间有限的情况下,通过循环分块的策略将输入数据拆分成不同的访存数据
流,可改变数据重用距离,降低访存带宽,改善访存拥塞.
综合以上 DNN 算子的特性和计算需求,本文对输入特征图及权重数据进行分块,解
耦不同输入分块间的数据流.特征图各维度分割成块后,每次访存读取单块的输入特征图,
并计算对应的输出数据.分块后的计算数据均存于片上缓存中,可大限度挖掘数据重用的可
能性.处理过程设计为粗细粒度两级流水并行,不同分块间进行粗粒度流水并行,分块内部
相邻卷积窗之间实现细粒度流水.分块后数据量趋于一致,消除了以层为单位时,算子间计
算量和访存量的巨大差异,可减少流水过程中的等待周期,提高并行效率.根据深度学习的
roofline 模型分析
[5-6]
,该方法可提高计算强度(计算量/访存量),使能效性接近硬件平台的理
论上界.
本设计通过指令集实现对各类型算子及不同输入尺寸的完备描述,将 DNN 模型“翻
译”给神经网络加速器,采用输入指令数据的方法向加速器传递算子参数信息.DNN 各类算
子分块后,再拆分成一些具有共通性的基本操作和配置项,如访存、乘累加、移位等,对
应到指令不同字段的参数.固定条数的指令结合为指令组,配置、调度单个数据分块的计算.
神经网络加速器解析输入指令组,根据指令配置信息灵活重构以良好适配当前算子分块类
型和参数.
3. 指令控制系统设计实现
3.1 神经网络加速器及其指令控制系统
神经网络加速器主要功能模块包括指令控制、数据输入、计算、输出四部分.指令控制
系统接收 CPU 的控制信号,从 DDR 读取指令数据到片内缓存中,根据指令具体内容,发
出对数据流和计算池互联重构的调度控制信号;数据输入、计算和输出三个执行模块根据
指令控制信息进行高并行数据搬移和计算.神经网络加速器模块连接情况如下图 1 所示.
图 1 神经网络加速器模块图
剩余11页未读,继续阅读
资源评论
罗伯特之技术屋
- 粉丝: 3701
- 资源: 1万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功