卷积运算电路、及具有该卷积运算电路的相关电路或设备制造技术

技术编号:37605219 阅读:28 留言:0更新日期:2023-05-18 11:57
本申请提供一种卷积运算电路、及具有该卷积运算电路的相关电路或设备,卷积运算电路包括:乘法器,用于接收操作数,以完成乘法中间结果计算,输出部分积;定点数累加计算电路,与乘法器连接,用于在操作数为定点数时对乘法器输出的部分积进行压缩并对压缩后的部分积进行相加处理,得到定点卷积运算结果;浮点数累加计算电路,与乘法器连接,用于在操作数为浮点数时根据操作数的指数部分进行指数计算得到浮点乘法指数结果,并根据乘法器输出的部分积进行尾数计算得到尾数计算结果。本申请的方案布设于处理器之后,可以简化处理器内部的电路逻辑,降低处理器内部的电路设计难度和复杂度,同时由于复用了乘法器,因此面积开销也得以降低。以降低。以降低。

【技术实现步骤摘要】
卷积运算电路、及具有该卷积运算电路的相关电路或设备


[0001]本申请涉及处理器
,具体而言,涉及一种卷积运算电路、及具有该卷积运算电路的相关电路或设备。

技术介绍

[0002]AI(Artificial Intelligence,人工智能)算法中存在大量的卷积运算,根据精度的需求卷积运算需要支持不同类型的数据,例如需要支持诸如fp32/tf32/fp16/bf16/int8/uint8/int4/uint4等类型的数据。其中,fp32/tf32/fp16/bf16为浮点数据类型,而int8/uint8/int4/uint4为定点数据类型。而随着AI技术的不断发展,需要处理器能够同时支持定点数据的运算和浮点数据的运算。
[0003]目前,为实现处理器同时支持定点数据的卷积运算和浮点数据的运算,常规的实现方式是在处理器内同时设计单独的进行定点数运算的定点数卷积运算电路和进行浮点数运算的浮点数卷积运算电路,这就导致了处理器中的面积开销大。

技术实现思路

