CN116700670B - 乘累加电路、包含该乘累加电路的处理器和计算装置 - Google Patents
乘累加电路、包含该乘累加电路的处理器和计算装置 Download PDFInfo
- Publication number
- CN116700670B CN116700670B CN202310990483.3A CN202310990483A CN116700670B CN 116700670 B CN116700670 B CN 116700670B CN 202310990483 A CN202310990483 A CN 202310990483A CN 116700670 B CN116700670 B CN 116700670B
- Authority
- CN
- China
- Prior art keywords
- circuit
- output
- multiply
- accumulate
- sub
- 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
Links
- 238000009825 accumulation Methods 0.000 claims abstract description 96
- 238000007906 compression Methods 0.000 claims description 100
- 230000006835 compression Effects 0.000 claims description 98
- 230000009977 dual effect Effects 0.000 claims description 5
- 238000013461 design Methods 0.000 description 9
- 230000003068 static effect Effects 0.000 description 8
- 238000013528 artificial neural network Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000000034 method Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005406 washing Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000001035 drying Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000003071 parasitic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本公开涉及乘累加电路、包含该乘累加电路的处理器和计算装置。一种乘累加电路包括至少一个乘累加单元和求和单元。乘累加单元包括:乘法子电路,被配置为接收乘数并对其求积;累加子电路,其输入端耦接到乘法子电路的输出端,累加子电路被配置为接收乘法子电路的输出并对其累加;以及控制子电路,其输入端耦接到累加子电路的输出端并且其输出端提供乘累加单元的输出端,控制子电路被配置为接收控制信号和累加子电路的输出并根据控制信号而控制是否在控制子电路的输出端提供累加子电路的输出。求和单元的输入端耦接到所述至少一个乘累加单元的输出端。求和单元被配置为接收所述至少一个乘累加单元的输出并对其求和。
Description
技术领域
本公开涉及数据处理技术领域,并且更具体地,涉及一种乘累加电路、包含该乘累加电路的处理器和计算装置。
背景技术
乘累加(Multiply and Accumulate,MAC)电路用于完成向量相乘、矩阵相乘和向量矩阵互乘等乘累加运算,是协处理器、数字信号处理器、中央处理器和专用指令处理器、神经网络处理器等处理器中极其重要的运算子系统。特别地,人工智能的飞速发展凸显了神经网络处理器的重要作用,使得神经网络处理器逐渐成为智能计算技术的基石。卷积计算单元是神经网络处理器的核心单元,其实现离不开乘累加电路对激活数据和权重(Weight)数据的乘累加运算。由于卷积计算单元也是神经网络处理器的功耗中心,因此低功耗的乘累加电路的设计对于卷积计算单元至关重要,也是包含其的神经网络处理器能够大规模应用的关键。
发明内容
根据本公开的第一方面,提供了一种乘累加电路,其包括至少一个乘累加单元和求和单元。乘累加单元包括乘法子电路、累加子电路和控制子电路。乘法子电路被配置为接收乘数并对其求积。累加子电路的输入端耦接到乘法子电路的输出端。累加子电路被配置为接收乘法子电路的输出并对其累加。控制子电路的输入端耦接到累加子电路的输出端。控制子电路的输出端提供乘累加单元的输出端。控制子电路被配置为接收控制信号和累加子电路的输出并根据控制信号而控制是否在控制子电路的输出端提供累加子电路的输出。求和单元的输入端耦接到所述至少一个乘累加单元的输出端。求和单元被配置为接收所述至少一个乘累加单元的输出并对其求和。
在一些实施例中,所述乘法子电路包括一个或多个乘法器,所述一个或多个乘法器中的每个乘法器被配置为接收相应一对乘数并对所述相应一对乘数求积。在一些示例中,所述乘法子电路的乘法器具有单输出端。在一些示例中,所述乘法子电路的乘法器具有双输出端。
在一些实施例中,所述累加子电路包括压缩树和多个寄存器组,所述压缩树的每个输出端耦接到所述多个寄存器组中的相应一个寄存器组的输入端,所述乘法子电路的输出端和所述多个寄存器组中的每个寄存器组的输出端分别耦接到所述压缩树的相应输入端,其中,所述多个寄存器组中的每个寄存器组的输出端分别耦接到所述控制子电路的相应输入端,并且所述控制子电路被配置为根据所述控制信号而控制是否在所述控制子电路的相应输出端分别提供所述多个寄存器组中的每个寄存器组的输出。
在一些实施例中,所述控制子电路包括多个控制元件,所述多个控制元件中的每个控制元件的第一输入端耦接到所述多个寄存器组中的相应一个寄存器组的输出端,所述多个控制元件中的每个控制元件的第二输入端被配置为接收控制信号,所述多个控制元件中的每个控制元件的输出端提供所述乘累加单元的相应一个输出端,所述多个控制元件中的每个控制元件被配置为根据所接收的控制信号而控制是否在所述控制元件的输出端提供所述相应一个寄存器组的输出。
在一些实施例中,所述累加子电路包括具有一级或多级全加器的全加器模块、第一寄存器组和第二寄存器组,所述全加器模块的第一输出端耦接到所述第一寄存器组的输入端,所述全加器模块的第二输出端耦接到所述第二寄存器组的输入端,所述乘法子电路的输出端、所述第一寄存器组的输出端和所述第二寄存器组的输出端分别耦接到所述全加器模块的相应输入端,其中,所述第一寄存器组的输出端和所述第二寄存器组的输出端分别耦接到所述控制子电路的相应输入端,并且所述控制子电路被配置为根据所述控制信号而控制是否在所述控制子电路的相应输出端分别提供所述第一寄存器组的输出和所述第二寄存器组的输出。
在一些实施例中,所述控制子电路包括:第一控制元件,所述第一控制元件的第一输入端耦接到所述第一寄存器组的输出端,所述第一控制元件的第二输入端被配置为接收控制信号,所述第一控制元件的输出端提供所述乘累加单元的第一输出端,所述第一控制元件被配置为根据所接收的控制信号而控制是否在所述第一控制元件的输出端提供所述第一寄存器组的输出;以及第二控制元件,所述第二控制元件的第一输入端耦接到所述第二寄存器组的输出端,所述第二控制元件的第二输入端被配置为接收控制信号,所述第二控制元件的输出端提供所述乘累加单元的第二输出端,所述第二控制元件被配置为根据所接收的控制信号而控制是否在所述第二控制元件的输出端提供所述第二寄存器组的输出。
在一些实施例中,所述控制子电路包括以下至少之一:与门、与非门、多路选择器、反相多路选择器。
在一些实施例中,所述控制信号被配置为使得所述控制子电路在所述累加子电路完成每轮累加之前不在所述控制子电路的输出端提供所述累加子电路的输出,并且被配置为在所述累加子电路完成每轮累加之后且在开始下一轮累加之前在所述控制子电路的输出端提供所述累加子电路的输出。
在一些实施例中,所述求和单元包括加法器。
在一些实施例中,所述至少一个乘累加单元包括两个或更多个所述乘累加单元,所述求和单元包括n级压缩树和加法器,所述两个或更多个所述乘累加单元中的每个乘累加单元的输出端耦接到所述n级压缩树中的第1级压缩树的相应输入端,所述n级压缩树中的第i级压缩树的输出端耦接到所述n级压缩树中的第(i+1)级压缩树的相应输入端,所述n级压缩树中的第n级压缩树的输出端耦接到所述加法器的相应输入端,其中,n为正整数,i=1,2,…,n-1。
在一些实施例中,所述求和单元还包括附加寄存器组,所述附加寄存器组的输入端耦接到所述加法器的输出端,并且所述附加寄存器组的输出端耦接到所述n级压缩树中的第1级压缩树的相应输入端。
根据本公开的第二方面,提供了一种处理器,其包括根据本公开的第一方面所述的乘累加电路。
根据本公开的第三方面,提供了一种计算装置,其包括根据本公开的第二方面所述的处理器。
通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得更为清楚。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1示出了根据本公开的一些比较示例的乘累加电路的电路图;
图2示出了根据本公开的一些实施例的乘累加电路的示意性框图;
图3至图7分别示出了根据本公开的一些实施例的用于实现图2的乘累加电路的示例电路图;
图8示出了根据本公开的一些实施例的乘累加电路的示意性框图;
图9至图11分别示出了根据本公开的一些实施例的用于实现图8的乘累加电路的示例电路图。
注意,在以下说明的实施方式中,有时在不同的附图之间共同使用同一附图标记来表示相同部分或具有相同功能的部分,而省略其重复说明。在本说明书中,使用相似的标号和字母表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
为了便于理解,在附图等中所示的各结构的位置、尺寸及范围等有时不表示实际的位置、尺寸及范围等。因此,所公开的发明并不限于附图等所公开的位置、尺寸及范围等。此外,附图不必按比例绘制,一些特征可能被放大以示出具体组件的细节。
具体实施方式
下面将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。也就是说,本文中的结构及方法是以示例性的方式示出,来说明本公开中的结构和方法的不同实施例。然而,本领域技术人员将会理解,它们仅仅说明可以用来实施的本公开的示例性方式,而不是穷尽的方式。此外,附图不必按比例绘制,一些特征可能被放大以示出具体组件的细节。
另外,对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
图1示出了一种乘累加电路10,其包括乘法器11、加法器12、寄存器13。假设乘累加电路10要计算x对数的乘累加(a1·b1+a2·b2+……ax·bx,x为正整数),那么在x个周期中的每个周期,将这x对数中的相应一对数ak、bk(k=1,2,……,x)作为乘数馈入乘法器11以计算这对数的乘积ak·bk,然后ak·bk经由加法器12和寄存器13被累加。比如,这x对数从1到x依次馈送,那么在第1个周期结束时寄存器13中存储的结果为a1·b1,第2个周期结束时寄存器13中存储的结果为a1·b1+a2·b2,一直到第x个周期结束时寄存器13中存储的结果为a1·b1+a2·b2+……ax·bx。在乘累加电路10计算a1·b1+a2·b2+……ax·bx的整个运算过程中,乘法器11在每个周期都要执行乘法运算,加法器12在每个周期都要执行加法运算,寄存器13在每个周期都要更新结果,使得整个乘累加电路10一直都在翻转(翻转表示电路信号从0到1或从1到0),这导致乘累加电路10的动态功耗很高。特别地,加法器12提供了电路功耗的重要来源。
为此,本公开提供了一种乘累加电路,其划分了动区和静区,静区的电路部分的翻转频率相比于动区的电路部分的翻转频率要低得多。静区得益于其低翻转频率而具有低功耗,从而实现了降低功耗的乘累加电路。下面将结合附图详细描述根据本公开的各种实施例的乘累加电路。应理解,实际的乘累加电路可能还会包括附加的部件,而为了避免模糊本公开的要点,附图中没有示出并且本公开也没有讨论这些附加的部件。
图2示出了根据本公开的一些实施例的乘累加电路100。乘累加电路100包括乘累加单元110和求和单元120。求和单元120的输入端耦接到乘累加单元110的输出端。乘累加单元110的输入端可提供乘累加电路100的输入端IN,而求和单元120的输出端可提供乘累加电路100的输出端OUT。
乘累加单元110包括乘法子电路111、累加子电路112和控制子电路113。乘法子电路111被配置为接收乘数并对其求积。乘法子电路111的输入端可提供乘累加单元110的输入端。累加子电路112的输入端耦接到乘法子电路111的输出端。累加子电路112被配置为接收乘法子电路111的输出并对其累加。控制子电路113的输入端耦接到累加子电路112的输出端。控制子电路113的输出端可提供乘累加单元110的输出端。控制子电路113被配置为接收控制信号Sc和累加子电路112的输出并根据控制信号Sc而控制是否在控制子电路113的输出端提供累加子电路112的输出。例如,控制信号可被配置为使得控制子电路113在累加子电路112完成每轮累加之前不在控制子电路113的输出端提供累加子电路112的输出,并且被配置为在累加子电路112完成每轮累加之后且在开始下一轮累加之前在控制子电路113的输出端提供累加子电路112的输出。注意,可参考图1理解,这里的“每轮累加”指的是从寄存器每次清空其中存储的结果以准备累加到寄存器下次清空其中存储的结果以准备累加期间所进行的累加,图1中寄存器13的结果从0到(a1·b1+a2·b2+……ax·bx)即为完成一轮累加,而不是指寄存器每次更新其中存储的结果。
求和单元120被配置为接收乘累加单元110的输出并对其求和。在控制子电路113的控制下,求和单元120在累加子电路112完成本轮累加之前不会接收到累加子电路112的输出,因而不会执行求和运算。或者说,在控制子电路113的控制下,求和单元120在累加子电路112完成本轮累加之前所接收到的乘累加单元110的输出一直为零。在累加子电路112完成本轮累加之后,求和单元120才会在控制子电路113的控制下接收到累加子电路112的输出并对其求和。也就是说,在乘累加单元110的整个运算过程中,乘累加单元110一直翻转,但是求和单元120不会翻转。仅在乘累加单元110的运算结束后,求和单元120才会翻转一个周期用于求和。乘累加单元110可视为乘累加电路100的动区,而求和单元120可视为乘累加电路100的静区。通过动区与静区的划分,乘累加电路100实现了降低的功耗。
在一些实施例中,乘法子电路111可包括一个或多个乘法器,所述一个或多个乘法器中的每个乘法器被配置为接收相应一对乘数并对所述相应一对乘数求积。乘法子电路111中的乘法器可以是具有单输出端的乘法器,也可以是具有双输出端的乘法器,这可根据具体需要进行配置。当乘法子电路111包括多个乘法器时,可实现并行计算。
在一些实施例中,累加子电路112可包括压缩树和多个寄存器组,所述压缩树的每个输出端耦接到所述多个寄存器组中的相应一个寄存器组的输入端,乘法子电路111的输出端和所述多个寄存器组中的每个寄存器组的输出端分别耦接到所述压缩树的相应输入端,所述多个寄存器组中的每个寄存器组的输出端分别耦接到控制子电路113的相应输入端,并且控制子电路113被配置为根据控制信号而控制是否在控制子电路113的相应输出端分别提供所述多个寄存器组中的每个寄存器组的输出。常见的压缩树包括4:2压缩树、3:2压缩树等具有两个输出端的压缩树,还包括5:3压缩树、6:3压缩树、7:3压缩树等具有三个输出端的压缩树。累加子电路112中使用的压缩树可以是现在已有的或以后开发的具有任意数量的输入端和输出端的压缩树,只要能够实现对乘法子电路111的输出结果的压缩即可。当乘法子电路111的输出端的数量和寄存器组的输出端的数量之和大于采用的压缩树的输入端的数量时,也可以采用多个压缩树的组合(例如,多级压缩树的级联,每级压缩树可包括一个压缩树或并行的多个压缩树)。在一些实施例中,控制子电路113可包括多个控制元件,所述多个控制元件中的每个控制元件的第一输入端耦接到所述多个寄存器组中的相应一个寄存器组的输出端,所述多个控制元件中的每个控制元件的第二输入端被配置为接收控制信号,所述多个控制元件中的每个控制元件的输出端提供乘累加单元110的相应一个输出端,所述多个控制元件中的每个控制元件被配置为根据所接收的控制信号而控制是否在所述控制元件的输出端提供所述相应一个寄存器组的输出。
在另一些实施例中,压缩树也可以被替代地实现为全加器或者全加器与半加器的组合。例如,在一些实施例中,累加子电路112可包括具有一级或多级全加器的全加器模块、第一寄存器组和第二寄存器组,全加器模块的第一输出端耦接到第一寄存器组的输入端,全加器模块的第二输出端耦接到第二寄存器组的输入端,乘法子电路111的输出端、第一寄存器组的输出端和第二寄存器组的输出端分别耦接到全加器模块的相应输入端。第一寄存器组的输出端和第二寄存器组的输出端分别耦接到控制子电路113的相应输入端,并且控制子电路113被配置为根据控制信号而控制是否在控制子电路113的相应输出端分别提供第一寄存器组的输出和第二寄存器组的输出。在一些实施例中,控制子电路113包括第一控制元件和第二控制元件。第一控制元件的第一输入端耦接到第一寄存器组的输出端,第一控制元件的第二输入端被配置为接收控制信号,第一控制元件的输出端提供乘累加单元110的第一输出端。第一控制元件被配置为根据所接收的控制信号而控制是否在第一控制元件的输出端提供第一寄存器组的输出。第二控制元件的第一输入端耦接到第二寄存器组的输出端,第二控制元件的第二输入端被配置为接收控制信号,第二控制元件的输出端提供乘累加单元110的第二输出端。第二控制元件被配置为根据所接收的控制信号而控制是否在第二控制元件的输出端提供第二寄存器组的输出。
累加子电路112不包括加法器,从而使得累加子电路112即使在整个运算过程中一直翻转也不会产生过高功耗。寄存器组中包括的寄存器的数量可取决于寄存器的位宽和输入数据的位宽。
在一些实施例中,控制子电路113可包括以下至少之一:与门、与非门、多路选择器、反相多路选择器。
在一些实施例中,求和单元120可包括加法器。当乘累加单元110只有两个输出端时,求和单元120可只包括加法器。当乘累加单元110包括多于两个输出端时,求和单元120可包括n级压缩树和加法器,乘累加单元110的输出端耦接到所述n级压缩树中的第1级压缩树的相应输入端,所述n级压缩树中的第i级压缩树的输出端耦接到所述n级压缩树中的第(i+1)级压缩树的相应输入端,所述n级压缩树中的第n级压缩树的输出端耦接到所述加法器的相应输入端,其中,n为正整数,i=1,2,…,n-1。每级压缩树可包括一个压缩树或并行的多个压缩树。与以上类似地,这里的压缩树也可以被替代地实现为全加器或者全加器与半加器的组合。另外,在一些实施例中,求和单元120还可包括附加寄存器组,所述附加寄存器组的输入端耦接到所述加法器的输出端,并且所述附加寄存器组的输出端耦接到所述n级压缩树中的第1级压缩树的相应输入端。由于附加寄存器组的引入使得求和单元120也具备了累加功能,这使得累加子电路112不必完全累加,降低了对累加子电路112的寄存器组的位宽要求,使得累加子电路112的寄存器组中的寄存器可以具有较小的比特数进而具有较低的面积和功耗。
出于非限制性说明目的,图3至图7分别示出了根据本公开的一些实施例的用于实现图2的乘累加电路100的示例电路图。
如图3所示,乘累加电路100A包括乘累加单元110和求和单元120。乘累加单元110包括乘法子电路111、累加子电路112和控制子电路113。在图3的示例中,乘法子电路111包括一个具有单输出端的乘法器1110。假设乘累加电路100A要计算x对数的乘累加(a1·b1+a2·b2+……ax·bx,x为正整数),那么在x个周期中的每个周期,可以将这x对数中的相应一对数ak、bk(k=1,2,……,x)作为乘数馈入乘法器1110以计算这对数的乘积ak·bk,然后ak·bk经由累加子电路112被累加。
累加子电路112包括作为3:2压缩树的压缩树1120以及第一寄存器组1121和第二寄存器组1122。压缩树1120的第一输出端耦接到第一寄存器组1121的输入端,并且压缩树1120的第二输出端耦接到第二寄存器组1122的输入端。乘法器1110的输出端、第一寄存器组1121的输出端和第二寄存器组1122的输出端分别耦接到压缩树1120的相应输入端。
控制子电路113包括第一控制元件1131和第二控制元件1132。第一控制元件1131的第一输入端耦接到第一寄存器组1121的输出端,第一控制元件1131的第二输入端被配置为接收控制信号Sc,并且第一控制元件1131的输出端可提供乘累加单元110的第一输出端。第一控制元件1131被配置为根据接收的控制信号Sc而控制是否在第一控制元件1131的输出端提供第一寄存器组1121的输出。第二控制元件1132的第一输入端耦接到第二寄存器组1122的输出端,第二控制元件1132的第二输入端被配置为接收控制信号Sc,并且第二控制元件1132的输出端可提供乘累加单元110的第二输出端。第二控制元件1132被配置为根据接收的控制信号Sc而控制是否在第二控制元件1132的输出端提供第二寄存器组1122的输出。第一控制元件1131和第二控制元件1132中的每一个可包括以下至少之一:与门、与非门、多路选择器、反相多路选择器。例如,第一控制元件1131和第二控制元件1132中的每一个可包括与门组或与非门组或多路选择器组或反相多路选择器组。与门组或与非门组或多路选择器组或反相多路选择器组中的元件数量可取决于数据位宽。例如,当第一控制元件1131和第二控制元件1132中的每一个包括与门组时,在控制信号Sc=0的情况下不在其输出端提供相应寄存器组的输出(替代地,可在其输出端输出0)而在控制信号Sc=1的情况下在其输出端提供相应寄存器组的输出。当第一控制元件1131和第二控制元件1132中的每一个包括多路选择器组时,控制信号Sc可充当选择信号,0可充当第一输入,而相应寄存器组的输出可充当第二输入,由此多路选择器组在控制信号Sc=0的情况下在其输出端提供作为0的第一输入(即不在其输出端提供作为相应寄存器组的输出的第二输入)而在控制信号Sc=1的情况下在其输出端提供作为相应寄存器组的输出的第二输入。当第一控制元件1131和第二控制元件1132中的每一个包括与非门组时的情形以及当第一控制元件1131和第二控制元件1132中的每一个包括反相多路选择器组时的情形分别与当第一控制元件1131和第二控制元件1132中的每一个包括与门组时的情形以及当第一控制元件1131和第二控制元件1132中的每一个包括多路选择器组时的情形类似,但是会提供反相输出,这可以通过调整求和单元120的配置(例如,增设非门或反相器等)来在求和单元120内部进行校正。
求和单元120包括一个加法器1200。假设乘累加电路100A要计算的x对数从1到x依次馈送到乘法器1110,那么在第1个周期结束时第一寄存器组1121中存储的结果为a1·b1的第一部分而第二寄存器组1122中存储的结果为a1·b1的第二部分,第2个周期结束时第一寄存器组1121中存储的结果为(a1·b1+a2·b2)的第一部分而第二寄存器组1122中存储的结果为(a1·b1+a2·b2)的第二部分,一直到第x个周期结束时第一寄存器组1121中存储的结果为(a1·b1+a2·b2+……ax·bx)的第一部分而第二寄存器组1122中存储的结果为(a1·b1+a2·b2+……ax·bx)的第二部分。在这x个周期中,在控制信号Sc的控制下,加法器1200未接收到第一寄存器组1121和第二寄存器组1122的任何输出,因此一直未翻转。在第x+1个周期,切换控制信号Sc以将第一寄存器组1121中存储的结果(a1·b1+a2·b2+……ax·bx)的第一部分和第二寄存器组1122中存储的结果(a1·b1+a2·b2+……ax·bx)的第二部分提供至加法器1200处,由加法器1200求和得到(a1·b1+a2·b2+……ax·bx)。因此,加法器1200只翻转了一个周期。
与图1的乘累加电路10相比,图3的乘累加电路100A将一级累加电路变为两级累加电路后分别置于动区和静区,动区中的第一级累加电路都是简单电路部件并不包括加法器,因此即使翻转频率高也不会带来太多功耗,静区中的第二级累加电路虽然包括加法器但是翻转频率很低因而也不会带来太多功耗。因此,乘累加电路100A整体具有降低的功耗。
图4示出了乘累加电路100B,其与图3的乘累加电路100A相比,区别在于乘法器1110从单输出端变为双输出端,相应地压缩树1120从3:2压缩树变为4:2压缩树。乘法器通常包括三个部分,部分积产生部分、部分积累加部分和最终相加部分。具有双输出端的乘法器相比于具有单输出端的乘法器可减少最终相加部分,即可以减少一个加法器。由于乘法器1110在整个运算过程中一直在翻转,因此采用具有双输出端的乘法器相比于采用具有单输出端的乘法器可进一步实现降低的功耗。
可以理解的是,虽然图3的乘累加电路100A中的具有单输出端的乘法器中包含加法器,但是这个加法器相较于加法器1200或者乘累加电路10中采用的加法器12而言具有较小的位宽,因此即使具有单输出端的乘法器的加法器翻转频繁也不会带来那么高的动态功耗。
图5示出了乘累加电路100C,其与图4的乘累加电路100B相比,区别在于乘法子电路111包括m个并行的乘法器11101、11102、……1110m(m为大于1的正整数),相应地压缩树1120从4:2压缩树变为m:2压缩树。如前面已提过的,当m:2压缩树不便设计时,也可采用现有压缩树的组合来实现m个输入到2个输出的压缩。通过乘法器的并行设计,乘累加电路100C在每个周期可实现m对数的乘累加,相比于图4的乘累加电路100B所需的(x+1)个周期,乘累加电路100C只需要(x/m+1)个周期,因而具有提高的运算效率。可以根据实际需要灵活配置并行的乘法器的数量m。
图6示出了乘累加电路100D,其与图5的乘累加电路100C相比,区别在于用具有多级全加器(Full Adder,FA)的全加器模块1120’替代了压缩树1120。
图7示出了乘累加电路100E,其与图5的乘累加电路100C相比,区别在于累加子电路112包括m个并行的压缩树11201、……1120m,在这些压缩树的输出端相应地设置有第一寄存器组11211、……1121m、第一控制元件11311、……1131m、第二寄存器组11221、……1122m、第二控制元件11321、……1132m。虽然在图7中每个压缩树被图示为对应一个乘法器,但可以理解的是,每个压缩树前也可并行有多个乘法器。乘累加电路100E的压缩树相比于乘累加电路100C的压缩树可具有更简单的设计。从另一个角度看,当乘累加电路100E与乘累加电路100C采用同种压缩树时,前者可容纳更大的乘法器规模,从而进一步提高电路处理性能。而且,乘累加电路100E的累加子电路112相比于乘累加电路100C的累加子电路112被划分为多个部分以分别进行累加,避免了一个累加部分中的电路规模过大造成时序收敛困难。
图8示出了根据本公开的一些实施例的乘累加电路200。乘累加电路200包括多个乘累加单元1101、1102、……110j(j为大于1的正整数)以及求和单元120。乘累加单元1101、1102、……110j中的每个乘累加单元的输出端耦接到求和单元120的相应输入端。乘累加单元1101、1102、……110j中的每个乘累加单元的输入端可提供乘累加电路200的输入端IN,而求和单元120的输出端可提供乘累加电路200的输出端OUT。
乘累加单元1101、1102、……110j各自包括乘法子电路1111、1112、……111j、累加子电路1121、1122、……112j、控制子电路1131、1132、……113j。控制子电路1131、1132、……113j各自接收控制信号Sc1、Sc2、……、Scj。例如,控制信号Sc1、Sc2、……、Scj中的每一个可被配置为使得控制子电路1131、1132、……113j中的相应一个控制子电路在累加子电路1121、1122、……112j中的相应一个累加子电路完成每轮累加之前不在所述相应一个控制子电路的输出端提供所述相应一个累加子电路的输出,并且被配置为在所述相应一个累加子电路完成每轮累加之后且在开始下一轮累加之前在所述相应一个控制子电路的输出端提供所述相应一个累加子电路的输出。
求和单元120被配置为接收多个乘累加单元1101、1102、……110j的输出并对其求和。在控制子电路1131、1132、……113j的控制下,求和单元120在累加子电路1121、1122、……112j完成本轮累加之前不会接收到累加子电路1121、1122、……112j的输出,因而不会执行求和运算。在累加子电路1121、1122、……112j完成本轮累加之后,求和单元120才会在控制子电路1131、1132、……113j的控制下接收到累加子电路1121、1122、……112j的输出并对其求和。也就是说,在乘累加单元1101、1102、……110j的整个运算过程中,乘累加单元1101、1102、……110j一直翻转,但是求和单元120不会翻转。仅在乘累加单元1101、1102、……110j的运算结束后,求和单元120才会翻转一个周期用于求和。乘累加单元1101、1102、……110j可视为乘累加电路200的动区,而求和单元120可视为乘累加电路200的静区。通过动区与静区的划分,乘累加电路200实现了降低的功耗。
乘累加单元1101、1102、……110j中的每一个乘累加单元类似于前述乘累加电路100的乘累加单元110,因此前面关于乘累加单元110的描述及其各种实施例同样适用于此,在此不多赘述。可以理解的是,乘累加单元1101、1102、……110j可以具有相同的设计,也可以具有不同的设计。
相比于只具有一个乘累加单元110的乘累加电路100,乘累加电路200具有多个并行的乘累加单元1101、1102、……110j,每个乘累加单元承担一部分累加功能,使得可以将每个乘累加单元保持在适当规模,避免了单个乘累加单元的电路规模过大造成时序收敛困难,便于降低毛刺功耗并优化电路速度。
特别地,由于多个乘累加单元1101、1102、……110j通常具有超过两个输出端,因此在这样的实施例中,求和单元120可包括n级压缩树和加法器,乘累加单元1101、1102、……110j中的每一个乘累加单元的输出端耦接到所述n级压缩树中的第1级压缩树的相应输入端,所述n级压缩树中的第i级压缩树的输出端耦接到所述n级压缩树中的第(i+1)级压缩树的相应输入端,所述n级压缩树中的第n级压缩树的输出端耦接到所述加法器的相应输入端,其中,n为正整数,i=1,2,…,n-1。每级压缩树可包括一个压缩树或并行的多个压缩树。与以上类似地,这里的压缩树也可以被替代地实现为全加器或者全加器与半加器的组合。另外,在一些实施例中,求和单元120还可包括附加寄存器组,所述附加寄存器组的输入端耦接到所述加法器的输出端,并且所述附加寄存器组的输出端耦接到所述n级压缩树中的第1级压缩树的相应输入端。由于附加寄存器组的引入使得求和单元120也具备了累加功能,这使得乘累加单元1101、1102、……110j中的每一个乘累加单元的累加子电路不必完全累加,降低了对累加子电路的寄存器组的位宽要求,使得累加子电路的寄存器组中的寄存器可以具有较小的比特数进而具有较低的面积和功耗。
出于非限制性说明目的,图9至图11分别示出了根据本公开的一些实施例的用于实现图8的乘累加电路200的示例电路图。
图9示出了乘累加电路200A,其与图5的乘累加电路100C相比,区别在于乘累加单元的数量从1个变成了j个,相应地求和单元120在加法器1200前增加了一级压缩树,即第1级压缩树1210,以便压缩来自j个乘累加单元1101、……110j的输出。通过乘累加单元的并行设计,乘累加电路200A的每个乘累加单元在每个周期都可实现m对数的乘累加,相比于图5的乘累加电路100C所需的(x/m+1)个周期,乘累加电路200A只需要(x/jm+1)个周期,因而具有提高的运算效率。可以根据实际需要灵活配置并行的乘累加单元的数量j。
参考图10,其示出了求和单元120在加法器1200前增加了两级压缩树,其中第1级压缩树包括两个并行的压缩树12101、12102,第2级压缩树包括一个压缩树1220,乘累加单元1101、……110j的输出端耦接到第1级压缩树12101、12102的相应输入端,第1级压缩树12101、12102的输出端耦接到第2级压缩树1220的相应输入端,第2级压缩树1220的输出端耦接到加法器1200,加法器1200的输出端提供求和单元120的输出端也提供乘累加电路的输出端。图10相当于用三个4:2压缩树的组合实现了一个8:2压缩树。图10的求和单元120的压缩树相比于图9的求和单元120的压缩树可具有更简单的设计。从另一个角度看,当图10的求和单元120与图9的求和单元120采用同种压缩树时,前者可容纳更大的乘累加单元规模,从而进一步提高电路处理性能。
图11示出了乘累加电路200B,其与图9的乘累加电路200A相比,区别在于求和单元120还包括附加寄存器组1201,附加寄存器组1201的输入端耦接到加法器1200的输出端,并且附加寄存器组1201的输出端耦接到第1级压缩树1210的相应输入端。附加寄存器组1201的引入使得求和单元120也具备了累加功能,这使得乘累加单元1101、……110j中的每一个乘累加单元的累加子电路不必完全累加,降低了对累加子电路的寄存器组的位宽要求,使得累加子电路的寄存器组中的寄存器可以具有较小的比特数进而具有较低的面积和功耗。
举例来说,假设乘累加电路200B要实现1024对数的乘累加(a1·b1+a2·b2+……a1024·b1024),乘累加电路200B包括4个乘累加单元(j=4),每个乘累加单元的乘法子电路包括4个乘法器(m=4),那么典型的乘累加运算过程可以如下进行:16个乘法器并行计算以在每个周期输出16个乘法运算结果;4个累加子电路并行累加,每个累加子电路中的寄存器组被配置为每8个周期输出所存储结果并清空(意味着一轮累加包括8个周期),因此在相应控制子电路的控制下每个累加子电路每次提供给求和单元的输出包括32对数的乘累加结果,也即求和单元每隔8个周期会接收到128对数的乘累加结果;为了完成1024对数的乘累加,求和单元中的压缩树、加法器和附加寄存器组需要翻转8次。
相比之下,如果用图1的乘累加电路10实现1024对数的乘累加,加法器需要翻转1024次。由此可见,虽然乘累加电路200B在求和单元120中引入了累加功能,但是求和单元120的翻转频率仍然得到有效抑制从而使得乘累加电路200B具有降低的功耗。
另外,如果用乘累加电路200A实现1024对数的乘累加,乘累加电路200A也包括4个乘累加单元(j=4),每个乘累加单元的乘法子电路也包括4个乘法器(m=4),那么如前所述求和单元120只需要翻转一次。虽然乘累加电路200B的求和单元120的翻转频率高于乘累加电路200A的求和单元120的翻转频率,但它们的功耗都远远低于乘累加电路10的功耗,而在实际应用中,功耗降低达1个数量级就可能已经具有足够的意义了。抛开翻转产生的动态功耗来看,乘累加电路200B相比于乘累加电路200A降低了对累加子电路的寄存器组的位宽要求,使得累加子电路的寄存器组中的寄存器可以具有较小的比特数进而具有较低的面积和功耗,因此乘累加电路200B还从另一个维度降低了功耗并改进了其它方面的性能。
本公开在另一方面还提供了一种处理器,其可包括根据前述任一实施例所述的乘累加电路。例如,这样的处理器可以是协处理器、数字信号处理器、中央处理器、专用指令处理器、神经网络处理器等各种处理器。在这样的处理器是神经网络处理器的情况下,其卷积计算单元可包括根据前述任一实施例所述的乘累加电路。
本公开在又一方面还提供了一种计算装置,其可包括根据前述任意实施例所述的处理器。计算装置的示例可以包括但不限于消费电子产品、消费电子产品的部件、电子测试设备、诸如基站的蜂窝通信基础设施等。计算装置的示例可以包括但不限于诸如智能电话的移动电话、诸如智能手表或耳机的可穿戴计算设备、电话、电视、计算机监视器、计算机、调制解调器、手持式计算机、膝上型计算机、平板计算机、个人数字助理(PDA)、微波炉、冰箱、如汽车电子系统的车载电子系统、立体声系统、DVD播放器、CD播放器、如MP3播放器的数字音乐播放器、收音机、便携式摄像机、如数码相机的相机、便携式存储芯片、洗衣机、烘干机、洗衣机/烘干机、外围设备、时钟等。此外,计算装置可包括非完整产品。
说明书及权利要求中的词语“左”、“右”、“前”、“后”、“顶”、“底”、“上”、“下”、“高”、“低”等,如果存在的话,用于描述性的目的而并不一定用于描述不变的相对位置。应当理解,这样使用的词语在适当的情况下是可互换的,使得在此所描述的本公开的实施例,例如,能够在与在此所示出的或另外描述的那些取向不同的其它取向上操作。例如,在附图中的装置倒转时,原先描述为在其它特征“之上”的特征,此时可以描述为在其它特征“之下”。装置还可以以其它方式定向(旋转90度或在其它方位),此时将相应地解释相对空间关系。
在说明书及权利要求中,称一个元件位于另一元件“之上”、“附接”至另一元件、“连接”至另一元件、“耦接”至另一元件、或“接触”另一元件等时,该元件可以直接位于另一元件之上、直接附接至另一元件、直接连接至另一元件、直接耦接至另一元件或直接接触另一元件,或者可以存在一个或多个中间元件。相对照的是,称一个元件“直接”位于另一元件“之上”、“直接附接”至另一元件、“直接连接”至另一元件、“直接耦接”至另一元件或“直接接触”另一元件时,将不存在中间元件。在说明书及权利要求中,一个特征布置成与另一特征“相邻”,可以指一个特征具有与相邻特征重叠的部分或者位于相邻特征上方或下方的部分。
如在此所使用的,词语“示例性的”意指“用作示例、实例或说明”,而不是作为将被精确复制的“模型”。在此示例性描述的任意实现方式并不一定要被解释为比其它实现方式优选的或有利的。而且,本公开不受在技术领域、背景技术、发明内容或具体实施方式中所给出的任何所表述的或所暗示的理论所限定。
如在此所使用的,词语“基本上”意指包含由设计或制造的缺陷、器件或元件的容差、环境影响和/或其它因素所致的任意微小的变化。词语“基本上”还允许由寄生效应、噪声以及可能存在于实际的实现方式中的其它实际考虑因素所致的与完美的或理想的情形之间的差异。
另外,仅仅为了参考的目的,还可以在本文中使用“第一”、“第二”等类似术语,并且因而并非意图限定。例如,除非上下文明确指出,否则涉及结构或元件的词语“第一”、“第二”和其它此类数字词语并没有暗示顺序或次序。
还应理解,“包括/包含”一词在本文中使用时,说明存在所指出的特征、整体、步骤、操作、单元和/或组件,但是并不排除存在或增加一个或多个其它特征、整体、步骤、操作、单元和/或组件以及/或者它们的组合。
另外,当在本申请中使用时,词语“此处”,“以上”、“以下”、“下文”、“上文”和类似含义的词语应当指代本申请的整体而不是本申请的任何特定部分。此外,除非另有明确说明或者在所使用的上下文中以其它方式理解,否则本文使用的条件语言,例如“可以”、“可能”、“例如”、“诸如”等等通常旨在表达某些实施例包括,而其它实施例不包括某些特征、元素和/或状态。因此,这种条件语言通常不旨在暗示一个或多个实施例以任何方式需要特征、元素和/或状态,或者是否包括这些特征、元素和/或状态或者在任何特定实施例中执行这些特征、元素和/或状态。
在本公开中,术语“提供”从广义上用于涵盖获得对象的所有方式,因此“提供某对象”包括但不限于“购买”、“制备/制造”、“布置/设置”、“安装/装配”、和/或“订购”对象等。
如本文所使用的,术语“和/或”包括相关联的列出项目中的一个或多个的任何和所有组合。本文中使用的术语只是出于描述特定实施例的目的,并不旨在限制本公开。如本文中使用的,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非上下文另外清楚指示。
本领域技术人员应当意识到,在上述操作之间的边界仅仅是说明性的。多个操作可以结合成单个操作,单个操作可以分布于附加的操作中,并且操作可以在时间上至少部分重叠地执行。而且,另选的实施例可以包括特定操作的多个实例,并且在其它各种实施例中可以改变操作顺序。但是,其它的修改、变化和替换同样是可能的。可以以任何方式和/或与其它实施例的方面或元件相结合地组合以上公开的所有实施例的方面和元件,以提供多个附加实施例。因此,本说明书和附图应当被看作是说明性的,而非限制性的。实际上,这里描述的新颖设备、方法和系统可以以各种其它形式体现。此外,在不脱离本公开的精神的情况下,可以对这里描述的方法和系统的形式进行各种省略、替换和改变。例如,虽然以给定布置呈现块,但是替代实施例可以执行具有不同组件和/或电路拓扑的类似功能,并且可以删除、移动、添加、细分、组合和/或修改一些块。这些块中的每一个可以以各种不同的方式实现。
本公开的各个实施例可采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。在本公开中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本公开的至少一个实施例或示例中。在本公开中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。
虽然已通过示例对本公开的一些特定实施例进行了详细说明,但本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。在此公开的各实施例可以任意组合,而不脱离本公开的精神和范围。本领域的技术人员还应理解,可以对实施例进行多种修改而不脱离本公开的范围和精神。本公开的范围由所附权利要求来限定。
Claims (15)
1.一种乘累加电路,被配置为计算多对乘数的乘积之和,所述乘累加电路包括:
至少一个乘累加单元,所述乘累加单元包括:
乘法子电路,被配置为接收所述多对乘数中的相应乘数并对其求积,
累加子电路,所述累加子电路的输入端耦接到所述乘法子电路的输出端,所述累加子电路被配置为接收所述乘法子电路的输出并对其累加,以及
控制子电路,所述控制子电路的输入端耦接到所述累加子电路的输出端,所述控制子电路的输出端提供所述乘累加单元的输出端,所述控制子电路被配置为接收控制信号和所述累加子电路的输出并根据所述控制信号而控制是否在所述控制子电路的输出端提供所述累加子电路的输出;以及
求和单元,所述求和单元的输入端耦接到所述至少一个乘累加单元的输出端,所述求和单元包括附加寄存器组,所述附加寄存器组的输出端提供所述求和单元的输出端并且所述附加寄存器组的输出端进一步耦接到所述求和单元的输入端,所述求和单元被配置为接收所述至少一个乘累加单元的输出并对其累加。
2.根据权利要求1所述的乘累加电路,其中,所述乘法子电路包括一个或多个乘法器,所述一个或多个乘法器中的每个乘法器被配置为接收相应一对乘数并对所述相应一对乘数求积。
3.根据权利要求2所述的乘累加电路,其中,所述乘法子电路的乘法器具有单输出端。
4.根据权利要求2所述的乘累加电路,其中,所述乘法子电路的乘法器具有双输出端。
5.根据权利要求1所述的乘累加电路,其中,所述累加子电路包括压缩树和多个寄存器组,所述压缩树的每个输出端耦接到所述多个寄存器组中的相应一个寄存器组的输入端,所述乘法子电路的输出端和所述多个寄存器组中的每个寄存器组的输出端分别耦接到所述压缩树的相应输入端,
其中,所述多个寄存器组中的每个寄存器组的输出端分别耦接到所述控制子电路的相应输入端,并且所述控制子电路被配置为根据所述控制信号而控制是否在所述控制子电路的相应输出端分别提供所述多个寄存器组中的每个寄存器组的输出。
6.根据权利要求5所述的乘累加电路,其中,所述控制子电路包括:
多个控制元件,所述多个控制元件中的每个控制元件的第一输入端耦接到所述多个寄存器组中的相应一个寄存器组的输出端,所述多个控制元件中的每个控制元件的第二输入端被配置为接收控制信号,所述多个控制元件中的每个控制元件的输出端提供所述乘累加单元的相应一个输出端,所述多个控制元件中的每个控制元件被配置为根据所接收的控制信号而控制是否在所述控制元件的输出端提供所述相应一个寄存器组的输出。
7.根据权利要求1所述的乘累加电路,其中,所述累加子电路包括具有一级或多级全加器的全加器模块、第一寄存器组和第二寄存器组,所述全加器模块的第一输出端耦接到所述第一寄存器组的输入端,所述全加器模块的第二输出端耦接到所述第二寄存器组的输入端,所述乘法子电路的输出端、所述第一寄存器组的输出端和所述第二寄存器组的输出端分别耦接到所述全加器模块的相应输入端,
其中,所述第一寄存器组的输出端和所述第二寄存器组的输出端分别耦接到所述控制子电路的相应输入端,并且所述控制子电路被配置为根据所述控制信号而控制是否在所述控制子电路的相应输出端分别提供所述第一寄存器组的输出和所述第二寄存器组的输出。
8. 根据权利要求7所述的乘累加电路,其中,所述控制子电路包括:
第一控制元件,所述第一控制元件的第一输入端耦接到所述第一寄存器组的输出端,所述第一控制元件的第二输入端被配置为接收控制信号,所述第一控制元件的输出端提供所述乘累加单元的第一输出端,所述第一控制元件被配置为根据所接收的控制信号而控制是否在所述第一控制元件的输出端提供所述第一寄存器组的输出;以及
第二控制元件,所述第二控制元件的第一输入端耦接到所述第二寄存器组的输出端,所述第二控制元件的第二输入端被配置为接收控制信号,所述第二控制元件的输出端提供所述乘累加单元的第二输出端,所述第二控制元件被配置为根据所接收的控制信号而控制是否在所述第二控制元件的输出端提供所述第二寄存器组的输出。
9.根据权利要求1所述的乘累加电路,其中,所述控制子电路包括以下至少之一:与门、与非门、多路选择器、反相多路选择器。
10.根据权利要求1所述的乘累加电路,其中,所述控制信号被配置为使得所述控制子电路在所述累加子电路完成每轮累加之前不在所述控制子电路的输出端提供所述累加子电路的输出,并且被配置为在所述累加子电路完成每轮累加之后且在开始下一轮累加之前在所述控制子电路的输出端提供所述累加子电路的输出。
11.根据权利要求1至10中任一项所述的乘累加电路,其中,所述求和单元包括加法器。
12.根据权利要求1至10中任一项所述的乘累加电路,其中,所述至少一个乘累加单元包括两个或更多个所述乘累加单元,所述求和单元包括n级压缩树和加法器,所述两个或更多个所述乘累加单元中的每个乘累加单元的输出端耦接到所述n级压缩树中的第1级压缩树的相应输入端,所述n级压缩树中的第i级压缩树的输出端耦接到所述n级压缩树中的第(i+1)级压缩树的相应输入端,所述n级压缩树中的第n级压缩树的输出端耦接到所述加法器的相应输入端,
其中,n为正整数,i=1,2,…,n-1。
13.根据权利要求12所述的乘累加电路,其中,所述求和单元还包括附加寄存器组,所述附加寄存器组的输入端耦接到所述加法器的输出端,并且所述附加寄存器组的输出端耦接到所述n级压缩树中的第1级压缩树的相应输入端。
14.一种处理器,包括根据权利要求1至13中任一项所述的乘累加电路。
15.一种计算装置,包括根据权利要求14所述的处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310990483.3A CN116700670B (zh) | 2023-08-08 | 2023-08-08 | 乘累加电路、包含该乘累加电路的处理器和计算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310990483.3A CN116700670B (zh) | 2023-08-08 | 2023-08-08 | 乘累加电路、包含该乘累加电路的处理器和计算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116700670A CN116700670A (zh) | 2023-09-05 |
CN116700670B true CN116700670B (zh) | 2024-04-05 |
Family
ID=87829758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310990483.3A Active CN116700670B (zh) | 2023-08-08 | 2023-08-08 | 乘累加电路、包含该乘累加电路的处理器和计算装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116700670B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5847981A (en) * | 1997-09-04 | 1998-12-08 | Motorola, Inc. | Multiply and accumulate circuit |
CN101685385A (zh) * | 2008-09-28 | 2010-03-31 | 北京大学深圳研究生院 | 一种复数乘法器 |
CN103092560A (zh) * | 2013-01-18 | 2013-05-08 | 中国科学院自动化研究所 | 一种基于Bypass技术的低功耗乘法器 |
CN108734281A (zh) * | 2017-04-21 | 2018-11-02 | 上海寒武纪信息科技有限公司 | 处理装置、处理方法、芯片及电子装置 |
CN109634556A (zh) * | 2018-11-06 | 2019-04-16 | 海南大学 | 一种乘累加器及累加输出方法 |
CN111767025A (zh) * | 2020-08-04 | 2020-10-13 | 腾讯科技(深圳)有限公司 | 包括乘累加器的芯片、终端及浮点运算的控制方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6742012B2 (en) * | 2000-12-27 | 2004-05-25 | Arm Limited | Apparatus and method for performing multiplication operations |
CN109344964B (zh) * | 2018-08-08 | 2020-12-29 | 东南大学 | 一种适用于神经网络的乘加计算方法和计算电路 |
-
2023
- 2023-08-08 CN CN202310990483.3A patent/CN116700670B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5847981A (en) * | 1997-09-04 | 1998-12-08 | Motorola, Inc. | Multiply and accumulate circuit |
CN101685385A (zh) * | 2008-09-28 | 2010-03-31 | 北京大学深圳研究生院 | 一种复数乘法器 |
CN103092560A (zh) * | 2013-01-18 | 2013-05-08 | 中国科学院自动化研究所 | 一种基于Bypass技术的低功耗乘法器 |
CN108734281A (zh) * | 2017-04-21 | 2018-11-02 | 上海寒武纪信息科技有限公司 | 处理装置、处理方法、芯片及电子装置 |
CN109634556A (zh) * | 2018-11-06 | 2019-04-16 | 海南大学 | 一种乘累加器及累加输出方法 |
CN111767025A (zh) * | 2020-08-04 | 2020-10-13 | 腾讯科技(深圳)有限公司 | 包括乘累加器的芯片、终端及浮点运算的控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116700670A (zh) | 2023-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Samimi et al. | Res-DNN: A residue number system-based DNN accelerator unit | |
US7774400B2 (en) | Method and system for performing calculation operations and a device | |
JP4555356B2 (ja) | 単一命令複数データ(simd)命令用の積和演算(mac)ユニット | |
Kenney et al. | A high-frequency decimal multiplier | |
US9176709B2 (en) | Shared integer, floating point, polynomial, and vector multiplier | |
US3670956A (en) | Digital binary multiplier employing sum of cross products technique | |
US8069200B2 (en) | Apparatus and method for implementing floating point additive and shift operations | |
Venkatachalam et al. | Approximate sum-of-products designs based on distributed arithmetic | |
CN112712172B (zh) | 用于神经网络运算的计算装置、方法、集成电路和设备 | |
Meher | On efficient retiming of fixed-point circuits | |
CN114003198A (zh) | 内积处理部件、任意精度计算设备、方法及可读存储介质 | |
CN116700670B (zh) | 乘累加电路、包含该乘累加电路的处理器和计算装置 | |
Ahmadi et al. | A low-power improved-accuracy approximate error-report-propagate adder for DSP applications | |
US8275822B2 (en) | Multi-format multiplier unit | |
CN116774966B (zh) | 乘法器、乘累加电路、运算电路、处理器和计算装置 | |
US20220405559A1 (en) | Mixed-precision neural network accelerator tile with lattice fusion | |
GB2530883A (en) | Implementing a square root operation in a computer system | |
CN116820387B (zh) | 乘法器、乘累加电路和卷积运算单元 | |
Kumar et al. | Complex multiplier: implementation using efficient algorithms for signal processing application | |
Balsara et al. | Understanding VLSI bit serial multipliers | |
CN113642722A (zh) | 用于卷积计算的芯片及其控制方法、电子装置 | |
CN116820388B (zh) | 除法器、处理器和计算装置 | |
Sarrigeorgidis et al. | Ultra low power cordic processor for wireless communication algorithms | |
CN110506255A (zh) | 节能型可变功率加法器及其使用方法 | |
CN115576895B (zh) | 计算装置、计算方法及计算机可读存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |