技术摘要:
本发明公开了一种可重配置的卷积硬件加速器,所述加速器包括输入缓存模块,可重配置的卷积计算模块和自定义计算模式模块;所述自定义计算模式模块根据配置信息中的自定义输入信息和卷积层结构参数信息,控制加速器的数据流从而使卷积硬件加速器运行在不同的计算模式, 全部
背景技术:
卷积神经网络(Convolutional Neural Network,CNN)已经广泛应用与各种计算 机视觉的应用中,如图像分类、目标检测、视频监控等。然而,算法中大量的数据移动与其计 算复杂性对终端设备的功耗以及性能带来的巨大的挑战,阻碍了CNN算法在智能手机、智能 汽车、智能家居领域的应用部署。 目前已经出现许多对于CNN算法进行硬件加速的方法,设计均是针对一种或者一 类网络设计了一种或者两种高效的计算模式,但是由于CNN层参数的差异性,当模型变化 时,固定的计算模式会造成能耗与性能的损失。此外,它们的计算单元并没有考虑对各种卷 积参数的可配置性、可扩展性,当网络结构与参数与计算单元配置不符合时会带来资源利 用率的下降与性能的降低。 本发明设计了一种可重配置的卷积硬件加速器设计方法,所述方法可根据配置信 息对卷积硬件加速器进行重配置,使得所设计的卷积加速器适用多种不同的卷积层结构。 卷积硬件加速器包括:输入缓存模块,可重配置的卷积计算模块和自定义计算模式模块;所 述输入缓存模块对输入数据缓存的同时,可根据配置的输入特征图参数信息生成对应有效 窗口;可重配置的卷积计算模块根据配置的卷积核参数信息,对输入的有效窗口完成对应 的卷积运算;自定义计算模式模块可以根据自定义输入的配置信息与卷积层结构信息,通 过数据重排单元控制加速器的数据流从而使卷积硬件加速器运行在不同的计算模式。文献 Angel-Eye(Guo K ,Sui L ,Qiu J ,et al .Angel-Eye:A Complete Design Flow for Mapping CNN onto Customized Hardware[C]//2016IEEE Computer Society Annual Symposium on VLSI(ISVLSI) .IEEE,2016.)使用计算单元阵列进行计算,每个计算单元包 括一组卷积、加法树等,所有的计算单元共享同一个输入特征图。针对不同的卷积尺寸,该 文献采用“拼接”与“填充”的方式对非标准卷积核尺寸运算进行适配。而这种方法对于非标 准卷积核尺寸来说,会产生一定数量的无效运算,对时间以及硬件资源都有所浪费。 文献SysArrayAccel(Wei X,Yu C H,Zhang P,et al.Automated Systolic Array Architecture Synthesis for High Throughput CNN Inference on FPGAs[C]//Design Automation Conference.ACM,2017.)使用脉动阵列的实现运算加速卷积层,计算单元只与 相邻的计算单元相连,简化了路由,省去了大型选择器。但是采用的脉动阵列由于尺寸配置 是相对固定的,当输入数据尺寸较脉动阵列尺寸较小时,会造成时间上的停顿浪费。 以上硬件加速器设计实现一定通用性的过程中对于硬件资源的可复用性没有充 分考虑,从会造成硬件资源的闲置以及性能的损失。 4 CN 111738433 A 说 明 书 2/8 页
技术实现要素:
本发明克服现有卷积神经网络加速器方案在可配置性、可扩展性方面的不足,提 出了一种可重配置的卷积硬件加速器。 本发明的目的至少通过如下技术方案之一实现。 一种可重配置的卷积硬件加速器,其特征在于,包括输入缓存模块,可重配置的卷 积计算模块和自定义计算模式模块; 所述自定义计算模式模块根据配置信息中的自定义输入信息和卷积层结构参数 信息,控制加速器的数据流从而使卷积硬件加速器运行在不同的计算模式,将数据流输入 输入缓存模块; 所述输入缓存模块对输入的数据进行缓存的同时,根据配置信息中的特征图参数 信息生成对应的有效窗口输入卷积计算模块; 所述可重配置的卷积计算模块根据配置信息中的卷积核参数信息,对输入的有效 窗口完成对应的卷积运算,实现可重配置的卷积硬件加速器。 进一步地,自定义计算模式模块中,首先对源输入数据进行块状划分得到若干数 据块;之后以数据块为基本单位,根据配置信息中的自定义输入信息,对数据块的输入顺序 进行排序,并根据该排序将数据块中的数据以串行输入的方式输出至输入缓存模块;根据 不同的配置信息,按照卷积计算时所使用的滑窗,生成与之匹配的数据流;不同的数据块排 序方式就是不同的输入数据流,不同数据流意味着不同的计算模式; 所述自定义输入信息包括输入数据长度即输入特征图的高度H、输入数据宽度即 输入特征图的宽度W、输入通道数Ni、输出通道数No和卷积核尺寸的参数K。 进一步地,所述块状划分具体如下: 将H与W分别除以一个固定尺寸Z,得到的结果按照向上取整的原则得到两个数即 为可以划分出的数据块的行个数L与列个数J; 除了最后一行与最后一列的数据块尺寸外,首先将其余块都划分为边长为Z的正 方形块;最后一行的宽度等于剩余未划分区域的行宽度,最后一列的高度等于剩余未划分 区域的列高度; 为了保证不会遗漏所有的卷积窗口,所有相邻的数据块之间共享部分数据,横方 向上所有相邻的数据块之间共享列数据,纵方向所有相邻的数据块之间也会共享K-1行数 据;从而保证了不论是行相邻还是列相邻,划分后的数据块内数据所括的有效窗口与划分 前完全相同。 进一步地,所述输入缓存模块包括移位存储单元即移位寄存器LINE_IN、二维存储 单元即一组二维寄存器LINE_VEC以及控制单元;控制单元对移位存储单元和二维存储单元 的上移与有效输出操作进行使能控制;所述特征图参数信息包括输入特征图的高度H与宽 度W,有效窗口的高度h与宽度w,以及卷积的步长S;将特征图参数信息输入至控制单元,完 成输入缓存模块的配置 输入缓存模块中,输入的数据以串行输入的方式输入至移位存储单元的最右侧, 每个周期移位存储单元内的数据都会向左移动一位;根据输入特征图的高度H与宽度W,利 用上移操作,将串行输入的数据转换为对应具有行坐标和列坐标的二维数据存储在二维存 储单元;根据有效窗口的高度h与宽度w,确定有效窗口内数据的起始坐标,将起始坐标映射 5 CN 111738433 A 说 明 书 3/8 页 到二维存储单元的对应位置,有效窗口按照从左到右,再至上而下的顺序移动,有效窗口内 数据的坐标也随之也不断移动,每个周期有效窗口整体移动的步长为S,从而不断并行输出 各个有效窗口内的数据至输入卷积计算模块。 进一步地,所述卷积计算模块包括全并行的乘法单元、可配置的加法树单元以及 权重缓存单元;所述卷积核参数信息包括卷积核尺寸K以及步长S; 卷积计算模块中,将输入缓存模块输出的各个有效窗口内的数据依次分配到全并 行乘法单元的各输入,根据步长S的不同,窗口生成的顺序也不同,输入数据使用全并行乘 法单元内部的乘法器与储存在权重缓存单元中的权重数据进行乘法操作,得到一组乘法结 果并输入至可配置的加法树单元,根据卷积核尺寸K,选择不同的加法树单元运算结果,得 到的加法树单元运算结果与权重缓存单元中的偏置数据相加即为卷积运算结果;K的取值 范围根据常用卷积参数取值范围为1、3、5、7;所述权重数据和偏置数据通过外部存储器获 取。 进一步地,所述乘法单元包括54个并行的乘法器;所述可配置的加法树单元由6个 9输入的改进性加法树为基础单元组成,根据卷积核尺寸K值的不同可重配置为不同的运算 模式,具体如下: 当K=1时,此时为特殊情况,后续不需要加法运算,所以乘法单元的输出直接可以 与偏置数据相加; 当K=3时,加法树单元运算结果有6个,分别为6个改进型加法树的输出; 当K=5时,加法树单元运算结果有2个,分别为前3个改进型加法树输出的和以及 后3个改进型加法树输出的和; 当K=7时,加法树单元运算结果只有一个,为6个改进型加法树的输出进一步相加 的和; 在得到加法树单元的结果后,进一步使用加法器与偏置数据相加。 进一步地,所述改进型加法树为多层结构,具体如下: 改进型加法树的第一层的输入为所有待计算数据;对于其余层,当前层的输入为 前一层的输出;直到输出的个数为1,得到的结果即为所有数的和; 如果当前层的输入个数是偶数,输入的数按照顺序两两配对后相加; 如果当前层的输入个数是奇数,那么先对偶数个数使用按照顺序两两配对相加进 行并行计算,而剩下的一个数直接输出到下一层; 乘法单元中乘法器的输出依次连接到改进型加法树的输入。 与现有技术对比,本发明的优点与积极效果在于: 1.本发明可配置的卷积层硬件器基于对输入特征图进行划分后,采用可以重配置 的卷积计算模式,支持可自定义配置的不同输入、输出并行方案,极大提高了灵活性; 2.本发明设计了高效的输入缓存单元,来实现不同输入尺寸以及不同卷积核尺寸 下输入窗口的生成,实现了硬件加速器的适用性; 3.本发明设计了可重配置的乘法-加法单元,在支持不同尺寸的卷积核的同时,提 高了硬件加速器的通用性同时,获得较高的平均资源利用率; 6 CN 111738433 A 说 明 书 4/8 页 附图说明 图1是本发明实施例中的输入特征图块状划分方法示意图。 图2是本发明实施例中可配置计算模式示意图。 图3是本发明实施例中输入缓存模块硬件结构三示意图。 图4是本发明实施例中输入缓存模块在不同K值下输出窗口示意图。 图5是本发明实施例中卷积运算单元结构示意图。 图6是本发明实施例中改进型加法树示意图。 图7是本发明实施例中不同K值下加法树的映射情况以及有效输出示意图。 图8是本发明实施例中一种可重配置的卷积硬件加速器示的意图。