[0004]本申请实施例的目的在于提供一种卷积运算电路、及具有该卷积运算电路的相关电路或设备,用以解决相关技术存在着的会导致处理器内面积开销大的问题。
[0005]本申请实施例提供了一种卷积运算电路,包括:乘法器,用于接收操作数,以完成乘法中间结果计算,输出部分积;定点数累加计算电路,与所述乘法器连接,用于在所述操作数为定点数时,对所述乘法器输出的部分积进行压缩并对压缩后的部分积进行相加处理,得到定点卷积运算结果;浮点数累加计算电路,与所述乘法器连接,用于在所述操作数为浮点数时,根据所述操作数的指数部分进行指数计算得到浮点乘法指数结果,并根据所述乘法器输出的部分积进行尾数计算得到尾数计算结果。
[0006]在上述实现结构中,由于定点数累加计算电路和浮点数累加计算电路均与乘法器相连接,因此对于定点数的计算和对于浮点数的计算可以复用乘法器,从而相比于单独配置定点数卷积运算电路和浮点数卷积运算电路的方案而言,面积开销得以降低;同时,定点数的计算和浮点数的计算在累加计算时,分别通过定点数累加计算电路和浮点数累加计算电路实现,可以节省不同数据类型的卷积运算的功耗开销。
[0007]进一步地,所述操作数为按照所述乘法器的位宽对待运算数据和待运算权重的尾数进行拆分或填充后得到的数据和权重;
[0008]所述浮点数累加计算电路包括:尾数计算单元,与所述乘法器连接,用于对所述乘法器输出的针对同一待运算数据的部分积进行压缩并求和,得到对应该待运算数据的浮点尾数乘法结果;指数计算单元,用于对所述待运算数据和所述待运算数据对应的待运算权重的指数部分进行计算,得到针对该待运算数据的浮点乘法指数结果;累加单元,与所述尾数计算单元和所述指数计算单元连接,用于从多个待运算数据对应的浮点乘法指数结果中,选择出最大浮点乘法指数结果,以及用于对所述多个待运算数据对应的浮点尾数乘法
结果进行压缩并求和得到所述尾数计算结果。
[0009]在上述实现方式中,通过尾数计算单元和指数计算单元分别实现了对于待运算数据的尾数部分和指数部分的计算。而通过累加单元的处理,就实现了多个浮点尾数乘法结果之间的累加,从而满足了针对浮点卷积计算的要求。
[0010]进一步地,所述指数计算单元还用于:对所述待运算数据和所述待运算权重中携带的异常标志位进行检查,在存在表征数据为denormal的异常标志位时,将具有该异常标志位的所述待运算数据或所述待运算权重的指数部分表示为1。
[0011]在上述实现方式中,通过待运算数据中携带的异常标志位实现对于待运算数据是否为denormal数据的确定,通过待运算权重中携带的异常标志位实现对于待运算权重是否为denormal数据的确定,从而不需要在对于指数部分的计算路径上引入浮点数denormal的判断逻辑,可以节省指数部分的计算开销。
[0012]进一步地,所述指数计算单元还用于:在用于计算的所述待运算数据和所述待运算权重的指数部分中,存在至少一个指数部分为0时,确定所述浮点乘法指数结果为0。
[0013]在上述实现方式中,通过将存在指数部分为0的指数计算情况中的浮点乘法指数结果确定为0,从而可以保证指数运算的正确,一方面可以提高指数部分运算效率(存在至少一个指数部分为0时,直接确定浮点乘法指数结果为0,无需再进行运算),而另一方面也可以避免按照正常累加后,造成运算出错。
[0014]进一步地,所述尾数计算单元包括:压缩电路,与所述乘法器连接,用于对所述乘法器输出的针对同一待运算数据的部分积进行压缩;第一加法器,与所述压缩电路的输出端连接,用于将所述压缩电路输出的部分积求和,得到对应该待运算数据的浮点尾数乘法结果。
[0015]在上述实现方式中,通过压缩电路进行乘法器中部分积的压缩运算,并通过第一加法器进行累加,即可实现对应于同一待运算数据的乘法运算,快速地得到对应该待运算数据的浮点尾数乘法结果。
[0016]进一步地,所述累加单元中包括:指数选择单元,用于从多个待运算数据对应的浮点乘法指数结果中,选择出最大浮点乘法指数结果;指数阶差计算单元,与所述指数选择单元连接,用于计算各所述待运算数据对应的浮点乘法指数结果与所述最大浮点乘法指数结果之间的指数阶差;累加器,与所述指数阶差计算单元连接,用于按照所述指数阶差对各所述待运算数据对应的浮点尾数乘法结果进行对阶移位,并对对阶移位后的浮点尾数乘法结果进行压缩并求和得到所述尾数计算结果。
[0017]在上述实现方式中,通过指数阶差计算单元计算出各待运算数据对应的浮点乘法指数结果与最大浮点乘法指数结果之间的指数阶差,进而对各待运算数据对应的浮点尾数乘法结果进行对阶移位,这样就可以保证对多个待运算数据对应的尾数部分进行计算时,浮点尾数乘法结果是对齐的,从而保证计算结果的准确。
[0018]进一步地,所述指数选择单元包括第一级指数选择单元和第二级指数选择单元;所述指数阶差计算单元包括第一级指数阶差计算单元和第二级指数阶差计算单元;所述累加器包括第一级累加器和第二级累加器;
[0019]所述第一级指数选择单元用于从多个待运算数据对应的浮点乘法指数结果中,选择出第一级最大浮点乘法指数结果,并传输给所述第一级指数阶差计算单元和所述第二级
指数选择单元;
[0020]所述第一级指数阶差计算单元用于计算各所述待运算数据对应的浮点乘法指数结果与所述第一级最大浮点乘法指数结果之间的指数阶差;
[0021]所述第一级累加器用于按照所述指数阶差对各所述待运算数据对应的浮点尾数乘法结果进行对阶移位,并对对阶移位后的浮点尾数乘法结果进行压缩并求和得到第一级尾数计算结果,并输出给所述第二级累加器;
[0022]所述第二级指数选择单元用于从多个所述第一级最大浮点乘法指数结果中,选择出第二级最大浮点乘法指数结果;
[0023]所述第二级指数阶差计算单元用于计算多个所述第一级最大浮点乘法指数结果与第二级最大浮点乘法指数结果之间的指本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种卷积运算电路,其特征在于,包括:乘法器,用于接收操作数,以完成乘法中间结果计算,输出部分积;定点数累加计算电路,与所述乘法器连接,用于在所述操作数为定点数时,对所述乘法器输出的部分积进行压缩并对压缩后的部分积进行相加处理,得到定点卷积运算结果;浮点数累加计算电路,与所述乘法器连接,用于在所述操作数为浮点数时,根据所述操作数的指数部分进行指数计算得到浮点乘法指数结果,并根据所述乘法器输出的部分积进行尾数计算得到尾数计算结果。2.如权利要求1所述的卷积运算电路,其特征在于,所述操作数为按照所述乘法器的位宽对待运算数据和待运算权重的尾数进行拆分或填充后得到的数据和权重;所述浮点数累加计算电路包括:尾数计算单元,与所述乘法器连接,用于对所述乘法器输出的针对同一待运算数据的部分积进行压缩并求和,得到对应该待运算数据的浮点尾数乘法结果;指数计算单元,用于对所述待运算数据和所述待运算数据对应的待运算权重的指数部分进行计算,得到针对该待运算数据的浮点乘法指数结果;累加单元,与所述尾数计算单元和所述指数计算单元连接,用于从多个待运算数据对应的浮点乘法指数结果中,选择出最大浮点乘法指数结果,以及用于对所述多个待运算数据对应的浮点尾数乘法结果进行压缩并求和得到所述尾数计算结果。3.如权利要求2所述的卷积运算电路,其特征在于,所述指数计算单元还用于:对所述待运算数据和所述待运算权重中携带的异常标志位进行检查,在存在表征数据为denormal的异常标志位时,将具有该异常标志位的所述待运算数据或所述待运算权重的指数部分表示为1。4.如权利要求2所述的卷积运算电路,其特征在于,所述指数计算单元还用于:在用于计算的所述待运算数据和所述待运算权重的指数部分中,存在至少一个指数部分为0时,确定所述浮点乘法指数结果为0。5.如权利要求2所述的卷积运算电路,其特征在于,所述尾数计算单元包括:压缩电路,与所述乘法器连接,用于对所述乘法器输出的针对同一待运算数据的部分积进行压缩;第一加法器,与所述压缩电路的输出端连接,用于将所述压缩电路输出的部分积求和,得到对应该待运算数据的浮点尾数乘法结果。6.如权利要求2所述的卷积运算电路,其特征在于,所述累加单元中包括:指数选择单元,用于从多个待运算数据对应的浮点乘法指数结果中,选择出最大浮点乘法指数结果;指数阶差计算单元,与所述指数选择单元连接,用于计算各所述待运算数据对应的浮点乘法指数结果与所述最大浮点乘法指数结果之间的指数阶差;累加器,与所述指数阶差计算单元连接,用于按照所述指数阶差对各所述待运算数据对应的浮点尾数乘法结果进行对阶移位,并对对阶移位后的浮点尾数乘法结果进行压缩并求和得到所述尾数计算结果。7.如权利要求6所述的卷积运算电路,其特征在于,所述指数选择单元包括第一级指数选择单元和第二级指数选择单元;所述指数阶差计算单元包括第一级指数阶差计算单元和
第二级指数阶差计算单元;所述累加器包括第一级累加器和第二级累加器;所述第一级指数选择单元用于从多个待运算数据对应的浮点乘法指数结果中,选择出第一级最大浮点乘法指数结果,并传输给所述第一级指数阶差计算单元和所述第二级指数选择单元;所述第一级指数阶差计算单元用于计算各所述待运算数据对应的浮点乘法指数结果与所述第一级最大浮点乘法指数结果之间的指数阶差;所述第一级累加器用于按照所述指数阶差对各所述待运算数据对应的浮点尾数乘法结果进行对阶移位,并对对阶移位后的浮点尾数乘法结果进行压缩并求和得到第一级尾数计算结果,并输出给所述第二级累加器;所述第二级指数选择单元用于从多个所述第一级最大浮点乘法指数结果中,选择出第二级最大浮点乘法指数结果;所述第二级指数阶差计算单元用于计算多个所述第一级最大浮点乘法指数结果与该第二级最大浮点乘法指数结果之间的指数阶差;所述第二级累加器用于根据所述第二级指数阶差计算单元计算出的指数阶差,对第一级尾数计算结果进行对阶移位,并对对阶移位后的第一级尾数计算结果进行压缩并求和得到所述尾数计算结果。8.如权利要求7所述的卷积运算电路,其特征在于,所述第一级累加器包括:对阶移位器,用于按照所述指数阶差对各所述待运算数据对应的浮点尾数乘法结果进行对阶移位;第一符号处理电路,与所述对阶移位器连接,用于对对阶移位后的浮点尾数乘法结果进行符号处理;两级CSA32电路,与所述第一符号处理电路连接,用于对符号处理后的数据进行压缩;第二加法器,与所述两级CSA32电路的输出端连接,用于将所述两级CSA32电路输出的数据相加得到所述第一级尾数计算结果。9.如权利要求8所述的卷积运算电路,其特征在于,所述对阶移位器具体用于:在所述待运算数据和所述待运算权重的数据类型为fp16或bf16或tf32类型时,按照所述指数阶差对各所述待运算数据对应的浮点尾数乘法结果进行对阶移位;在所述待运算数据和所述待运算权重的数据类型为fp32类型时,将所述待运算数据对应的低位浮点尾数乘法结果右移12位;其中,所述低位浮点尾数乘法结果为b12_d_l
×
b12_w_l,所述b12_d_l为所述待运算数据中的第0位至11位尾数,所述b12_w_l为所述待运算权重中的第0位至11位尾数。10.如权利要求8所述的卷积运算电路,其特征在于,所述第一符号处理电路用于:若4个对阶移位后的浮点尾数乘法结果的符号同时为负,记录第一标志信息并传输到第二级累加器;所述两级CSA32电路中的第一级CSA32电路用于对4个对阶移位后的浮点尾数乘法结果中的3个浮点尾数乘法结果进行部分积压缩,输出2个部分积pp0,pp1;所述两级CSA32电路中的第二级CSA32电路用于对4个对阶移位后的浮点尾数乘法结果中剩余的1个浮点尾数乘法结果和所述pp0、所述pp1进行部分积压缩,最终输出两个部分积。
11.如权利要求10所述的卷积运算电路,其特征在于,所述第一符号处理电路还用于:若4个对阶移位后的浮点尾数乘法结果的符号不同时为负,则根据所述4个对阶移位后的浮点尾数乘法结果中符号为负的个数,生成3bit的标志值Neg[2:0],并对对符号为负的所述浮点尾数乘法结果取反;所述两级CSA32电路中的第一级CSA32电路还用于对符号处理后的4个所述浮点尾数乘法结果中的3个浮点尾数乘法结果和Neg[0]进行部分积压缩,输出2个部分积pp0,pp1;所述两级CSA32电路中的第二级CSA32电路还用于对4个对阶移位后的浮...

【专利技术属性】
技术研发人员:赵芮王震宇
申请(专利权)人:杭州登临瀚海科技有限公司
类型:发明
国别省市:

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

1