一种面向卷积神经网络的低功耗电压可调卷积运算模块的制作方法

文档序号:11177108阅读:1405来源:国知局
一种面向卷积神经网络的低功耗电压可调卷积运算模块的制造方法与工艺
本发明涉及一种面向卷积神经网络的低功耗电压可调卷积运算模块,利用卷积运算中存在数据大量重用的规律,实现卷积神经网络进行大数量循环卷积运算,对数据进行重用。在卷积网络的一层卷积运算中,根据数据重用频度比例,在缓存中的不同存储片区中选取不同电压,降低功耗。属于神经网络硬件加速器
技术领域

背景技术
:卷积运算在图像处理领域有着广泛的用途,例如在图像滤波、图像增强、图像分析等处理时都要用到卷积运算,图像卷积运算实质是一种矩阵运算,其特点是运算量大,并且数据复用率高,用软件计算图像卷积很难达到实时性的要求。卷积神经网络作为一种前馈多层神经网络,能够对大量有标签数据进行自动学习并从中提取复杂特征,卷积神经网络的优点在于只需要对输入图像进行较少的预处理就能够从像素图像中识别出视觉模式,并且对有较多变化的识别对象也有较好的识别效果,同时卷积神经网络的识别能力不易受到图像的畸变或简单几何变换的影响。作为多层人工神经网络研究的一个重要方向,卷积神经网络多年来一直是研究的热点。传统方式卷积运算的缓存是直接从外部存储读取,由于受到数据读取带宽的限制,以及没有可配置阵列,完成多层卷积循环运算,效率较低。如果能把进入缓存中的一块数据完全利用,不用根据轨迹的变化,不断从外存中读取,将降低吞吐要求,并且解决了不同重用次数数据之间存在读取时间等待的问题,即不同缓存区域数据可以对应不同读取主频这里选用不同电压的缓存,那些重用次数低,对读取主频要求的数据可以在低电压缓存区域,根据低重用次数数据的占比,可以动态调节电压,降低功耗。对于典型卷积神经网络,其卷积计算量占据整体计算的主要部分,而卷积计算时,图像数据矩阵中许多数据会被同一卷积核重用多次,而且存在多个卷积核,这样就会存在更多数据重用。卷积网络卷积运动是十分有规律的,如果具体到每个数据的重用次数,根据读取频度做存储分配,不同缓存对应不同电压,不同于原有电压不考虑读取次数多少的问题,功耗会大为降低。目前便携式设备最主要的问题就是功耗,而本发明的出发点就是通过重用次数分析,数据在不同电压缓存中分布,降低功耗。技术实现要素:发明目的:针对现有技术中存在的卷积计算中吞吐量低等问题,本发明提供一种面向卷积神经网络的低功耗电压可调卷积运算模块,可以加速完成大数量卷积计算的要求,对数据进入缓存是规整读取数据块再转换为一维数据,降低对宽带的压力。根据输入图像数据重用结构,利用循环卷积运算中的高重用率特性,对应不同重用次数在数据中的占比,可以调节电压,平衡不同重用次数间的读取速率,达到降低功耗的目的,并且卷积运算的卷积核及图片规模变化都适用于此方法。技术方案:一种面向卷积神经网络的低功耗电压可调卷积运算模块,包括数据传输单元、电压可调缓存单元、卷积计算单元三部分。所述数据传输单元,将计算数据根据此次卷积运算的卷积核及图片的规模大小,获得图像数据重用分布,切割数据块与卷积核大小一致,并转换为一维数据进入电压可调缓存单元。在电压可调缓存单元,根据进入电压可调缓存单元的一维数据的重用次数累加和,与达到此累加和的先后顺序,仲裁在缓存单元中不同存储片区的排布,按重用频度从高到低的排布,选取高重用频度数据(重用6次及以上)进入高电压缓存区域,低重用频度数据(重用5次及以下)进入低电压缓存区域,根据重用频度将数据存储至相应电压的缓存区域。分好区域后,存储片区数据读取的快慢要求较大,即主频差异较大,最高读取次数和最低读取次数相差数倍,如果依照重用频度分块,使不同区域电压实现可调,高重用次数处,电压较高,低重用次数处电压变低,这样模块的功耗大大降低。针对低主频卷积计算,可通过降低电源电压的方式来有效的降低功耗(正比于电压平方次)。当重用次数较高时,这时系统可以让处理器工作在常规电源电压,实现电压可调可以使能效比大为提高。在卷积计算单元中,使多个卷积核同时对缓存中一个片区的图像数据进行卷积,这里并行实现,且在电压可调缓存单元中缓存的图像数据需要根据卷积运算的原有轨迹,完成原有轨迹一次卷积运算的相加运算,这里采用crossbar结构,完成卷积运算的输出。卷积计算中相乘运算完成后,每个值和多个权重值相乘,会得到多个结果,根据轨迹进入临时寄存器,待选取部分相乘完成,就会把一次卷积轨迹填满,这里是并行化完成的,最终相加得到终值。卷积相乘结果存进来只用一次,卷积计算单元内部相加单元对应临时寄存器选取crossbar结构,临时数据寄存器单元tdr与计算单元的互连,临时数据寄存器之间的互连,临时数据寄存器阵列中每一行的任意一个临时数据寄存器,其输入数据可以来自其上一行的任意一个临时数据寄存器,并且最顶行临时寄存器的输入,连接到最底行临时寄存器的数据输出端,从而整个临时数据寄存器阵列构成了一个单向循环互连的拓扑结构。有益效果:与现有技术相比,本发明提供的面向卷积神经网络的低功耗电压可调卷积运算模块,可以大幅提高卷积计算中的访存速度,减少访存开销,提升卷积计算的速度和效率。附图说明图1为图像数据为9×9,卷积核为3×3的数据分类示意图;图2为卷积计算中数据为偶矩阵时重用次数分布图;图3为卷积计算中数据为奇矩阵时重用次数分布图;图4为基于宽电压sram的低功耗卷积神经网络卷积运算设计整体框图;图5为基于宽电压sram的低功耗卷积神经网络卷积运算设计流程图。具体实施方式下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。面向卷积神经网络的低功耗电压可调卷积运算模块,包括数据传输单元、电压可调缓存单元、卷积计算单元三部分。数据传输单元,用于传输图像数据进入电压可调缓存单元;电压可调缓存单元用以根据数据重用频度,将数据分布于不同电压的存储片区;卷积计算单元卷将存储片区的数据进行卷积运算,输出运算结果;数据传输单元,将计算数据根据此次卷积运算的卷积核及图片的规模大小,获得图像数据重用分布,切割合适宽度数据块转换为一维数据进入电压可调缓存单元;在电压可调缓存单元,根据进入电压可调缓存单元的一维数据的重用次数累加和,与达到此累加和的先后顺序,仲裁在缓存单元中不同存储片区的排布,按重用频度从高到低的排布,选取高重用频度数据进入高电压缓存区域,低重用频度数据进入低电压缓存区域,根据频度重用数据占比来调节存储片区电压;在卷积计算单元中,使多个卷积核同时对缓存中一个片区的数据进行卷积,这里并行实现,且在电压可调缓存单元中缓存的图像数据需要根据卷积运算的原有轨迹,完成原有轨迹一次卷积运算的相加运算,这里采用crossbar结构,完成卷积运算的输出。数据传输单元包括数据仲裁模块、数据读取模块;数据仲裁模块根据此层数据卷积运算卷积核和图像数据的规模大小,对应数据的重用频度分布,判定选取二维图像数据的拼接区域大小;当图像数据和卷积核的规模确定时,整个图像数据的重用频度分布在卷积运算算法的基础上已经确定,在电压可调缓存单元,不同数据读取频度存放在不同存储片区上,以降低功耗开销;数据读取模块,根据切割图片大小,将此区域数据多行拼接为一行,进入电压可调缓存单元。电压可调缓存单元,包括重用频度判断模块、优先级判断模块、电压调节及数据读取判断模块;重用频度判断模块根据数据的重用频度分布,将一维数据进入缓存的重用次数累积求和,基于累积和确定在缓存中的排布顺序;在缓存过程中,高累积和在缓存的偏上区域,低累积和在偏下区域,当累积和相同时,根据到达此累积和的先后顺序进行排列,即优先级判断模块根据卷积过程中原轨迹,判定到达此逻辑和的先后顺序,在存储片区中由高到低依次排列;电压调节及数据读取判断模块,根据低重用次数数据的比例,调节不同存储片区的电压,数据重用频度低于5次(含),选择较低电压(典型值:0.6v);,重用频度高于6次(含),采用较高电压(典型值:1.1v);同时,在存储片区内数据重用频度基本一致时,不同存储片区选择相同电压;如果重用频度处理缓存模块中数据被卷积运算阵列读取,需要从数据传输单元中更新数据,并传输给卷积计算单元。卷积计算单元利用在电压可调缓存单元排布的数据运算,包括乘运算模块、卷积轨迹判断模块和加运算模块;乘运算模块中,进入卷积运算阵列的数据会和一个卷积核中多个权重相乘,得到多个结果对应多次卷积轨迹;卷积轨迹判断模块中要根据卷积运算原有卷积轨迹,将相乘结果存在crossbar结构的临时数据寄存器中,在加运算模块中利用根据卷积轨迹判断模块已存放的结果,完成相加运算,得到卷积运算结果。卷积运算数据重用频度分析,其是在卷积运算算法分析基础上提取出的,根据卷积核及图像矩阵规模大小,图像数据矩阵中每个数据都具有自身的重用频度,在进行卷积运算前,数据重用频度分布就已得到;整体规律趋势是图像数据矩阵边角处数据重用频度低,中心处数据重用频度高;根据数据重用频度分布,为数据传输单元提供拼接数据块大小,及电压可调缓存单元累积求和提供依据。数据传输单元、电压可调缓存单元、卷积计算单元三部分相互配合,首先,将计算数据根据此次卷积运算的卷积核及图片的规模大小,获得图像数据重用次数分布,切割数据块与卷积核大小一致,拼接为一维数据进入电压调节缓存单元。如图1所示,面向卷积神经网络的低功耗电压可调卷积运算模块,选取图片数据为9×9矩阵,卷积核为3×3矩阵,一次卷积运算是对二维图像数据进行卷积,这里是多张图片同时卷积,访存要求较高,在访存采用拼接的方法将二维数据转换为一维数据,数据区域只读取一次,提高访存效率,降低外存功耗。这里存在2×2、3×3、5×5等多种卷积核大小时组成一维模式,对于一片区域只需发起一次访问,而不需多次。选取大小为m*m的图像,大小为k*k的卷积核为例。卷积运算算法特征是一致的,当m>=2k-1时,对应卷积结构如下表所示:被卷积的次数被卷积对应次数的数据单元个数1428…………k4n…………2k4n…………(k-1)*k4nk*kn2m越大,即输入矩阵的规模越大,卷积的次数最大值越大,卷积次数为k,2k,3k……(k-1)的子单元的数目为4n(其中参数n的数值计算方式:当m=2k-1时n=1;m每增加1,n就增加1);当卷积次数为其他值的时候,对应的子单元的数目是一个固定值。推广到更一般的情况,如图2为卷积计算中卷积数据为偶阵列时重用次数分布图,及图3为卷积计算中卷积数据为奇阵列时重用次数分布图,即在边缘处的图像数据被重用次数少,中间处图像数据被重用次数多。因此,在图像进行卷积运算之前,已经得到整个图像数据的重用频度分布,在动态电压缓存单元分布在不同存储片区,满足不同缓存间计算时间的一致性。由图4所示,数据传输单元根据切割图片大小,将此区域多行拼接为一行,进入电压可调缓存单元。电压可调缓存单元,包括重用频度累积和判断模块、优先级判断模块、电压调节及数据读取判断模块,重用频度累积和判断模块根据在数据传输单元中的重用频度分布,得到一维数据进入缓存的重用次数累积求和,基于累积和确定在缓存中的排布顺序。对比累积和的大小,当累积和不同时,按照其大小顺序在缓存中按由高到低的顺序排列;当累积和相同时,优先级判断模块会根据卷积轨迹,进一步判断到达此逻辑和的先后顺序,在缓存中按由高到低的顺序排列,再根据重用次数分析,将已变成一维的数据进行调整,最上边区域是重用次数最高的区域,而最下面是重用次数最低的区域,具体结构如图4中电压可调缓存单元,分好区域后,这里数据读取的主频差异较大,最高读取次数和最低读取次数相差数倍,如果这里依照分块,使不同区域电压实现可调,高重用次数处,电压较高,低电压处电压变低,这样模块的功耗大大降低。如图4所示,数据读取判断完成之后,即可在卷积计算单元进行卷积运算。利用在电压可调缓存单元排布的数据运算,卷积计算单元包括乘法模块和卷积轨迹判断模块。由图2中卷积计算单元所示,选取一个数据定为x1为起点,第一个正被卷积数据即是第一个卷积核通过此区域的数据,x1会被重用9次。在卷积相乘后,结果进入临时寄存器,只利用一次,可以采用crossbar结构,数据被读取一次后清除相加得结果。即乘法模块中,进入卷积运算阵列的数据会和一个卷积核中多个权重相乘,得到多个结果对应多次卷积轨迹。卷积轨迹判断模块中要根据卷积运算原有卷积轨迹,将相乘结果存在crossbar结构中的临时寄存器中,继而进行累加运算,得到最终卷积运算结果。整体实现流程图如5所示,主要包括如下步骤:1)根据计算需求,发起数据访问请求,二维截取部分拼接为一维数据,在最大部分截取大小选取合适大小数据块;2)根据重用分析,在片上存储中根据重用次数分区域存储;3)根据数据重用次数,判断重用次数累积和以及到达此累积和的先后轨迹顺序,实现动态电压可调,读取次数少时,要求读取速率慢,即低主频,可使用低电压,相反,重用较多模块,使用高电压;4)重用部分数据进入卷积阵列相乘部分计算,这里因为要被多个卷积核使用,可以实现一取多读,数据进入阵列和预存在计算阵列里的卷积核权重值相乘,得出多个结果,分配给加法计算里的临时寄存器;5)卷积阵列相加部分,用相乘送入临时寄存器的值,根据卷积轨迹,把一次卷积所有结果相加;6)把计算结果输出,得到下一层卷积输入矩阵。针对低主频卷积计算,可通过降低电源电压的方式来有效的降低功耗(正比于v2)。当重用次数较高时时,这时系统可以让处理器工作在常规电源电压,实现电压可调可以使能效大为提高,已选取0.6v和1.1v两种电压为例,功耗只有前者的29%,在低重用次数数据较多情况下,选取此电压作为低存储片区的电压,0.8v时,功耗是1.1v的54%,此时可以选择低重用次数适中的情况。通过这里的电压选择,显著降低功耗。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1