CN112540743A - 面向可重构处理器的有无符号乘累加器及方法 - Google Patents

面向可重构处理器的有无符号乘累加器及方法 Download PDF

Info

Publication number
CN112540743A
CN112540743A CN202011520746.7A CN202011520746A CN112540743A CN 112540743 A CN112540743 A CN 112540743A CN 202011520746 A CN202011520746 A CN 202011520746A CN 112540743 A CN112540743 A CN 112540743A
Authority
CN
China
Prior art keywords
sign bit
partial product
partial
processing
carry
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.)
Granted
Application number
CN202011520746.7A
Other languages
English (en)
Other versions
CN112540743B (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.)
Tsinghua University
Original Assignee
Tsinghua University
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 Tsinghua University filed Critical Tsinghua University
Priority to CN202011520746.7A priority Critical patent/CN112540743B/zh
Publication of CN112540743A publication Critical patent/CN112540743A/zh
Application granted granted Critical
Publication of CN112540743B publication Critical patent/CN112540743B/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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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/4824Methods 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 using signed-digit representation
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5318Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with column wise addition of partial products, e.g. using Wallace tree, Dadda counters
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • G06F7/5336Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (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

本发明公开了一种面向可重构处理器的有无符号乘累加器及方法,其中该乘累加器包括:符号位处理单元,用于根据标志位判断要进行有符号或无符号运算,根据被加数判断要进行乘法或乘累加运算;根据判断结果对被乘数、乘数、被加数进行符号位处理;编码单元,用于对经过符号位处理的乘数进行编码产生Booth‑4编码信号;部分积产生单元,用于根据编码信号对经过符号位处理的被乘数进行部分积运算,得到多个部分积;部分积及进位确定单元,用于对多个部分积及经过符号位处理的被加数进行压缩,得到一个部分积和进位;结果处理单元对一个部分积和进位进行累加,得到有无符号乘或乘累加结果。本发明可以实现高能效、快速和灵活的有无符号乘累加。

Description

面向可重构处理器的有无符号乘累加器及方法
技术领域
本发明涉及集成电路技术领域,尤其涉及面向可重构处理器的有无符号乘累加器及方法。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
粗粒度可重构处理器架构以其低能耗、高性能和高能效和灵活动态可重构的特性,正得到越来越多的关注。粗粒度可重构计算架构是一种综合了通用处理器的灵活性和专用集成电路的高性能计算架构,非常适用于对于数据和计算密集型运算的处理,比如人工智能、数字信号处理、视频图像处理、科学计算和通信加密等领域的应用。
同时,随着人工智能、神经网络、大数据、云计算、5G通信等应用的迅速兴起,其带来的更加密集的数据和更加密集的运算,而这些应用往往都会涉及到大量的乘法(Multiplication,MUL)运算和“乘累加(Multiplication-and-Addition Operation,MAC)”运算。2017年,Google为神经网络应用的加速,构建了一个专用的集成电路加速器TPU(Tensor Processing Unit),其主要采用乘累加器的MAC单元,在一个256x256的MAC阵列上,让乘累加运算以脉动阵列(systolic array)的方式进行执行,从而取得高达92TOPS@8bit的计算能力和4TOPS/W@8bit的能效比。
而目前的可重构处理架构中,乘法运算和加法运算,都是单独分离的运算操作,一个MAC运算往往需要两个或者更多的运算周期,第一个周期将乘数和被乘数做乘法运算;第二个周期将前一个周期的运算结果通过累加器与被加数相加。这样导致乘法/乘累加运算能效低、速度慢及灵活性差等诸多问题,极大地限制了可重构处理器得对上述等任务进行处理。
发明内容
本发明实施例提供一种面向可重构处理器的有无符号乘累加器,用以实现高能效、快速和灵活的有无符号乘累加,该乘累加器包括:
符号位处理单元,用于根据标志位内容,判断要进行有符号运算或无符号运算,根据被加数内容,判断要进行乘法运算或乘累加运算;根据判断结果,对被乘数进行符号位处理,得到经过符号位处理的被乘数,对乘数进行符号位处理,得到经过符号位处理的乘数,对被加数进行符号位处理,得到经过符号位处理的被加数;
编码单元,用于对经过符号位处理的乘数进行基为4的Booth编码,产生Booth-4编码信号;
部分积产生单元,用于根据Booth-4编码信号,对经过符号位处理的被乘数进行部分积运算,得到多个部分积;
部分积及进位确定单元,用于对多个部分积以及经过符号位处理的被加数进行压缩,得到一个部分积和对应的进位;
结果处理单元,用于对一个部分积和对应的进位进行累加,得到有无符号乘或乘累加结果。
本发明实施例还提供一种面向可重构处理器的有无符号乘累加方法,用以实现高能效、快速和灵活的有无符号乘累加,该方法包括:
符号位处理单元根据标志位内容,判断要进行有符号运算或无符号运算,根据被加数内容,判断要进行乘法运算或乘累加运算;根据判断结果,对被乘数进行符号位处理,得到经过符号位处理的被乘数,对乘数进行符号位处理,得到经过符号位处理的乘数,对被加数进行符号位处理,得到经过符号位处理的被加数;
编码单元对经过符号位处理的乘数进行基为4的Booth编码,产生Booth-4编码信号;
部分积产生单元根据Booth-4编码信号,对经过符号位处理的被乘数进行部分积运算,得到多个部分积;
部分积及进位确定单元对多个部分积以及经过符号位处理的被加数进行压缩,得到一个部分积和对应的进位;
结果处理单元对一个部分积和对应的进位进行累加,得到有无符号乘或乘累加结果。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述面向可重构处理器的有无符号乘累方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述面向可重构处理器的有无符号乘累方法的计算机程序。
本发明实施例中,面向可重构处理器的有无符号乘累加方案,与现有技术中乘法运算和加法运算,都是单独分离的运算操作,一个MAC运算往往需要两个或者更多的运算周期,第一个周期将乘数和被乘数做乘法运算;第二个周期将前一个周期的运算结果通过累加器与被加数相加,这样导致乘法/乘累加运算能效低、速度慢及灵活性差等诸多问题的技术方案相比,通过:符号位处理单元根据标志位内容,判断要进行有符号运算或无符号运算,根据被加数内容,判断要进行乘法运算或乘累加运算;根据判断结果,对被乘数进行符号位处理,得到经过符号位处理的被乘数,对乘数进行符号位处理,得到经过符号位处理的乘数,对被加数进行符号位处理,得到经过符号位处理的被加数;编码单元对经过符号位处理的乘数进行基为4的Booth编码,产生Booth-4编码信号;部分积产生单元根据Booth-4编码信号,对经过符号位处理的被乘数进行部分积运算,得到多个部分积;部分积及进位确定单元对多个部分积以及经过符号位处理的被加数进行压缩,得到一个部分积和对应的进位;结果处理单元对一个部分积和对应的进位进行累加,得到有无符号乘或乘累加结果,实现了通过对乘数和被乘数进行符号位扩展,将无符号运算统一到有符号运算,从而可以有效支持有符号和无符号两种的乘法和乘累加运算;同时,通过将被加数巧妙高效的隐藏到乘法的部分积中,从而实现可以根据具体需要,灵活地选择进行乘累加运算,或者进行乘法运算;另外,该乘法器是以改进基为4的Booth算法为基础进行编码产生部分积,减少了部分积的数量。综上,本发明可以实现高能效、快速和灵活的有无符号乘累加。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中面向可重构处理器的有无符号乘累加器的结构示意图;
图2为本发明实施例中32位有/无符号MAC运算的部分积和被加数符号位扩展示意图;
图3A为本发明实施例中对图3B中S的推导示意图;
图3B为本发明实施例中32位有/无符号MAC运算的部分积和被加数符号位的修正结果示意图;
图4为本发明实施例中将32位有/无符号MAC运算的最终结果修正为64位示意图;
图5为本发明实施例中MAC运算采用的Wallace加法树结构示意图;
图6为本发明实施例中MAC运算中CSA3-2逻辑电路图;
图7为本发明实施例中MAC运算中改进的4:2压缩器逻辑电路结构示意图;
图8为本发明实施例中32位MAC运算电路结构能够进行灵活的流水线设计原理示意图;
图9为本发明实施例中将MAC结果进一步进行截断,从而进一步降低硬件的面积和功耗开销示意图;
图10为本发明实施例中面向可重构处理器的有无符号乘累加方法的流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
发明人发现:对粗粒度可重构处理器来说,其天然的处理单元阵列让我们认识到,如果其也可以采用类似脉动阵列的计算形式,那么粗粒度可重构处理器将更加灵活有效地实现卷积神经网络、通信处理、加密处理等应用中乘累加运算。为此,这些都需要对可重构计算架构的硬件设计进行创新。因此发明提出了一种面向可重构处理器的有无符号乘累加器及方法,该累加器及方法为一种面向可重构处理器的高能效和易流水的快速有无符号乘累加器及方法。该乘累加器可以有效地用于粗粒度可重构处理器架构中,通过将被加数巧妙高效地隐藏在乘法器原始的部分积之中,以及灵活的流水线处理,从而实现高度并行地高能效和快速乘法/乘累加运算,并同时灵活支持有/无符号的乘法运算/乘累加运算。下面对该面向可重构处理器的有无符号乘累加器及方法进行详细介绍。
图1为本发明实施例中面向可重构处理器的有无符号乘累加器的结构示意图,如图1所示,该乘累加器包括:
符号位处理单元(图1中的模块1),用于根据标志位内容,判断要进行有符号运算或无符号运算,根据被加数内容,判断要进行乘法运算或乘累加运算;根据判断结果,对被乘数进行符号位处理,得到经过符号位处理的被乘数,对乘数进行符号位处理,得到经过符号位处理的乘数,对被加数进行符号位处理,得到经过符号位处理的被加数;
编码单元(图1中的模块2),用于对经过符号位处理的乘数进行基为4的Booth编码,产生Booth-4编码信号;
部分积产生单元(图1中的模块3),用于根据Booth-4编码信号,对经过符号位处理的被乘数进行部分积运算,得到多个部分积;
部分积及进位确定单元(图1中的模块4),用于对多个部分积以及经过符号位处理的被加数进行压缩,得到一个部分积和对应的进位;
结果处理单元(图1中的模块5),用于对一个部分积和对应的进位进行累加,得到有无符号乘或乘累加结果。
本发明实施例中,面向可重构处理器的有无符号乘累加方案,与现有技术中乘法运算和加法运算,都是单独分离的运算操作,一个MAC运算往往需要两个或者更多的运算周期,第一个周期将乘数和被乘数做乘法运算;第二个周期将前一个周期的运算结果通过累加器与被加数相加,这样导致乘法/乘累加运算能效低、速度慢及灵活性差等诸多问题的技术方案相比,通过对乘数和被乘数进行符号位扩展,将无符号运算统一到有符号运算,从而可以有效支持有符号和无符号两种的乘法和乘累加运算;同时,通过将被加数巧妙高效的隐藏到乘法的部分积中,从而实现可以根据具体需要,灵活地选择进行乘累加运算,或者进行乘法运算;另外,该乘法器是以改进基为4的Booth算法为基础进行编码产生部分积,减少了部分积的数量。综上,本发明可以实现高能效、快速和灵活的有无符号乘累加。
在本发明的乘累加器中,其以基为4的Booth算法为基础,对乘数进行符号位扩展,并经过Booth编码和产生编码信号,进而产生若干部分积、然后通过对这些部分积压缩,从而对最后产生的部分和与进位,进行累加,产生最终的乘法运算或者乘累加运算的结果。如1所示的整体电路结构,该乘累加器主要分为5个主要模块。下面,以32位的乘法或乘累加运算为例进行说明。
1.第一个模块:符号位处理单元。
符号位处理单元根据标志位F是否为1,判断要进行有符号运算还是无符号运算;根据被加数A_in是否为零,判断要进行乘法运算还是乘累加运算。同时,为无符号数增添两位符号位,为有符号数扩展两位符号位。
输入信号:有/无符号运算标志位F,32位被乘数X_in,32位乘数Y_in,32位的被加数A_in。
输出信号:经过符号位处理之后的34位被乘数X_signed,经过符号位处理之后的34位的乘数Y_signed,经过符号位处理之后的34位的被加数A_signed。
2.第二个模块:编码单元。
对经过符号位处理之后的乘数进行基为4的Booth编码,产生编码信号。
输入信号:经过符号位处理之后的乘数Y_signed。
输出信号:表示对应部分积为负的被乘数的信号Neg,表示对应部分积为1倍的被乘数的信号one,表示对应部分积为2倍的被乘数的信号two。
3.第三个模块:部分积产生单元。
根据Booth-4编码信号Neg、one、two,对进行符号位处理过的被乘数X_signed,进行部分积符号位扩展、移位、取反和加Neg等运算,得到对应的部分积。
输入信号:表示对应部分积为负的被乘数的信号Neg,表示对应部分积为1倍的被乘数的信号one,表示对应部分积为2倍的被乘数的信号two,经过符号位处理之后的34位被乘数X_signed。
输出信号:17个部分积,PP0~PP16
4.第四个模块:部分积及进位确定单元。
对部分积以及乘累加中的被加数进行压缩,实现流水操作最终产生一个部分积和对应的进位。
输入信号:17个部分积,PP0~PP16,以及经过符号位处理之后的34位的乘累加中的被加数A_signed。
输出信号:部分积sum,对应的进位carry。
5.第五个模块:结果处理单元。
本发明的乘累加器中,采用Wallace树,对最后产生的部分积和及部分积进位,进行累加,产生有无符号乘法运算或者乘加运算的最终结果。
输入信号:Wallace树产生的部分积sum,对应的进位carry。
输出信号:乘法或者乘累加运算的最终结果product。
综上,本发明实施例提供的面向可重构处理器的有无符号乘累加器的有益技术效果,即技术贡献和优势包括:
本发明实施例根据有无符号数的标志位以及输入的被加数是否为零,进行判断,用一套电路完成有、无符号乘法运算/乘累加运算等四种运算模式,避免了为每一种运算单独设计一套电路额外的面积和功耗开销,具有如下优势和贡献:
(1)在本发明设计的乘累加器设计中,其能够同时支持有无符号乘法/有无符号乘累加运算,能够极大节约并充分利用硬件资源,同时保证乘累加器的多种功能动态可配置。
(2)在本发明设计的乘累加器设计中,将被加数隐藏在乘法之中,并和正常乘法设计中产生的部分积一样,加入到像Wallace树等的加法树,在充分利用乘法里的压缩器硬件模块,将部分积相加,从而基本不会带来额外的延时开销和面积开销。同时,通过对乘法器里的压缩器进行合理的优化设计,进一步降低其面积和功耗开销。
(3)在本发明设计的乘累加器设计中,将被加数隐藏在乘法之中,消除乘累加中加法带来的延时。虽然相对乘法来说而言比较小,但是当乘累加的位宽越大,或者工作频率要求越高时,我们优化的效果是越明显的。
(4)在本发明设计的乘累加器设计中,被加数被灵活巧妙的融合到乘法的部分积当中,我们可以像处理乘法器一样简单,根据具体时钟频率和性能要求,对本发明设计的乘累加器进行任意灵活的流水线的设计。
在本发明设计的乘累加器设计中,虽然主要以32位计算为例,但是本发明实施例提供的方法是可以灵活推广到任意位宽的有无符号乘法/乘累加的计算。
下面再举一例进行说明,以便于理解本发明如何实施。
1.MAC电路中有/无符号数处理的基本方法
以下,还是以32位有/无符号数的计算为例,来说明本发明设计的乘累加器支持有/无符号数的计算。使用有符号乘法器进行设计,则需要将无符号数进行位数的扩展,统一为无符号数进行运算。其推导原理如下
对于32位无符号数,即标志位F=0时,在最高位增添两位符号位y32=y33=0,其变成了34位的有符号数,如公式(1)所示,
Y=231y31+230y30+…+22y2+21y1+20y0+y-1
=-233y33+232y32+232y31+…+22y2+21y1+20y0+y-1 (1)
对于32位有符号数,为了与无符号数使用一套电路,同样要扩展两位符号位而不改变数值大小,令y33=y32=y31,此时32位有符号数变为34位有符号数,如式(2)。
Y=-231y31+230y30+…+22y2+21y1+20y0+y-1
=-233y33+232y32+232y31+…+22y2+21y1+20y0+y-1 (2)
如此,32有符号乘法/乘加和32位无符号数乘法/乘加就统一转化成34位的有符号数的乘法/乘加,然后用Booth编码对34位的乘数进行编码如式(3):
Y=20(y-x+y0-2y1)+22(yx+y2-2y3)+…+232(y31+y32-2y33) (3)
当F=0时,为无符号数,扩展的两位符号位为:
X[33]=X[32]=0=F·X[31]
Y[33]=Y[32]=0=F·Y[31]
A[33]=A[32]=0=F·A[31];
当F=1时,为无符号数,扩展的两位符号位为:
X[33]=X[32]=X[31]=F·X[31]
Y[33]=Y[32]=Y[31]=F·Y[31]
A[33]=A[32]=A[31]=F·A[31]。
2.MAC电路设计的Booth编码电路设计
通过对Y_signed·X_signed的部分项重组,并进行Booth编码,我们可以得到以下公式(4):
Figure BDA0002848832520000081
式(4)中,每一项都是一个部分积,由前面的分析可知,部分积的可能取值为±0、±X_signed以及±2X_signed。设当部分积为+0、+X_signed、+2X_signed时即被乘数系数为正值,编码信号neg=0,否则为1;当部分积为±X_signed时,编码信号one=1,否则为零;当部分积为±2X_signed时,编码信号two=1,否则为零。由此,我们可以得出乘数相邻三位数的取值和编码信号之间的关系,如表1:
表1:本发明实施例中Booth具体部分积产生和设计
Figure BDA0002848832520000091
由表1(乘数相邻三位数的取值和编码信号之间的关系表)可得,编码信号neg、one、two可分别表示为:
Figure BDA0002848832520000092
通过上述可知,在一个实施例中,所述编码单元具体可以用于:
根据对经过符号位处理的被乘数、经过符号位处理的乘数的部分项重组,并进行编码得到关系式(公式(1));
根据所述关系式,得到乘数相邻三位数的取值和编码信号之间的关系表;
根据所述关系表,产生Booth-4编码信号。
3.MAC运算中的部分积产生和被加数修正
为了乘法/乘累加运算的并行度和工作频率,本发明实施例中的所有部分积,都是并行产生的,从而降低了其计算的延迟,进而提高了电路的时钟频率和运算吞吐率。其部分积的产生思路如图2所示。
如图2所示,被加数为34位。由Booth乘法原理可知,为了统一部分积的位数,原本未扩展符号位的部分积,先扩展一位符号位,即令PPi[34]=PPi[33],此时部分积的有效位都成为35位。同时为了降低延迟,把每一个部分积产生时,将求得补码是否需要加1的运算,放在下一个部分积的对应的数据位。当neg=1时,部分积产生需要加1,责令N=1;否则N=0。同时又有一种特殊情况,neg=1、two=one=0时,为了把部分积-0当做+0来处理,同样让N=0。则可得公式(5):
Figure BDA0002848832520000101
由于最高位是32位乘数增加了两位符号位所产生的,其neg信号不可能为1,所以可以忽略,只计前16个部分积的N信号位即可。
根据Booth乘法原理的介绍中可知,为了减少计算的面积开销,将左上角的1加和后,并按照N的判断对部分积做取反操作。但是,部分积的符号扩展位不可能全为1,这就要对上述结果做一下修正,若经过判断并根据判断取反操作后,部分积为负数则扩展符号位为1,否则扩展位为零。如图3A和3B所示,由此逻辑可得只要在每一组符号扩展位最低位加上35位的符号位求反得到的二进制数即可,即S=PPi[34]那么得到修正的部分积和被加数如图3B所示。
由图3B计算得到的最终的二进制乘法的积是68位的,但是由32位数乘法或者乘加,得到的结果应该是64位的。实际上这68位结果和不做符号位处理时产生的64位的结果,在数值上是相同的。如果原本64位的结果是无符号数,那么多出来的四位全为0,如果原本64位的结果是有符号数,那么多出来的四位,都只是扩展了四位符号位,所以把68位的高四位去掉对最终的数值没有影响。那么我们只需把产生高4位的部分积,相应位去掉即可,由此可得到部分积产生电路需要产生的部分积形式,如图4所示。
通过上述可知,在一个实施例中,所述部分积产生单元具体可以用于:根据Booth-4编码信号,对经过符号位处理的被乘数进行部分积运算,得到多个部分积;对多个部分积进行符号位扩展,对符号位扩展后的多个部分积和经过符号位处理的被加数进行修正处理,得到修正处理后的多个部分积和修正处理后的被加数;
所述部分积及进位确定单元具体可以用于对修正处理后的多个部分积和修正处理后的被加数进行压缩,产生一个部分积和对应的进位。
4.MAC电路设计中Wallace加法树
本发明实施例中的乘累加器,采用Wallace加法树,对部分积进行相加,其通过把压缩器连接成树状结构,大大增加了部分积压缩的并行度,使得部分积压缩的关键路径变短,压缩电路延迟降低,乘法器电路的运行频率提高。
由于本发明中,部分积产生单元产生的17个部分积,以及1个被加数,共有18个二进制数组需要相加,故本部分的Wallace树,设计成如图5所示的结构。
即,在一个实施例中,所述部分积及进位确定单元具体可以用于采用Wallace加法树,对多个部分积以及经过符号位处理的被加数进行压缩,产生一个部分积和对应的进位。
本发明中的Wallace树一共有四级,第一级为六个进位保留加法器(CSA),即3:2的压缩器;第二级是三个4:2的压缩器;第三级为两个CSA;第四级为一个4:2的压缩器。Wallace树中各压缩器所进行的操作如下表2所示。
表2
Figure BDA0002848832520000111
由图5而可知,本发明中的压缩器中包含移位电路,第一级通过移位把不同权重的部分积和被加数每三个相加在一起;在其他级中,上一级压缩器的进位比和的权重高一位,通过移位可以把来自相同压缩器权重差一位的进位、和以及来自不同压缩器权重相差比较大的进位、和相累加。这种一边移位一边加的方式,减少了加法器的位数,从而减少了Wallace树的面积占用。本发明中使用的CSA3-2的电路如图6所示。
其逻辑表达式为式(6):
Figure BDA0002848832520000121
传统的4:2压缩器是把两个CSA相串联,其对应部分的逻辑关系,可以得到逻辑表达式式(7):
Figure BDA0002848832520000122
经过逻辑变换,上述逻辑式化为式(8):
Figure BDA0002848832520000123
其中,A、B、C、D分别为4:2压缩器的输入,Cout为结果输出,carry为进位输出,cin为进位输入,MUX为多路选择器。
由上式可得,carry和cout可以分别用
Figure BDA0002848832520000124
Figure BDA0002848832520000125
作为选择信号求得。这种逻辑可以对4:2选择器进行优化。图7是经过优化过的4:2压缩器。对比可知,传统的4:2的压缩器的关键路径为4个异或门,而优化过的4:2压缩器的关键路径是三个异或门,所以本发明使用优化过的4:2压缩器,减低了延迟,增加了最高的运算频率。
通过上述可知,在一个实施例中,所述Wallace加法树中的压缩器为通过公式(8)进行优化过的压缩器,通过优化部分加相加中使用的4-2压缩器,从而有效的减短乘法器的关键路径和硬件资源开销,最终达到对该设计的乘累加器的延时、面积和功耗进行有效优化。
5.MAC电路设计中的累加器
Wallace树的最后一级,输出64位的sum和以及64位的carry,本发明实施例为了降低累加器部分的延迟,采用超前进位加法器来运算,最终输出64位的结果,即为最终的乘法或者乘累加运算的结果。当然,根据具体乘累加器的设计需求,我们采用任意其他合适类型的加法器,去进行最后的累加计算。
6.MAC电路设计中的灵活流水线处理
一般来说,不同应用所要求的工作频率和运算的吞吐率都是不同的,那么就需要通过对乘累加器,进行合理的流水线划分,通过插入不同的深度的流水寄存器和流水寄存器的级数,来调节电路运行的最高频率运算的吞吐率。然而,一般乘累加器,都是由一个独立的乘法器和一个独立的加法器构成,从而很难在整体上,对乘累加器进行灵活的流水线划分。
但是,如图8所示,在本发明的乘累加器设计中,被加数被灵活巧妙的融合到乘法的部分积当中,我们可以像处理乘法器一样简单,根据具体需求,对本发明设计的乘累加器进行任意的流水线的设计。当某应用要求较高工作频率时,进行深度比较高的流水线设计,从而提高运算频率和运算吞吐率;当某应用要求较低工作频率时,进行深度比较低的流水线设计,减少乘累加的面积和功耗开销;
综上,在可重构计算芯片架构中,所有的处理单元的运算,其数据如果都是以32位宽度的。那么,如图9所示,本发明的乘累加器,可以进一步将前面部分积的高32部分的运算截掉,只留下后面32位结果,从而进一步减少器硬件资源的开销,从而减少面积和功耗,并降低延时。
另外,虽然在本发明的乘累加器设计中,很多以32位计算为例,但是我们所提出的方法同样是可以灵活推广到任意位宽的有无符号乘法/乘累加运算的计算,并应用到任何位宽运算要求的硬件加速电路中去,如GGRA、GPU、FPGA、DSP、TPU和神经网络加速芯片(NPU)等。
综上,本发明实施例提供的面向可重构处理器的有无符号乘累加器的优点是:本发明为粗粒度可重构处理器设计了一种高能效和易流水的快速的乘累加器。为了节约并充分利用硬件资源,其能够同时支持有/无符号乘法和乘累加运算。其通过将被加数隐藏在乘法之中,并和正常乘法设计中产生的部分积一样,加入到像Wallace树等的加法树,在充分利用乘法里的压缩器硬件模块,将部分积相加,从而基本不会带来额外的延时开销和面积开销。并且,根据具体的应用对时钟频率的要求,其可以像处理乘法器一样简单,容易地通过改变流水线的深度和流水线级数,来改变硬件电路的运算频率,从而有效地提高电路的运算速度和吞吐率。
本发明实施例中还提供了一种面向可重构处理器的有无符号乘累加方法,如下面的实施例所述。由于该方法解决问题的原理与面向可重构处理器的有无符号乘累加器相似,因此该方法的实施可以参见面向可重构处理器的有无符号乘累加器的实施,重复之处不再赘述。
图10为本发明实施例中面向可重构处理器的有无符号乘累加方法的流程示意图,如图10所示,该方法包括如下步骤:
步骤101:符号位处理单元根据标志位内容,判断要进行有符号运算或无符号运算,根据被加数内容,判断要进行乘法运算或乘累加运算;根据判断结果,对被乘数进行符号位处理,得到经过符号位处理的被乘数,对乘数进行符号位处理,得到经过符号位处理的乘数,对被加数进行符号位处理,得到经过符号位处理的被加数;
步骤102:编码单元对经过符号位处理的乘数进行基为4的Booth编码,产生Booth-4编码信号;
步骤103:部分积产生单元根据Booth-4编码信号,对经过符号位处理的被乘数进行部分积运算,得到多个部分积;
步骤104:部分积及进位确定单元对多个部分积以及经过符号位处理的被加数进行压缩,得到一个部分积和对应的进位;
步骤105:结果处理单元对一个部分积和对应的进位进行累加,得到有无符号乘或乘累加结果。
在一个实施例中,部分积产生单元根据Booth-4编码信号,对经过符号位处理的被乘数进行部分积运算,得到多个部分积,可以包括:根据Booth-4编码信号,对经过符号位处理的被乘数进行部分积运算,得到多个部分积;对多个部分积进行符号位扩展,对符号位扩展后的多个部分积和经过符号位处理的被加数进行修正处理,得到修正处理后的多个部分积和修正处理后的被加数;
部分积及进位确定单元对多个部分积以及经过符号位处理的被加数进行压缩,得到一个部分积和对应的进位,包括:部分积及进位确定单元对修正处理后的多个部分积和修正处理后的被加数进行压缩,产生一个部分积和对应的进位。
在一个实施例中,部分积及进位确定单元对多个部分积以及经过符号位处理的被加数进行压缩,得到一个部分积和对应的进位,可以包括:部分积及进位确定单元采用Wallace加法树,对多个部分积以及经过符号位处理的被加数进行压缩,产生一个部分积和对应的进位。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述面向可重构处理器的有无符号乘累方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述面向可重构处理器的有无符号乘累方法的计算机程序。
本发明所解决的技术问题是设计一个高能效可灵活配置的快速乘法/乘累加器设计,其通过对乘数和被乘数进行符号位扩展,将无符号运算统一到有符号运算,从而可以有效支持有符号和无符号两种的乘法和乘累加运算。同时,通过将被加数巧妙高效的隐藏到乘法的部分积中,从而实现可以根据具体需要,灵活地选择进行乘累加运算,或者进行乘法运算。另外,该乘法器是以改进基为4的Booth算法为基础进行编码产生部分积,减少了部分积的数量,并通过优化部分加相加中使用的4-2压缩器,从而有效的减短乘法器的关键路径和硬件资源开销,最终达到对该设计的乘累加器的延时、面积和功耗进行有效优化。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种面向可重构处理器的有无符号乘累加器,其特征在于,包括:
符号位处理单元,用于根据标志位内容,判断要进行有符号运算或无符号运算,根据被加数内容,判断要进行乘法运算或乘累加运算;根据判断结果,对被乘数进行符号位处理,得到经过符号位处理的被乘数,对乘数进行符号位处理,得到经过符号位处理的乘数,对被加数进行符号位处理,得到经过符号位处理的被加数;
编码单元,用于对经过符号位处理的乘数进行基为4的Booth编码,产生Booth-4编码信号;
部分积产生单元,用于根据Booth-4编码信号,对经过符号位处理的被乘数进行部分积运算,得到多个部分积;
部分积及进位确定单元,用于对多个部分积以及经过符号位处理的被加数进行压缩,得到一个部分积和对应的进位;
结果处理单元,用于对一个部分积和对应的进位进行累加,得到有无符号乘或乘累加结果。
2.如权利要求1所述的面向可重构处理器的有无符号乘累加器,其特征在于,所述编码单元具体用于:
根据对经过符号位处理的被乘数、经过符号位处理的乘数的部分项重组,并进行编码得到关系式;
根据所述关系式,得到乘数相邻三位数的取值和编码信号之间的关系表;
根据所述关系表,产生Booth-4编码信号。
3.如权利要求1所述的面向可重构处理器的有无符号乘累加器,其特征在于,所述部分积产生单元具体用于:根据Booth-4编码信号,对经过符号位处理的被乘数进行部分积运算,得到多个部分积;对多个部分积进行符号位扩展,对符号位扩展后的多个部分积和经过符号位处理的被加数进行修正处理,得到修正处理后的多个部分积和修正处理后的被加数;
所述部分积及进位确定单元具体用于对修正处理后的多个部分积和修正处理后的被加数进行压缩,产生一个部分积和对应的进位。
4.如权利要求1所述的面向可重构处理器的有无符号乘累加器,其特征在于,所述部分积及进位确定单元具体用于采用Wallace加法树,对多个部分积以及经过符号位处理的被加数进行压缩,产生一个部分积和对应的进位。
5.如权利要求4所述的面向可重构处理器的有无符号乘累加器,其特征在于,所述Wallace加法树中的压缩器为通过如下公式进行优化过的压缩器:
Figure FDA0002848832510000021
其中,A、B、C、D分别为4:2压缩器的输入,Cout为结果输出,carry为进位输出,cin为进位输入。
6.一种面向可重构处理器的有无符号乘累加方法,其特征在于,包括:
符号位处理单元根据标志位内容,判断要进行有符号运算或无符号运算,根据被加数内容,判断要进行乘法运算或乘累加运算;根据判断结果,对被乘数进行符号位处理,得到经过符号位处理的被乘数,对乘数进行符号位处理,得到经过符号位处理的乘数,对被加数进行符号位处理,得到经过符号位处理的被加数;
编码单元对经过符号位处理的乘数进行基为4的Booth编码,产生Booth-4编码信号;
部分积产生单元根据Booth-4编码信号,对经过符号位处理的被乘数进行部分积运算,得到多个部分积;
部分积及进位确定单元对多个部分积以及经过符号位处理的被加数进行压缩,得到一个部分积和对应的进位;
结果处理单元对一个部分积和对应的进位进行累加,得到有无符号乘或乘累加结果。
7.如权利要求6所述的面向可重构处理器的有无符号乘累加方法,其特征在于,部分积产生单元根据Booth-4编码信号,对经过符号位处理的被乘数进行部分积运算,得到多个部分积,包括:部分积产生单元根据Booth-4编码信号,对经过符号位处理的被乘数进行部分积运算,得到多个部分积;对多个部分积进行符号位扩展,对符号位扩展后的多个部分积和经过符号位处理的被加数进行修正处理,得到修正处理后的多个部分积和修正处理后的被加数;
部分积及进位确定单元对多个部分积以及经过符号位处理的被加数进行压缩,得到一个部分积和对应的进位,包括:部分积及进位确定单元对修正处理后的多个部分积和修正处理后的被加数进行压缩,产生一个部分积和对应的进位。
8.如权利要求6所述的面向可重构处理器的有无符号乘累加方法,其特征在于,部分积及进位确定单元对多个部分积以及经过符号位处理的被加数进行压缩,得到一个部分积和对应的进位,包括:部分积及进位确定单元采用Wallace加法树,对多个部分积以及经过符号位处理的被加数进行压缩,产生一个部分积和对应的进位。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求6至8任一所述方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求6至8任一所述方法的计算机程序。
CN202011520746.7A 2020-12-21 2020-12-21 面向可重构处理器的有无符号乘累加器及方法 Active CN112540743B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011520746.7A CN112540743B (zh) 2020-12-21 2020-12-21 面向可重构处理器的有无符号乘累加器及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011520746.7A CN112540743B (zh) 2020-12-21 2020-12-21 面向可重构处理器的有无符号乘累加器及方法

Publications (2)

Publication Number Publication Date
CN112540743A true CN112540743A (zh) 2021-03-23
CN112540743B CN112540743B (zh) 2024-05-07

Family

ID=75018979

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011520746.7A Active CN112540743B (zh) 2020-12-21 2020-12-21 面向可重构处理器的有无符号乘累加器及方法

Country Status (1)

Country Link
CN (1) CN112540743B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113312023A (zh) * 2021-06-29 2021-08-27 上海交通大学 光电混合乘法器
CN116126283A (zh) * 2023-02-02 2023-05-16 大连理工大学 一种fpga卷积加速器的资源占用率优化方法
CN116774966A (zh) * 2023-08-22 2023-09-19 深圳比特微电子科技有限公司 乘法器、乘累加电路、运算电路、处理器和计算装置
CN116991359A (zh) * 2023-09-26 2023-11-03 上海为旌科技有限公司 Booth乘法器、混合Booth乘法器及运算方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007095548A2 (en) * 2006-02-15 2007-08-23 Qualcomm Incorporated A booth multiplier with enhanced reduction tree circuitry
CN101382882A (zh) * 2008-09-28 2009-03-11 宁波大学 一种基于CTGAL的Booth编码器及绝热补码乘累加器
CN106897046A (zh) * 2017-01-24 2017-06-27 青岛朗思信息科技有限公司 一种定点乘累加器
US20200073637A1 (en) * 2018-08-28 2020-03-05 Cavium, Llc Compressing like magnitude partial products in multiply accumulation
CN111258542A (zh) * 2018-11-30 2020-06-09 上海寒武纪信息科技有限公司 乘法器、数据处理方法、芯片及电子设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007095548A2 (en) * 2006-02-15 2007-08-23 Qualcomm Incorporated A booth multiplier with enhanced reduction tree circuitry
CN101382882A (zh) * 2008-09-28 2009-03-11 宁波大学 一种基于CTGAL的Booth编码器及绝热补码乘累加器
CN106897046A (zh) * 2017-01-24 2017-06-27 青岛朗思信息科技有限公司 一种定点乘累加器
US20200073637A1 (en) * 2018-08-28 2020-03-05 Cavium, Llc Compressing like magnitude partial products in multiply accumulation
CN111258542A (zh) * 2018-11-30 2020-06-09 上海寒武纪信息科技有限公司 乘法器、数据处理方法、芯片及电子设备

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
NITIN KRISHNA V: "Performance Analysis of MAC Unit using Booth, Wallace Tree, Array and Vedic Multipliers", INTERNATIONAL JOURNAL OF ENGINEERING RESEARCH & TECHNOLOGY (IJERT), vol. 9, no. 09, 30 September 2020 (2020-09-30) *
SONG-NIEN TANG等: "A High-Accuracy Hardware-Efficient Multiply-Accumulate (MAC) Unit Based on Dual-Mode Truncation Error Compensation for CNNs", IEEE ACCESS, 10 December 2020 (2020-12-10) *
张晓潇等: "一种旨在优化速度的多功能乘累加器设计", 科学技术与工程, no. 13, 15 July 2006 (2006-07-15) *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113312023A (zh) * 2021-06-29 2021-08-27 上海交通大学 光电混合乘法器
CN113312023B (zh) * 2021-06-29 2022-03-18 上海交通大学 光电混合乘法器
CN116126283A (zh) * 2023-02-02 2023-05-16 大连理工大学 一种fpga卷积加速器的资源占用率优化方法
CN116126283B (zh) * 2023-02-02 2023-08-08 大连理工大学 一种fpga卷积加速器的资源占用率优化方法
CN116774966A (zh) * 2023-08-22 2023-09-19 深圳比特微电子科技有限公司 乘法器、乘累加电路、运算电路、处理器和计算装置
CN116774966B (zh) * 2023-08-22 2023-12-08 深圳比特微电子科技有限公司 乘法器、乘累加电路、运算电路、处理器和计算装置
CN116991359A (zh) * 2023-09-26 2023-11-03 上海为旌科技有限公司 Booth乘法器、混合Booth乘法器及运算方法
CN116991359B (zh) * 2023-09-26 2023-12-22 上海为旌科技有限公司 Booth乘法器、混合Booth乘法器及运算方法

Also Published As

Publication number Publication date
CN112540743B (zh) 2024-05-07

Similar Documents

Publication Publication Date Title
CN112540743B (zh) 面向可重构处理器的有无符号乘累加器及方法
US20210349692A1 (en) Multiplier and multiplication method
CN109753268B (zh) 多粒度并行运算乘法器
US6704762B1 (en) Multiplier and arithmetic unit for calculating sum of product
KR20220031098A (ko) 부호형 다중-워드 곱셈기
CN116820393A (zh) 支持深度学习指令的多精度乘加单元及其应用方法
CN112558920B (zh) 有/无符号乘累加装置及方法
Sharma et al. Modified booth multiplier using wallace structure and efficient carry select adder
CN116205244B (zh) 一种数字信号处理结构
CN110825346B (zh) 一种低逻辑复杂度的无符号近似乘法器
CN116627379A (zh) 可重构的支持多精度浮点或定点运算的方法及系统
CN114089949A (zh) 一种可直接支持多操作数加法运算的数字信号处理器
Kumar et al. VLSI architecture of pipelined booth wallace MAC unit
US20060277242A1 (en) Combining circuitry
CN116048455B (zh) 一种插入型的近似乘法累加器
Rocha et al. Improving the Partial Product Tree Compression on Signed Radix-2 m Parallel Multipliers
Iyer et al. Generalised Algorithm for Multiplying Binary Numbers Via Vedic Mathematics
SUREKHA et al. Pre Encoded Multipliers Based on Non Redundant Radix-4 Design Using Modified Wallace Scheme
Asadi A new partial product reduction algorithm using modified counter and optimized hybrid network
Rathore et al. Implementation and Design of Xilinx based Booth multiplier
Setia et al. Novel Architecture of High Speed Parallel MAC using Carry Select Adder
JYOTHI et al. Implementation of Modified Booth Algorithm for Power Critical Applications
CN116820395A (zh) 支持包级运算的浮点乘加单元及其应用方法
Qi et al. A Deeply Pipelined FMA Unit for High Performance RISC-V Processor
Khan et al. Review of GRPF Strengthen Column

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