CN108108150B - 乘累加运算方法及装置 - Google Patents

乘累加运算方法及装置 Download PDF

Info

Publication number
CN108108150B
CN108108150B CN201711378473.5A CN201711378473A CN108108150B CN 108108150 B CN108108150 B CN 108108150B CN 201711378473 A CN201711378473 A CN 201711378473A CN 108108150 B CN108108150 B CN 108108150B
Authority
CN
China
Prior art keywords
accumulation
result
clock
submodule
acc
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201711378473.5A
Other languages
English (en)
Other versions
CN108108150A (zh
Inventor
齐亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Unisound Intelligent Technology Co Ltd
Original Assignee
Unisound Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Unisound Intelligent Technology Co Ltd filed Critical Unisound Intelligent Technology Co Ltd
Priority to CN201711378473.5A priority Critical patent/CN108108150B/zh
Publication of CN108108150A publication Critical patent/CN108108150A/zh
Application granted granted Critical
Publication of CN108108150B publication Critical patent/CN108108150B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Abstract

本公开是关于乘累加运算方法及装置。该装置包括:乘积模块、第一累加模块、第二累加模块,其中,第二累加模块包括二级流水线加法器;乘积模块获取至少两组目标数据,对每组目标数据执行乘积运算,并输出得到的乘积结果到第一累加模块;第一累加模块对乘积结果进行累加,并输出得到的第一累加结果;第二累加模块在每个时钟获取一组第一累加结果;在奇数时钟时,输出对偶数组的第一累加结果进行累加的第一计算结果;在偶数时钟时,输出对奇数组的第一累加结果进行累加的第二计算结果;并将第一计算结果和第二计算结果相加,得到最终成累加结果。该技术方案使得乘累加运算装置的计算速率提高一倍,对系统性能进行有效的提高,降低了硬件资源的浪费。

Description

乘累加运算方法及装置
技术领域
本公开涉及数字处理技术领域,尤其涉及乘累加运算方法及装置。
背景技术
目前,在系统应用中,几乎所有复杂算法的实现都离不开乘累加运算。在可编程逻辑器件中,利用乘累加运算单元来实现复杂的数字信号处理,在器件中乘累加运算单元的速度、功耗、位宽等性能决定了对数字信号的处理能力,是可编程逻辑器件中最基本、最核心的功能模块之一。
在传统结构中,乘累加运算装置包括多级运算单元,下一级的运算单元需要等待上一级运算单元计算完成后获取上一级运算单元的计算结果再执行相应的计算,因此,乘累加运算装置无法在每个时钟都进行计算,所以,计算速率降低,性能损失严重。
发明内容
本公开实施例提供乘累加运算方法及装置。所述技术方案如下:
根据本公开实施例的第一方面,提供一种乘累加运算装置,包括:乘积模块、第一累加模块、第二累加模块,其中,所述第二累加模块包括二级流水线加法器;
所述乘积模块,用于获取至少两组目标数据,对每组目标数据执行乘积运算,并输出得到的乘积结果到所述第一累加模块;
所述第一累加模块,用于对所述乘积结果进行累加,并输出得到的第一累加结果;
所述第二累加模块,用于在每个时钟获取一组所述第一累加结果;在奇数时钟时,输出对偶数组的第一累加结果进行累加的第一计算结果;在偶数时钟时,输出对奇数组的第一累加结果进行累加的第二计算结果;并将所述第一计算结果和第二计算结果相加,得到最终乘累加结果。
可选的,所述第二累加模块包括:第一选择子模块、第二选择子模块、加法子模块和缓存子模块,其中,所述加法子模块为二级流水线加法器,所述第一累加模块输出的第一累加结果为sum[i],i为1~n,n为大于1的整数;
所述第一选择子模块,用于在第k个时钟时,获取所述第一累加结果sum[i]并输出到所述加法子模块,k为大于1的整数;
所述第二选择子模块,用于获取所述加法子模块输出的第二累加结果acc[j],j为1~n,i=j;在第k个时钟时,将第二累加结果acc[j-2]输出到所述加法子模块;
所述加法子模块,用于对从所述第一选择子模块和第二选择子模块输入的数据进行累加计算,得到所述第二累加结果acc[j];当j等于n-1时,将所述第二累加结果acc[n-1]输出到所述缓存子模块;
所述缓存子模块,用于缓存所述第二累加结果acc[n-1]。
可选的,所述第一选择子模块,用于接收所述第一累加结果sum[i]及所述加法子模块输出的第二累加结果acc[j];当倒数第二个时钟时,将所述第二累加结果acc[n]输出到所述加法子模块,当非倒数第二个时钟时,将所述第一累加结果sum[i]输出到所述加法子模块;
所述第二选择子模块,用于当第一个时钟和第二个时钟时,将0输出到所述加法子模块;当倒数第二个时钟时,从所述缓存子模块获取所述第二累加结果acc[n-1]并输出到所述加法子模块;当不是第一个时钟、第二个时钟或倒数第二个时钟时,将第二累加结果acc[j-2]输出到所述加法子模块;
所述加法子模块,用于当最后一个时钟时,将从所述第一选择子模块获取所述第二累加结果acc[n]以及从所述第二选择子模块获取的所述第二累加结果acc[n-1]进行累加计算,得到最终累加结果;将所述第二累加结果acc[j]输出到所述第一选择子模块和第二选择子模块。
可选的,所述加法子模块,在第一个时钟时,从所述第一选择子模块获取sum[1],从所述第二选择子模块获取0,计算得到acc[1]=sum[1];在第二个时钟时,从所述第一选择子模块获取sum[2],从所述第二选择子模块获取0,计算得到acc[2]=sum[2];
在除第一个时钟外的奇数时钟,即j为奇数且不等于1时,对偶数组的第一累加结果进行累加的第一计算结果为:
当n为偶数时,
Figure GDA0003182121230000031
当n为奇数时,
Figure GDA0003182121230000032
在除第二个时钟外的偶数时钟,即j为偶数且不等于2时,对奇数组的第一累加结果进行累加的第二计算结果为:
当n为偶数时,
Figure GDA0003182121230000033
当n为奇数时,
Figure GDA0003182121230000034
可选的,所述乘积模块包括至少两个乘法器,所述乘法器为二级流水线乘法器,所述第一累加模块包括加法器,所述加法器为二级流水线加法器。
根据本公开实施例的第二方面,提供一种乘累加运算方法,其特征在于,包括:
获取至少两组目标数据,对每组目标数据执行乘积运算,并输出得到的乘积结果到所述第一累加模块;
对所述乘积结果进行累加计算,并输出得到的第一累加结果;
在每个时钟获取一组所述第一累加结果,在奇数时钟时,采用二级流水线运算方式输出对偶数组的第一累加结果进行累加的第一计算结果,采用二级流水线运算方式在偶数时钟时,输出对奇数组的第一累加结果进行累加的第二计算结果;
采用二级流水线运算方式对将所述第一计算结果和第二计算结果相加,得到最终乘累加结果。
可选的,所述第一累加结果为sum[i],i为1~n,n为大于1的整数;
所述在每个时钟获取一组所述第一累加结果,在奇数时钟时,采用二级流水线运算方式输出对偶数组的第一累加结果进行累加的第一计算结果,采用二级流水线运算方式在偶数时钟时,输出对奇数组的第一累加结果进行累加的第二计算结果,包括:
在第k个时钟时,获取所述第一累加结果sum[i],k为大于1的整数;
获取第二累加结果acc[j-2],j为1~n,i=j;
将所述第一累加结果sum[i]与所述第二累加结果acc[j-2]进行累加计算,得到所述第二累加结果acc[j];
当j等于n-1时,将所述第二累加结果acc[n-1]进行缓存。
可选的,所述在每个时钟获取一组所述第一累加结果,在奇数时钟时,采用二级流水线运算方式输出对偶数组的第一累加结果进行累加的第一计算结果,采用二级流水线运算方式在偶数时钟时,输出对奇数组的第一累加结果进行累加的第二计算结果,还包括:
当第一个时钟时,获取所述第一累加结果sum[1]及0,进行累加计算,得到所述第二累加结果acc[1]=sum[1];
当第二个时钟时,获取所述第一累加结果sum[2]及0,进行累加计算,得到所述第二累加结果acc[2]=sum[2];
在除第一个时钟外的奇数时钟,即j为奇数且不等于1时,对偶数组的第一累加结果进行累加的第一计算结果为:
当n为偶数时,
Figure GDA0003182121230000041
当n为奇数时,
Figure GDA0003182121230000042
在除第二个时钟外的偶数时钟,即j为偶数且不等于2时,对奇数组的第一累加结果进行累加的第二计算结果为:
当n为偶数时,
Figure GDA0003182121230000051
当n为奇数时,
Figure GDA0003182121230000052
当倒数第二个时钟时,获取所述第二累加结果acc[n]及缓存的第二累加结果acc[n-1]并进行相加,得到所述最终累加结果。
可选的,所述对每组目标数据执行乘积运算,包括:
采用二级流水线运算方式对每组目标数据执行乘积运算;
对所述乘积结果进行累加计算,包括:
采用二级流水线运算方式对所述乘积结果进行累加计算。
本公开的实施例提供的技术方案可以包括以下有益效果:
本实施例中,在每一时钟,第一累加模块都可以向第二累加模块输入数据,即每个时钟第二累加模块13都在进行计算,使得整个乘累加运算装置的计算速率提高一倍,对系统性能进行有效的提高,降低了硬件资源的浪费。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种乘累加运算装置的框图。
图2是根据一示例性实施例示出的一种乘累加运算装置的结构图。
图3是根据一示例性实施例示出的第二累加模块的框图。
图4是根据另一示例性实施例示出的第二累加模块的框图。
图5是根据一示例性实施例示出的一种乘累加运算方法的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种乘累加运算装置的框图,如图1所示,该乘累加运算装置包括:乘积模块11、第一累加模块12、第二累加模块13,其中,第二累加模块13包括二级流水线加法器。
乘积模块11,用于获取至少两组目标数据,对每组目标数据执行乘积运算,并输出得到的乘积结果到第一累加模块;
第一累加模块12,用于对乘积结果进行累加,并输出得到的第一累加结果;
第二累加模块13,用于在每个时钟获取一组第一累加结果;在奇数时钟时,输出对偶数组的第一累加结果进行累加的第一计算结果;在偶数时钟时,输出对奇数组的第一累加结果进行累加的第二计算结果;并将第一计算结果和第二计算结果相加,得到最终乘累加结果。
本实施例中,在每一时钟,第一累加模块12都可以向第二累加模块13输入数据,即每个时钟第二累加模块13都在进行计算,使得整个乘累加运算装置的计算速率提高一倍,对系统性能进行有效的提高,降低了硬件资源的浪费。
本实施例中,乘积模块11中包括多个乘法器,该乘法器可以为二级流水线乘法器。第一累加模块12包括多级加法单元,每一级加法单元可包括多个加法器,每个加法器都可以是二级流水线加法器。
图2是根据一示例性实施例示出的一种乘累加运算装置的结构图,如图2所示,例如,乘积模块11中包括4个乘法器211、212、213和214;第一累加模块12包括2级加法单元,第1级加法单元包括2个加法器221和222,第2级加法单元包括1个加法器231。
以上仅是对乘累加运算装置中的乘积模块和第一累加模块的举例说明,乘积模块中乘法器的个数可以根据需要设置为为2n个,n为大于等于1的整数,第一累加模块中加法单元的级数可以n级,每级加法单元中加法器的个数依次为2n-1、2n-2、……、1个。
图3是根据一示例性实施例示出的第二累加模块的框图,如图3所示,第二累加模块包括:第一选择子模块31、第二选择子模块32、加法子模块33和缓存子模块34,其中,加法子模块33为二级流水线加法器,第一累加模块输出的第一累加结果为sum[i],i为1~n,n为大于1的整数。
第一选择子模块31,用于在第k个时钟时,获取第一累加结果sum[i]并输出到加法子模块33,k为大于1的整数。
第二选择子模块32,用于获取加法子模块33输出的第二累加结果acc[j],j为1~n,i=j;在第k个时钟时,将第二累加结果acc[j-2]输出到加法子模块。
加法子模块33,用于对从第一选择子模块31和第二选择子模块32输入的数据进行累加计算,得到第二累加结果acc[j];当j等于n-1时,将第二累加结果acc[n-1]输出到缓存子模块34。
缓存子模块34,用于缓存第二累加结果acc[n-1]。
其中,第一选择子模块31,用于接收第一累加结果sum[i]及加法子模块33输出的第二累加结果acc[j];当倒数第二个时钟时,将第二累加结果acc[n]输出到加法子模块33,当非倒数第二个时钟时,将第一累加结果sum[i]输出到加法子模块33。
第二选择子模块32,用于当第一个时钟和第二个时钟时,将0输出到加法子模块33;当倒数第二个时钟时,从缓存子模块34获取第二累加结果acc[n-1]并输出到加法子模块33;当不是第一个时钟、第二个时钟或倒数第二个时钟时,将第二累加结果acc[j-2]输出到加法子模块33。
加法子模块33,用于当最后一个时钟时,将从第一选择子模块31获取第二累加结果acc[n]以及从第二选择模块子32获取的第二累加结果acc[n-1]进行累加计算,得到最终累加结果;将第二累加结果acc[j]输出到第一选择子模块31和第二选择子模块32。
在第一个时钟时,加法子模块33从第一选择子模块获取sum[1],从第二选择子模块获取0,计算得到acc[1]=sum[1];在第二个时钟时,从第一选择子模块获取sum[2],从第二选择子模块获取0,计算得到acc[2]=sum[2]。
在除第一个时钟外的奇数时钟,即j为奇数且不等于1时,对偶数组的第一累加结果进行累加的第一计算结果为:
当n为偶数时,
Figure GDA0003182121230000081
当n为奇数时,
Figure GDA0003182121230000082
在除第二个时钟外的偶数时钟,即j为偶数且不等于2时,对奇数组的第一累加结果进行累加的第二计算结果为:
当n为偶数时,
Figure GDA0003182121230000083
当n为奇数时,
Figure GDA0003182121230000084
以下以一个具体实例对本公开的实施例进行说明。
图4是根据另一示例性实施例示出的第二累加模块的框图,如图4所示,第二累加模块中的加法子模块33为二级流水线浮点加法器,两级流水线依次用pipeline1和pipeline2表示。对于每一个加法运算,例如32bt的数据的加法运算,在第一时钟,可以由pipeline1执行前16位数据的加法运算,将结果发送给pipeline2,在第二时钟,pipeline2执行后16位数据的加法运算,并将pipeline1的计算结果与自身的计算结果组合后,得到最终的加法运算结果。
第一累加模块每个时钟的输出结果用sum1,sum2,sum3,sum4表示。
第二累加模块每个时钟的输出结果用acc1,acc2,acc3,acc4表示,最终累加结果用acc_final表示。
(1)第一时钟
第一选择子模块31将sum1输出给pipeline1,第二选择子模块32将0输出给pipeline1,pipeline1执行sum1同初值0的加法。
(2)第二时钟
pipeline2获取pipeline1第一时钟的输出结果并继续执行sum1同初值0的加法,输出acc1。
第一选择子模块31将sum2输出给pipeline1,第二选择子模块32将0输出给pipeline1,pipeline1执行sum2同初值0的加法。
(3)第三时钟
第一选择子模块31将sum3输出到pipeline1,第二选择子模块32将第二时钟pipeline2的输出结果acc1发送给pipeline1,pipeline1执行acc1同sum3的加法。
pipeline2获取第二时钟pipeline1的输出结果,并继续执行sum2同初值0的加法,输出acc2。
(4)第四时钟
第一选择子模块31将sum4输出到pipeline1,第二选择子模块32将第三时钟pipeline2的输出结果acc2发送给pipeline1,pipeline1执行acc2同sum4的加法。
pipeline2获取第三时钟pipeline1的输出结果,并继续执行sum3同acc1的加法,输出acc3。
(5)第五时钟
缓存子模块34获取pipeline2第四时钟的输出结果acc3进行缓存。
pipeline1停止工作。
pipeline2获取第四时钟pipeline1的输出结果,并继续执行acc2同sum4的加法,输出acc4。
(6)第六时钟
第一选择子模块31将acc4输出到pipeline1,第二选择子模块32将缓存模块子34缓存的acc3发送给pipeline1,pipeline1执行acc3同acc4的加法。
此时pipeline2停止工作。
(7)第七时钟
pipeline2获取第六时钟pipeline1的计算结果并继续执行acc3同acc4的加法。此时pipeline1停止工作。
(8)第八时钟
pipeline2的输出结果最终的累加结果acc_final。
通过上述计算过程可以看出,在奇数时钟,得到的实际上是偶数组的累加结果,例如,第三时钟,输出的acc2=sum4;第五时钟,输出的acc4=sum2+sum4。在偶数时钟,得到的是奇数组的累加结果,如第二时钟,输出的acc1=sum1;第四时钟,输出的acc3=sum1+sum3。
本实施例的二级流水线设计,在每一时钟,第一累加模块12都可以向第二累加模块13输入数据,即每个时钟第二累加模块13都在进行计算,使得整个乘累加运算装置的计算速率提高一倍,对系统性能进行有效的提高,降低了硬件资源的浪费。
图5是根据一示例性实施例示出的一种乘累加运算方法的框图,如图5所示,该乘累加运算方法包括:
步骤S51,获取至少两组目标数据,对每组目标数据执行乘积运算,并输出得到的乘积结果到第一累加模块;
步骤S52,对乘积结果进行累加计算,并输出得到的第一累加结果;
步骤S53,在每个时钟获取一组第一累加结果,在奇数时钟时,采用二级流水线运算方式输出对偶数组的第一累加结果进行累加的第一计算结果,采用二级流水线运算方式在偶数时钟时,输出对奇数组的第一累加结果进行累加的第二计算结果;
步骤S54,采用二级流水线运算方式将第一计算结果和第二计算结果相加,得到最终乘累加结果。
其中,第一累加结果为sum[i],i为1~n,n为大于1的整数。上述步骤S53包括:
在第k个时钟时,获取第一累加结果sum[i],k为大于1的整数;
获取第二累加结果acc[j-2],j为1~n,i=j;
将第一累加结果sum[i]与第二累加结果acc[j-2]进行累加计算,得到第二累加结果acc[j];
当j等于n-1时,将第二累加结果acc[n-1]进行缓存。
上述步骤S53还包括:
当第一个时钟时,获取第一累加结果sum[1]及0,进行累加计算,得到第二累加结果acc[1]=sum[1]。
当第二个时钟时,获取第一累加结果sum[2]及0,进行累加计算,得到第二累加结果acc[2]=sum[2]。
在除第一个时钟外的奇数时钟,即j为奇数且不等于1时,对偶数组的第一累加结果进行累加的第一计算结果为:
当n为偶数时,
Figure GDA0003182121230000111
当n为奇数时,
Figure GDA0003182121230000112
在除第二个时钟外的偶数时钟,即j为偶数且不等于2时,对奇数组的第一累加结果进行累加的第二计算结果为:
当n为偶数时,
Figure GDA0003182121230000113
当n为奇数时,
Figure GDA0003182121230000121
当倒数第二个时钟时,获取第二累加结果acc[n]及缓存的第二累加结果acc[n-1]并进行相加,得到最终累加结果。
上述步骤51包括:采用二级流水线运算方式对每组目标数据执行乘积运算。
上述步骤52包括:采用二级流水线运算方式对乘积结果进行累加计算。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (7)

1.一种乘累加运算装置,其特征在于,包括:乘积模块、第一累加模块、第二累加模块,其中,所述第二累加模块包括二级流水线加法器;
所述乘积模块,用于获取至少两组目标数据,对每组目标数据执行乘积运算,并输出得到的乘积结果到所述第一累加模块;
所述第一累加模块,用于对所述乘积结果进行累加,并输出得到的第一累加结果;
所述第二累加模块,用于在每个时钟获取一组所述第一累加结果;在奇数时钟时,输出对偶数组的第一累加结果进行累加的第一计算结果;在偶数时钟时,输出对奇数组的第一累加结果进行累加的第二计算结果;并将所述第一计算结果和第二计算结果相加,得到最终乘累加结果;
所述第二累加模块包括:第一选择子模块、第二选择子模块、加法子模块和缓存子模块,其中,所述加法子模块为二级流水线加法器,所述第一累加模块输出的第一累加结果为sum[i],i为1~n,n为大于1的整数;
所述第一选择子模块,用于在第k个时钟时,获取所述第一累加结果sum[i]并输出到所述加法子模块,k为大于1的整数;
所述第二选择子模块,用于获取所述加法子模块输出的第二累加结果acc[j],j为1~n,i=j;在第k个时钟时,将第二累加结果acc[j-2]输出到所述加法子模块;
所述加法子模块,用于对从所述第一选择子模块和第二选择子模块输入的数据进行累加计算,得到所述第二累加结果acc[j];当j等于n-1时,将所述第二累加结果acc[n-1]输出到所述缓存子模块;
所述缓存子模块,用于缓存所述第二累加结果acc[n-1]。
2.根据权利要求1所述的装置,其特征在于,
所述第一选择子模块,用于接收所述第一累加结果sum[i]及所述加法子模块输出的第二累加结果acc[j];当倒数第二个时钟时,将所述第二累加结果acc[n]输出到所述加法子模块,当非倒数第二个时钟时,将所述第一累加结果sum[i]输出到所述加法子模块;
所述第二选择子模块,用于当第一个时钟和第二个时钟时,将0输出到所述加法子模块;当倒数第二个时钟时,从所述缓存子模块获取所述第二累加结果acc[n-1]并输出到所述加法子模块;当不是第一个时钟、第二个时钟或倒数第二个时钟时,将第二累加结果acc[j-2]输出到所述加法子模块;
所述加法子模块,用于当最后一个时钟时,将从所述第一选择子模块获取的所述第二累加结果acc[n]以及从所述第二选择子模块获取的所述第二累加结果acc[n-1]进行累加计算,得到最终累加结果;将所述第二累加结果acc[j]输出到所述第一选择子模块和第二选择子模块。
3.根据权利要求2所述的装置,其特征在于,所述加法子模块,在第一个时钟时,从所述第一选择子模块获取sum[1],从所述第二选择子模块获取0,计算得到acc[1]=sum[1];在第二个时钟时,从所述第一选择子模块获取sum[2],从所述第二选择子模块获取0,计算得到acc[2]=sum[2];
在除第一个时钟外的奇数时钟,即j为奇数且不等于1时,对偶数组的第一累加结果进行累加的第一计算结果为:
当n为偶数时,
Figure FDA0003182121220000021
当n为奇数时,
Figure FDA0003182121220000022
在除第二个时钟外的偶数时钟,即j为偶数且不等于2时,对奇数组的第一累加结果进行累加的第二计算结果为:
当n为偶数时,
Figure FDA0003182121220000023
当n为奇数时,
Figure FDA0003182121220000024
4.根据权利要求1所述的装置,其特征在于,所述乘积模块包括至少两个乘法器,所述乘法器为二级流水线乘法器,所述第一累加模块包括加法器,所述加法器为二级流水线加法器。
5.一种乘累加运算方法,其特征在于,包括:
获取至少两组目标数据,对每组目标数据执行乘积运算,并输出得到的乘积结果到第一累加模块;
对所述乘积结果进行累加计算,并输出得到的第一累加结果;
在每个时钟获取一组所述第一累加结果,在奇数时钟时,采用二级流水线运算方式输出对偶数组的第一累加结果进行累加的第一计算结果,采用二级流水线运算方式在偶数时钟时,输出对奇数组的第一累加结果进行累加的第二计算结果;
采用二级流水线运算方式将所述第一计算结果和第二计算结果相加,得到最终乘累加结果;
所述第一累加结果为sum[i],i为1~n,n为大于1的整数;
所述在每个时钟获取一组所述第一累加结果,在奇数时钟时,采用二级流水线运算方式输出对偶数组的第一累加结果进行累加的第一计算结果,采用二级流水线运算方式在偶数时钟时,输出对奇数组的第一累加结果进行累加的第二计算结果,包括:
在第k个时钟时,获取所述第一累加结果sum[i],k为大于1的整数;
获取第二累加结果acc[j-2],j为1~n,i=j;
将所述第一累加结果sum[i]与所述第二累加结果acc[j-2]进行累加计算,得到所述第二累加结果acc[j];
当j等于n-1时,将所述第二累加结果acc[n-1]进行缓存。
6.根据权利要求5所述的方法,其特征在于,所述在每个时钟获取一组所述第一累加结果,在奇数时钟时,采用二级流水线运算方式输出对偶数组的第一累加结果进行累加的第一计算结果,采用二级流水线运算方式在偶数时钟时,输出对奇数组的第一累加结果进行累加的第二计算结果,还包括:
当第一个时钟时,获取所述第一累加结果sum[1]及0,进行累加计算,得到所述第二累加结果acc[1]=sum[1];
当第二个时钟时,获取所述第一累加结果sum[2]及0,进行累加计算,得到所述第二累加结果acc[2]=sum[2];
在除第一个时钟外的奇数时钟,即j为奇数且不等于1时,对偶数组的第一累加结果进行累加的第一计算结果为:
当n为偶数时,
Figure FDA0003182121220000041
当n为奇数时,
Figure FDA0003182121220000042
在除第二个时钟外的偶数时钟,即j为偶数且不等于2时,对奇数组的第一累加结果进行累加的第二计算结果为:
当n为偶数时,
Figure FDA0003182121220000043
当n为奇数时,
Figure FDA0003182121220000044
当倒数第二个时钟时,获取所述第二累加结果acc[n]及缓存的第二累加结果acc[n-1]并进行相加,得到最终累加结果。
7.根据权利要求5所述的方法,其特征在于,所述对每组目标数据执行乘积运算,包括:
采用二级流水线运算方式对每组目标数据执行乘积运算;
对所述乘积结果进行累加计算,包括:
采用二级流水线运算方式对所述乘积结果进行累加计算。
CN201711378473.5A 2017-12-19 2017-12-19 乘累加运算方法及装置 Active CN108108150B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711378473.5A CN108108150B (zh) 2017-12-19 2017-12-19 乘累加运算方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711378473.5A CN108108150B (zh) 2017-12-19 2017-12-19 乘累加运算方法及装置

Publications (2)

Publication Number Publication Date
CN108108150A CN108108150A (zh) 2018-06-01
CN108108150B true CN108108150B (zh) 2021-11-16

Family

ID=62211213

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711378473.5A Active CN108108150B (zh) 2017-12-19 2017-12-19 乘累加运算方法及装置

Country Status (1)

Country Link
CN (1) CN108108150B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110245756B (zh) 2019-06-14 2021-10-26 第四范式(北京)技术有限公司 用于处理数据组的可编程器件及处理数据组的方法
CN113033798B (zh) * 2019-12-24 2023-11-24 北京灵汐科技有限公司 一种降低精度损失的装置及方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4616330A (en) * 1983-08-25 1986-10-07 Honeywell Inc. Pipelined multiply-accumulate unit
CN1632740A (zh) * 2004-11-19 2005-06-29 浙江大学 乘累加装置
CN101916177A (zh) * 2010-07-26 2010-12-15 清华大学 一种可配置多精度定点乘加装置
CN102629189A (zh) * 2012-03-15 2012-08-08 湖南大学 基于fpga的流水浮点乘累加方法
CN104102470A (zh) * 2014-07-23 2014-10-15 中国电子科技集团公司第五十八研究所 可配置可扩展的流水线乘累加器
CN106325812A (zh) * 2015-06-15 2017-01-11 华为技术有限公司 一种针对乘累加运算的处理方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7660841B2 (en) * 2004-02-20 2010-02-09 Altera Corporation Flexible accumulator in digital signal processing circuitry
CN102820890B (zh) * 2012-05-09 2015-02-18 天津大学 短码长多进制赋权重复累加码的编码器装置及方法
US10019234B2 (en) * 2015-10-05 2018-07-10 Altera Corporation Methods and apparatus for sequencing multiply-accumulate operations

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4616330A (en) * 1983-08-25 1986-10-07 Honeywell Inc. Pipelined multiply-accumulate unit
CN1632740A (zh) * 2004-11-19 2005-06-29 浙江大学 乘累加装置
CN101916177A (zh) * 2010-07-26 2010-12-15 清华大学 一种可配置多精度定点乘加装置
CN102629189A (zh) * 2012-03-15 2012-08-08 湖南大学 基于fpga的流水浮点乘累加方法
CN104102470A (zh) * 2014-07-23 2014-10-15 中国电子科技集团公司第五十八研究所 可配置可扩展的流水线乘累加器
CN106325812A (zh) * 2015-06-15 2017-01-11 华为技术有限公司 一种针对乘累加运算的处理方法及装置

Also Published As

Publication number Publication date
CN108108150A (zh) 2018-06-01

Similar Documents

Publication Publication Date Title
CN108133270B (zh) 卷积神经网络加速方法及装置
KR101781057B1 (ko) 실행 유닛들과 벡터 데이터 메모리 사이에 병합 회로를 갖는 벡터 프로세싱 엔진, 및 관련된 방법
JP6526415B2 (ja) ベクトル・プロセッサおよび方法
US9880845B2 (en) Vector processing engines (VPEs) employing format conversion circuitry in data flow paths between vector data memory and execution units to provide in-flight format-converting of input vector data to execution units for vector processing operations, and related vector processor systems and methods
US9792118B2 (en) Vector processing engines (VPEs) employing a tapped-delay line(s) for providing precision filter vector processing operations with reduced sample re-fetching and power consumption, and related vector processor systems and methods
US9977676B2 (en) Vector processing engines (VPEs) employing reordering circuitry in data flow paths between execution units and vector data memory to provide in-flight reordering of output vector data stored to vector data memory, and related vector processor systems and methods
US5175702A (en) Digital signal processor architecture with plural multiply/accumulate devices
CN108108150B (zh) 乘累加运算方法及装置
US6601077B1 (en) DSP unit for multi-level global accumulation
KR20160085336A (ko) 실행 유닛들과 벡터 데이터 메모리 사이의 데이터 흐름 경로들에서 역확산 회로를 이용하는 벡터 프로세싱 엔진, 및 관련된 방법
KR101162649B1 (ko) 가변적 크기의 고속 직교 변환을 구현하기 위한 방법 및장치
CN103827818A (zh) Fifo加载指令
CN110659445B (zh) 一种运算装置及其处理方法
CN1685309B (zh) 计算上高效数学引擎
CN1444807A (zh) 前同步码搜索设备和方法
US7039091B1 (en) Method and apparatus for implementing a two dimensional correlator
CN111222090A (zh) 卷积计算模块、神经网络处理器、芯片和电子设备
US8380772B2 (en) Multi-rate filter bank
CN114448390A (zh) 一种Biquad数字滤波器装置及实现方法
NL8701170A (nl) Digitaal traliefilter.
US20080205582A1 (en) Processing element and reconfigurable circuit including the same
Tasdizen et al. Computation reduction techniques for vector median filtering and their hardware implementation
JP2648468B2 (ja) ビット単位のパイプラインを利用したWavelet変換プロセッサ
CN1553310A (zh) 高速低功耗乘法器的对称分割算法及电路结构
RU131886U1 (ru) Устройство для вычисления дискретных полиномиальных преобразований

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: Room 101, 1st floor, building 1, Xisanqi building materials City, Haidian District, Beijing 100096

Applicant after: Yunzhisheng Intelligent Technology Co.,Ltd.

Address before: 100191 a503, 5th floor, Mudan science and technology building, No.2 Huayuan Road, Haidian District, Beijing

Applicant before: BEIJING UNISOUND INFORMATION TECHNOLOGY Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant