一种基于存内计算的卷积加速计算系统及方法与流程

    专利2022-07-08  100


    本发明属于集成电路设计领域,涉及一种基于存内计算的卷积加速计算系统及方法。



    背景技术:

    当前,提高ai芯片性能和效能的关键之一在于卷积运算的高效执行。在传统冯·诺伊曼体系结构中,计算与存储分离的体系造成内存的存取速度严重滞后于处理器的计算速度,遭遇到了所谓的存储墙(memorywall)问题。从目前学术界研宄情况来看,计算与存储融合一体的结构是一个较好的解决方案,由于运算和存储一体化不需要数据总线来搬运数据,不仅能解决数据总线寄生电压和寄生电阻带来传递延时和多余功耗问题,而且还能解决处理器运算速度和存储器存储速度不匹配问题,这种方法被称为存内计算(process-in-memory,pim)。然而,目前新型存储器在工艺的成熟性和稳定性方面还有所欠缺,仅限于理论和实验研究阶段,工业应用前景尚不明朗。因此,通过在既有成熟的cmos工艺基础上进行存内计算ip开发,并进一步实现基于存内计算的卷积加速控制结构成为研究热点。

    当前,存内计算的研究方向主要分为两类:一类是基于新材料、新器件进行算力挖掘,如中国专利“非易失性存内计算芯片及其运算控制方法”,申请号201910713399.0,它基于非易失性存储器进行结构修改,其优势在于存储的数据掉电不丢失,但缺点是工艺成熟度不高,结构复杂;另一类则是通过对成熟的sram结构进行定制化修改,如中国专利“一种适用于全连接二值化神经网络的存内计算电路”,申请号201910623458.5,它则是利用成熟的sram结构进行存储单元结构扩展,使其在位线上具备模拟运算的能力。这种基于sram结构的存内计算以其工艺成熟,结构简单,成为工程化应用潜力巨大的研究热点,如密歇根大学发表的“neuralcache:bit-serialin-cacheaccelerationofdeepneuralnetworks”,它完全复用sram的6t存储单元,仅在外围电路增加较少的数字逻辑实现逻辑运算,通过sram庞大的位线资源实现大规模并行计算能力。而目前sram结构在存内ip计算中,需要采用软件指令引入导致效率低下,无法实现大规模数据并行,导致无法在人工智能中有效进行应用。



    技术实现要素:

    本发明的目的在于提供一种基于存内计算的卷积加速计算系统及方法,以克服现有技术的不足。

    为达到上述目的,本发明采用如下技术方案:

    一种基于存内计算的卷积加速计算方法,包括以下步骤:

    s1,在存储模式下,将卷积核和输入特征图数据按行串行加载进存内计算ip中;

    s2,当数据加载完毕后,在存内计算ip内首先以元素为单位逐位进行乘法运算,当一个元素乘法完成后再逐位进行加法运算获得部分和累加结果;

    s3,当一个元素的乘加运算结束后,如果一次卷积没有结束,则保持卷积核不变,将输入特征图元素地址移动至下一个元素起始地址,重复进行乘法和加法运算,直至整个卷积核元素均执行完毕得到计算结果,将计算结果在存储模式下进行读取,即可完成存内计算的卷积加速计算。

    进一步的,将卷积核与输入特征图的对应区域进行乘累加得到一个位置输出结果,然后按步长在输入特征图上移动并进行相同操作。

    进一步的,具体的,将卷积核的元素写入sram每行固定位置,同时将输入特征图不同的数据加载到sram各行中,最终在列方向将形成初始化结果。

    进一步的,当数据加载完毕后,在sram中进行列操作,并行执行乘法操作。

    进一步的,在执行加法时,将加法结果空间高位补2个零,按位执行6个周期后即可完成加法操作。

    一种基于存内计算的卷积加速计算系统,包括卷积加速器指令接口、计数器组和状态机组;卷积加速指令接口用于接收处理器发出的卷积运算控制信号和待运算数据,并将接收到的卷积运算控制信号和待运算数据进行解析,将解析数据传输至计算器组;

    计数器组根据解析数据有序进行存内计算ip初始化、乘法逐位计算、加法逐位计算以及操作数的切换,实现卷积进程的周期控制;状态机组用于数据的加载、乘法与加法操作中源操作数与目的操作数地址的精确控制。

    进一步的,卷积加速器指令接口将接收到处理器指令解析出存内计算ip的模式控制信号、初始化状态机所使用的运算数据以及对计数器组的计数配置值,同时监控所有计数器的溢出信号,以确定运算的阶段状态,最终通过存内计算ip的读数据端口取得卷积运算结果。

    进一步的,计数器组包括行计数器、操作数位宽计数器、结果位宽计数器和卷积核元素计数器;

    行计数器接收来自指令接口的待运算数据个数作为计数器预置值,在使能信号有效后即按周期自增计数,该计数器预置值作为使能信号控制初始化状态机对存内计算ip按行加载数据;当计数值达到预置值时产生预置溢出信号,将预置溢出信号返回给指令接口同时发往下一级的操作数位宽计数器;

    操作数位宽计数器接收指令接口的乘法操作数位宽作为计数预置值,当前一级行计数器溢出后,令乘法状态机对存内计算ip按周期逐位进行乘法,同时最后一级卷积核元素计数器的溢出信号通过反相器后与行计数器的预置溢出信号经过与门作为使能信号,当操作数位宽计数值达到预置值时产生操作数溢出信号,将操作数溢出信号返回给指令接口同时发往下一级的结果位宽计数器;

    结果位宽计数器接收指令接口的加法操作数位宽作为计数预置值,控制加法状态机逐位进行累加操作,当结果位宽计数值达到预置值时产生结果溢出信号,结果溢出信号传输至下一级卷积核元素计数器;

    卷积核元素计数器收来自指令接口的卷积核元素个数作为卷积核元素计数器预置值,当卷积核元素数值达到预置值时产生溢出信号,卷积核元素计数器的溢出信号通过反相器后与行计数器的预置溢出信号经过与门作为使能信号。

    进一步的,状态机组包括初始化状态机、乘法状态机和加法状态机;

    初始化状态机作用于存内计算ip正常模式下的地址、写数据、写使能与读数据端口,乘法状态机产生乘法操作的被乘数列地址、乘数列地址以及乘积列地址,加法状态机则产生加法操作的源操作数a列地址、源操作数b列地址以及加法结果列地址。

    进一步的,乘法状态机和加法状态机产生的三种列地址分别通过三个mux复选器接入存内计算ip在运算模式下的源操作数a、源操作数b以及目的操作数c端口。

    与现有技术相比,本发明具有以下有益的技术效果:

    本发明一种基于存内计算的卷积加速计算方法,在存储模式下,将卷积核和输入特征图数据按行串行加载进存内计算ip中,在存储模式下将卷积运算中的恒定参数卷积核与待处理的输入特征图加载到存储器中,然后切换至运算模式,通过有序控制存内计算ip串行完成操作数的乘法、部分和累加以及操作数的切换步骤,利用卷积加速控制结构将卷积运算的所有步骤按周期进行无缝衔接,采用硬件替代软件进行时序调度,避免复杂的软件指令引入的效率损失,从而有效发挥存内计算ip在实际大规模数据并行处理中的效能优势。本发明将卷积运算进行算力加速,以降低卷积运算的时间开销,为人工智能的实时性提供技术支撑。

    进一步的,将多个乘法结果全部相加,在执行加法时,将加法结果空间mul高位补2个零,按位执行6个周期后即可完成加法操作,节省存储空间。

    进一步的,三种状态机有序产生正常模式和运算模式下的操作数地址信号,保证各个运算流程的无缝衔接并有序完成卷积运算。

    本申请一种基于存内计算的卷积加速计算系统,采用与处理器交互的卷积加速器指令接口,处理器仅需要将卷积运算的数据通过该接口加载并发出启动信号,就可以无阻塞的处理其它程序进程,本申请卷积加速计算系统将会自动完成数据运算过程中操作数地址的计算以及时序的精准控制,可以避免传统软件执行方案中处理器需要实时干预卷积加速器的运转,有效降低卷积程序对于处理器整体运行效率的干扰,同时有利于降低编程人员的程序设计复杂度。

    进一步的,采用四级计数器级联结构,通过递进式的驱动控制以及循环控制,可以有效保证初始化、乘法、加法及操作数切换的无缝衔接,最大限度降低不同运算模式切换的时间开销,同时不同计数器驱动下的初始化状态、乘法状态机和加法状态机,又能精准的控制存内计算ip在存储模式的逐行加载以及在计算模式下的逐位乘加操作。该控制接口逻辑结构清晰,设计复杂度低,能够高效实现对存内计算ip的控制。

    附图说明

    图1为本发明实施例中具体方法流程示意图。

    图2为本发明实施例中卷积运算示意图。

    图3为本发明实施例中存内计算流程图。

    图4为本发明实施例中卷积加速控制系统结构示意图。

    具体实施方式

    下面结合附图对本发明做进一步详细描述:

    如图1所示,一种基于存内计算的卷积加速计算方法,包括以下步骤:

    s1,在存储模式下,将卷积核和输入特征图数据按行串行加载进存内计算ip中;

    s2,当数据加载完毕后,在存内计算ip内首先以元素为单位逐位进行乘法运算,当一个元素乘法完成后再逐位进行加法运算获得部分和累加结果;

    s3,当一个元素的乘加运算结束后,如果一次卷积没有结束,则保持卷积核不变,将输入特征图元素地址移动至下一个元素起始地址,重复进行乘法和加法运算,直至整个卷积核元素均执行完毕得到计算结果,将计算结果在存储模式下进行读取,即可完成存内计算的卷积加速计算。

    本申请给出卷积核weight大小为2*2,输入特征图ifmaps为6*6的实施例,设卷积步长为1,则卷积运算结果ofmaps大小即为5*5。

    具体过程为:将卷积核与输入特征图的对应区域进行乘累加得到一个位置输出结果,然后按步长在输入特征图上移动并进行相同操作;如图2中卷积运算结果ofmaps的o00和o10两个元素,其值分别为:

    如图3所示,卷积运算在sram型存内计算ip上的运算流程示意图,以计算图2中o00为例,其中每个操作数为2位,如w00[1]和w00[0]。(1)首先是初始化,此时存内计算ip处于常规sram的存储模式,从行方向看可以分为四个区域:卷积核weight、输入特征图ifmap、乘法结果mul和累加结果result,其中乘法结果为2*2=4位,而累加结果则是4个4位二进制数据之和的最大位宽即6位,由于卷积核是所有乘累加中固定的操作数,所以将卷积核weight的4个元素w00、w10、w01和w11共4个即8位数据写入到sram每行固定位置,同时将输入特征图ifmap不同的数据加载到sram各行中,最终在列方向将形成初始化结果。(2)乘法操作。此时存内计算ip切换至计算模式,sram将由初始化状态时的行操作转向列操作。一个2位卷积核元素w00与一个2位ifmap元素f00相乘,需要消耗7个周期,生成的4位乘积t00写入到乘法结果mul域中。此时所有列方向均并行执行乘法操作,即7个周期后将得到与列线数量相同的乘积结果,这就达到了大规模并行计算的目的;(3)部分和累加。卷积运算是将多个乘法结果全部相加,为了节省存储空间,本发明仅再开辟一个加法结果空间result,执行“t00 o00->o00”。由于加法结果空间mul的位宽为4位,其数值最大为15,对于4个元素的卷积而言,累加和最大为60,使用6位即可表示。在执行加法时,将加法结果空间mul高位补2个零,按位执行6个周期后即可完成加法操作。(4)返回步骤(2),顺序执行下一个操作数的乘法和加法操作,直至卷积核内4个元素全部遍历完,此时在累加结果result域得到的就是ofmaps结果,此时仅需再次切换至存储模式,按行读出result结果即可。

    如图4所示,一种基于存内计算的卷积加速计算系统,包括卷积加速器指令接口、计数器组和状态机组;卷积加速指令接口用于接收处理器发出的卷积运算控制信号和待运算数据;计数器组作为核心部件,其作用是有序实现存内计算ip初始化、乘法逐位计算、加法逐位计算以及操作数的切换,实现卷积进程的周期控制;状态机组的作用是完成数据的加载、乘法与加法操作中源操作数与目的操作数地址的精确控制。

    具体的,卷积加速器指令接口将接收到处理器指令解析出存内计算ip的模式控制信号、初始化状态机所使用的运算数据以及对计数器组的计数配置值,同时监控所有计数器的溢出信号,以确定运算的阶段状态,最终通过存内计算ip的读数据端口取得卷积运算结果;

    对于行计数器,行计数器接收来自指令接口的待运算数据个数作为计数器预置值,在使能信号有效后即按周期自增计数,该计数值作为使能信号控制初始化状态机对存内计算ip按行加载数据;当计数值达到预置值时产生预置溢出信号,将预置溢出信号返回给指令接口同时发往下一级的操作数位宽计数器。操作数位宽计数器接收指令接口的乘法操作数位宽作为计数预置值,在图3中该预置值为2,同时当前一级行计数器溢出后,表明本计数器可以使能乘法状态机,令乘法状态机对存内计算ip按周期逐位进行乘法,同时最后一级卷积核元素计数器的溢出信号通过反相器后与行计数器的预置溢出信号经过与门作为使能信号,目的是保证当卷积运算全部结束后将结束乘法运算;当操作数位宽计数值达到预置值时产生操作数溢出信号,将操作数溢出信号返回给指令接口同时发往下一级的结果位宽计数器。结果位宽计数器与操作数位宽计数器相似,只不过它的预置值是加法结果位宽值,在图3中该预置值为6,它的计数值控制加法状态机逐位进行累加操作,其结果溢出信号控制下一级的卷积核元素计数器的使能。卷积核元素计数器的预置值就是卷积核元素个数,在图3中该预置值为4,它的溢出信号控制是否需要重复执行乘加操作;

    状态机组直接作用于存内计算ip的各个端口,状态机组包括初始化状态机。初始化状态机作用于存内计算ip正常模式下的地址、写数据、写使能与读数据端口,就是将待运算数据加载到存内计算ip的各行中,同时将各列的最终运算结果按行读出。乘法状态机产生乘法操作的被乘数列地址、乘数列地址以及乘积列地址,加法状态机则产生加法操作的源操作数a列地址、源操作数b列地址以及加法结果列地址;由于乘法和加法对存内计算ip分时操作,因此乘法状态机和加法状态机产生的三种列地址分别通过三个mux复选器接入存内计算ip在运算模式下的源操作数a、源操作数b以及目的操作数c端口。三种状态机有序产生正常模式和运算模式下的操作数地址信号,保证各个运算流程的无缝衔接并有序完成卷积运算。

    为了降低处理器对存内计算ip的复杂控制,本申请采用与处理器交互的卷积加速器指令接口,处理器仅需要将卷积运算的数据通过该接口加载并发出启动信号,就可以无阻塞的处理其它程序进程,本申请卷积加速计算系统将会自动完成数据运算过程中操作数地址的计算以及时序的精准控制,可以避免传统软件执行方案中处理器需要实时干预卷积加速器的运转,有效降低卷积程序对于处理器整体运行效率的干扰,同时有利于降低编程人员的程序设计复杂度。本发明所提的卷积加速计算系统,采用四级计数器级联结构,通过递进式的驱动控制以及循环控制,可以有效保证初始化、乘法、加法及操作数切换的无缝衔接,最大限度降低不同运算模式切换的时间开销,同时不同计数器驱动下的初始化状态、乘法状态机和加法状态机,又能精准的控制存内计算ip在存储模式的逐行加载以及在计算模式下的逐位乘加操作。该控制接口逻辑结构清晰,设计复杂度低,能够高效实现对存内计算ip的控制。

    本发明一种基于存内计算的卷积加速计算方法,利用计算过程中操作数运算与写回分时操作的原理,采用原位计算将“a b->c”修改为“a b->a”,这样将3个数据的空间缩减为2个,可以将节省出的存储空间继续存放待卷积运算的输入特征图数据,进一步充分复用卷积核进行更多的卷积操作,降低输入特征图数据由于存储空间不足而频繁加载所带来的功耗与时间开销。


    技术特征:

    1.一种基于存内计算的卷积加速计算方法,其特征在于,包括以下步骤:

    s1,在存储模式下,将卷积核和输入特征图数据按行串行加载进存内计算ip中;

    s2,当数据加载完毕后,在存内计算ip内首先以元素为单位逐位进行乘法运算,当一个元素乘法完成后再逐位进行加法运算获得部分和累加结果;

    s3,当一个元素的乘加运算结束后,如果一次卷积没有结束,则保持卷积核不变,将输入特征图元素地址移动至下一个元素起始地址,重复进行乘法和加法运算,直至整个卷积核元素均执行完毕得到计算结果,将计算结果在存储模式下进行读取,即可完成存内计算的卷积加速计算。

    2.根据权利要求1所述的一种基于存内计算的卷积加速计算方法,其特征在于,将卷积核与输入特征图的对应区域进行乘累加得到一个位置输出结果,然后按步长在输入特征图上移动并进行相同操作。

    3.根据权利要求1所述的一种基于存内计算的卷积加速计算方法,其特征在于,具体的,将卷积核的元素写入sram每行固定位置,同时将输入特征图不同的数据加载到sram各行中,最终在列方向将形成初始化结果。

    4.根据权利要求1所述的一种基于存内计算的卷积加速计算方法,其特征在于,当数据加载完毕后,在sram中进行列操作,并行执行乘法操作。

    5.根据权利要求1所述的一种基于存内计算的卷积加速计算方法,其特征在于,在执行加法时,将加法结果空间高位补2个零,按位执行6个周期后即可完成加法操作。

    6.一种基于存内计算的卷积加速计算系统,其特征在于,包括卷积加速器指令接口、计数器组和状态机组;卷积加速指令接口用于接收处理器发出的卷积运算控制信号和待运算数据,并将接收到的卷积运算控制信号和待运算数据进行解析,将解析数据传输至计算器组;

    计数器组根据解析数据有序进行存内计算ip初始化、乘法逐位计算、加法逐位计算以及操作数的切换,实现卷积进程的周期控制;状态机组用于数据的加载、乘法与加法操作中源操作数与目的操作数地址的精确控制。

    7.根据权利要求6所述的一种基于存内计算的卷积加速计算系统法,其特征在于,卷积加速器指令接口将接收到处理器指令解析出存内计算ip的模式控制信号、初始化状态机所使用的运算数据以及对计数器组的计数配置值,同时监控所有计数器的溢出信号,以确定运算的阶段状态,最终通过存内计算ip的读数据端口取得卷积运算结果。

    8.根据权利要求6所述的一种基于存内计算的卷积加速计算系统法,其特征在于,计数器组包括行计数器、操作数位宽计数器、结果位宽计数器和卷积核元素计数器;

    行计数器接收来自指令接口的待运算数据个数作为计数器预置值,在使能信号有效后即按周期自增计数,该计数器预置值作为使能信号控制初始化状态机对存内计算ip按行加载数据;当计数值达到预置值时产生预置溢出信号,将预置溢出信号返回给指令接口同时发往下一级的操作数位宽计数器;

    操作数位宽计数器接收指令接口的乘法操作数位宽作为计数预置值,当前一级行计数器溢出后,令乘法状态机对存内计算ip按周期逐位进行乘法,同时最后一级卷积核元素计数器的溢出信号通过反相器后与行计数器的预置溢出信号经过与门作为使能信号,当操作数位宽计数值达到预置值时产生操作数溢出信号,将操作数溢出信号返回给指令接口同时发往下一级的结果位宽计数器;

    结果位宽计数器接收指令接口的加法操作数位宽作为计数预置值,控制加法状态机逐位进行累加操作,当结果位宽计数值达到预置值时产生结果溢出信号,结果溢出信号传输至下一级卷积核元素计数器;

    卷积核元素计数器收来自指令接口的卷积核元素个数作为卷积核元素计数器预置值,当卷积核元素数值达到预置值时产生溢出信号,卷积核元素计数器的溢出信号通过反相器后与行计数器的预置溢出信号经过与门作为使能信号。

    9.根据权利要求6所述的一种基于存内计算的卷积加速计算系统法,其特征在于,状态机组包括初始化状态机、乘法状态机和加法状态机;

    初始化状态机作用于存内计算ip正常模式下的地址、写数据、写使能与读数据端口,乘法状态机产生乘法操作的被乘数列地址、乘数列地址以及乘积列地址,加法状态机则产生加法操作的源操作数a列地址、源操作数b列地址以及加法结果列地址。

    10.根据权利要求9所述的一种基于存内计算的卷积加速计算系统法,其特征在于,乘法状态机和加法状态机产生的三种列地址分别通过三个mux复选器接入存内计算ip在运算模式下的源操作数a、源操作数b以及目的操作数c端口。

    技术总结
    本发明公开了一种基于存内计算的卷积加速计算系统及方法,在存储模式下,将卷积核和输入特征图数据按行串行加载进存内计算IP中,在存储模式下将卷积运算中的恒定参数卷积核与待处理的输入特征图加载到存储器中,然后切换至运算模式,通过有序控制存内计算IP串行完成操作数的乘法、部分和累加以及操作数的切换步骤,利用卷积加速控制结构将卷积运算的所有步骤按周期进行无缝衔接,采用硬件替代软件进行时序调度,避免复杂的软件指令引入的效率损失,从而有效发挥存内计算IP在实际大规模数据并行处理中的效能优势。本发明将卷积运算进行算力加速,以降低卷积运算的时间开销,为人工智能的实时性提供技术支撑。

    技术研发人员:娄冕;谢成民;杨靓;李立;金玉琳;朱吉喆
    受保护的技术使用者:西安微电子技术研究所
    技术研发日:2020.11.30
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-20189.html

    最新回复(0)