CN113767362B - 一种多模融合乘法器 - Google Patents

一种多模融合乘法器 Download PDF

Info

Publication number
CN113767362B
CN113767362B CN202080001065.1A CN202080001065A CN113767362B CN 113767362 B CN113767362 B CN 113767362B CN 202080001065 A CN202080001065 A CN 202080001065A CN 113767362 B CN113767362 B CN 113767362B
Authority
CN
China
Prior art keywords
bit
multiplication
signal
setting
value
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
CN202080001065.1A
Other languages
English (en)
Other versions
CN113767362A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN113767362A publication Critical patent/CN113767362A/zh
Application granted granted Critical
Publication of CN113767362B publication Critical patent/CN113767362B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Nonlinear Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请提供一种多模融合乘法器,涉及电子技术领域,用于降低乘法器的运算时间和功耗。该乘法器用于实现二进制的单乘法运算A[m1‑1:0]×B[m2‑1:0],或者2N个二进制乘法A0[m3‑1:0]×B0[m4‑1:0]的累加和运算,m1≥2N×m3,m2≥2N×m4,N为正整数,包括:P个预编码器、Q组融合编码器、以及压缩器;其中,P个预编码器和Q组融合编码器均用于对单乘法运算或者多乘法累加和运算中的第一数值和第二数值进行编码,并将多个部分积输出给压缩器,压缩器均可用于对单乘法运算或者多乘法累加和运算时对应的多个部分积进行压缩得到两个累加值;其中,在单乘法运算时,第一数值为A[m1‑1:0]、第二数值为B[m2‑1:0],在多乘法运算时,第一数值包括2N个A0[m3‑1:0],第二数值包括2N个B0[m4‑1:0]。

Description

一种多模融合乘法器
技术领域
本申请涉及电子技术领域,尤其涉及一种多模融合乘法器。
背景技术
随着人工智能(artificial intelligence,AI)技术的不断发展和成熟,服务器、终端等通信设备中已逐步普及AI技术,AI技术对通信设备中诸如中央处理单元(centralprocessing unit,CPU)、神经网络处理单元(neural-network processing unit,NPU)、图像处理单元(graphics proccssing unit,GPU)或者数字信号处理器(digital Signalprocessor,DSP)等处理器的计算能力要求较高,乘法器作为处理器的核心计算单元,扮演着越来越重要的角色。
现有多模乘法器为了支持不同模式的乘法运算,通常采用标准乘法器复用的方式来实现。比如,以图1所示int(整型)8bit(比特)复用乘法器为例,该乘法器包括标准乘法器M1和M2、以及加法器,可用于支持两种模式的乘法运算,即8bit乘法、以及两个int 4bit乘法累计和。标准乘法器M1复用实现8bit乘法和4bit乘法,A0和B0表示乘数,M1实现4bit乘法时将乘数的高比特位A0[7:4]和B0[7:4]进行符号扩展;标准乘法器M2实现4bit乘法,A1和B1表示乘数,M2不可复用;加法器用于实现两个4bit乘法的乘积的求和。
图2为int 8bit复用乘法器的结构示意图,该乘法器包括标准乘法器M1和M2、压缩器0和加法器。其中,标准乘法器M1包括用于编码A0[7:0]和B0[7:0]的编码器1,以及用于压缩编码器1输出的部分积的压缩器1;标准乘法器M2包括用于编码A1[3:0]和B1[3:0]的编码器2,以及用于压缩编码器2输出的部分积的压缩器2;压缩器0用于压缩标准乘法器M1和M2输出的输出值(out11和out12、以及out21和out22),加法器用于实现压缩器0输出的两个输出值(out01和out02)的求和以得到乘积out[15/8:0]。压缩器0、压缩器1和压缩器2均是基于Wallace Tree算法设计的压缩器,编码器1和编码器2均是基于Booth算法的编码器。在图2所示的乘法器中,标准乘法器M1和M2是相互独立的,二者完成相关运算输出out11和out12、以及out21和out22后,再由Wallace压缩器0进行压缩。
基于图2所示的乘法器结构,该乘法器共需要52个编码器单元和38个全加器,因此占用的面积大。此外,Wallace压缩器中包括多层全加器,每层全加器包括的多个全加器串行执行,从而需要的运算时间长,乘法器的功耗较大。
发明内容
本申请提供一种多模融合乘法器,用于降低乘法器的运算时间和功耗。为达到上述目的,本申请采用如下技术方案:
第一方面,提供一种多模融合乘法器,用于实现二进制的单乘法运算A[m1-1:0]×B[m2-1:0],或者2N个二进制乘法A0[m3-1:0]×B0[m4-1:0]的累加和运算,m1≥2N×m3,m2≥2N×m4,N为正整数,包括:P个预编码器、Q组融合编码器、以及压缩器,m1、m2、m3、m4、P和Q是大于1的整数;P个预编码器,用于根据单乘法指示信号或多乘法指示信号预编码第一数值,得到预编码结果;其中,在单乘法指示信号指示执行单乘法运算时,第一数值为A[m1-1:0],在多乘法指示信号指示执行累加和运算时,第一数值包括2N个A0[m3-1:0],2N个A0[m3-1:0]之间按照从低数位到高数位的顺序排列;Q组融合编码器,用于编码预编码结果和第二数值,得到多个部分积;其中,在单乘法指示信号指示执行单乘法运算时,第二数值为B[m2-1:0],在多乘法指示信号指示执行累加和运算时,第二数值包括2N个B0[m4-1:0],2N个B0[m4-1:0]之间按照从高数位到低数位的顺序排列;压缩器,用于压缩多个部分积,得到两个累加值,两个累加值之和为单乘法运算或累加和运算的结果。
上述技术方案中,融合编码器均可用于对单乘法运算或者多乘法累加和运算中的数值进行编码,并将多个部分积输出给压缩器,压缩器均可用于对单乘法运算或者多乘法累加和运算时对应的多个部分积进行压缩得到两个累加值,最后由加法器对这两个累加值求和以得到该单乘法运算或该累加和运算的结果。因此,与现有技术中支持两种不同乘法模式的乘法器相比,本申请实施例提供的乘法器无需使用不同的编码器或压缩器分开对两种不同乘法模式下的数值进行编码和压缩,从而减少了该乘法器所需的编码器的数量,同时也减小了运算时长,降低了乘法器的功耗。
在第一方面的一种可能的实现方式中,当m1>2N×m3,第一数值中前(m1-2N×m3)个高位数位上填充有符号位;和/或,当m2>2N×m4,第二数值中后(m2-2N×m4)个低位数位上填充有无效位。上述可能的实现方式,能够使得同一融合编码器可用于对单乘法运算或者多乘法累加和运算中的数值进行预编码和编码,从而减少了该乘法器所需的编码器的数量。
在第一方面的一种可能的实现方式中,P个预编码器包括:第i预编码器,用于:当0≤i≤N×m3-1时,根据单乘法指示信号、多乘法指示信号和第一数值中的至少两个比特位,确定预编码器结果中的第i组选择信号、第i单乘法组选择信号、单乘法控制信号SCi和第一多乘法控制信号MCi,i为偶数;当N×m3≤i≤m1-1时,根据单乘法指示信号、多乘法指示信号和第一数值中的至少两个比特位,确定预编码器结果中的第i组选择信号、第i单乘法组选择信号、单乘法控制信号SCi、第二多乘法控制信号MCNi和控制信号Si,i为偶数;其中,第i组选择信号包括第一选择信号M1Mi和第二选择信号M2Mi,第i单乘法组选择信号包括第一单乘法选择信号SM1Mi和第二单乘法选择信号SM2Mi。上述可能的实现方式,能够使得同一预编码器可用于对单乘法运算或者多乘法累加和运算中的数值进行预编码,从而减少了该乘法器所需的预编码器的数量。
在第一方面的一种可能的实现方式中,当i等于0时,至少两个比特位包括第一数值中的第一比特位a[0]和第二比特位a[1];第0预编码器用于执行如下编码操作:将第一选择信号M1M0设为第一比特位a[0];当第一比特位a[0]为0且第二比特位a[1]为1时,将第二选择信号M2M0设为1;当第一比特位a[0]不为0或第二比特位a[1]不为1时,将第二选择信号M2M0设为0;当单乘法指示信号为1时,将单乘法控制信号SC0设为第二比特位a[1];当单乘法指示信号为0时,将单乘法控制信号SC0设为0;当多乘法指示信号为1时,将第一多乘法控制信号MC0设为第二比特位a[1];当多乘法指示信号为0时,将第一多乘法控制信号MC0设为0;当单乘法指示信号为1时,将第一单乘法选择信号SM1M0设为第一比特位a[0]、第二单乘法选择信号SM2M0设为第二选择信号M2M0;当单乘法指示信号为0时,将第一单乘法选择信号SM1M0和第二单乘法选择信号SM2M0均设为0。上述可能的实现方式中,提供的预编码器可用于对单乘法运算或者多乘法累加和运算中的第一数值进行预编码,从而减少了该乘法器所需的预编码器的数量。
在第一方面的一种可能的实现方式中,第0预编码器包括:五个与门和一个非门;非门的输入端用于接收第一比特位a[0],非门的输出端与五个与门中第一个与门的一个输入端相耦合,第一个与门的另一个输入端用于接收第二比特位a[1],第一个与门的输出端用于输出第二选择信号M2M0,五个与门中第二个与门的一个输入端和第三个与门的一个输入端均用于接收第二比特位a[1],第二个与门的另一个输入端用于接收单乘法指示信号,第二个与门的输出端用于输出单乘法控制信号SC0,第三个与门的另一个输入端用于接收多乘法指示信号,第三个与门的输出端用于输出第一多乘法控制信号MC0,五个与门中第四个与门的一个输入端和第五个与门的一个输入端用于接收单乘法指示信号,第四个与门的另一个输入端用于接收第一比特位a[0],第四个与门的输出端用于输出第一单乘法选择信号SM1M0,第五个与门的另一个输入端与第一个与门的输出端耦合,第五个与门的输出端用于输出第二单乘法选择信号SM2M0。
在第一方面的一种可能的实现方式中,当0<i≤N×m3-1,至少两个比特位包括第一数值中的第一比特位a[i-1]、第二比特位a[i]和第三比特位a[i+1];第i预编码器用于执行如下编码操作:当第一比特位a[i-1]和第二比特位a[i]不相等时,将第一选择信号M1Mi设为1;当第一比特位a[i-1]和第二比特位a[i]相等时,将第一选择信号M1Mi设为0;当第一比特位a[i-1]和第二比特位a[i]相等、且第二比特位a[i]与第三比特位a[i+1]不相等时,将第二选择信号M2Mi设为1;当第一比特位a[i-1]和第二比特位a[i]不相等、或者第二比特位a[i]与第三比特位a[i+1]相等时,将第二选择信号M2Mi设为0;当单乘法指示信号为1时,将单乘法控制信号SCi为第三比特位a[i+1];当单乘法指示信号为0时,将单乘法控制信号SCi设为0;当多乘法指示信号为1时,将第一多乘法控制信号MCi为第三比特位a[i+1];当多乘法指示信号为0时,将第一多乘法控制信号MCi设为0;当单乘法指示信号为1时,将第一单乘法选择信号SM1Mi设为第一选择信号M1Mi、第二单乘法选择信号SM2Mi设为第二选择信号M2Mi;当单乘法指示信号为0时,将第一单乘法选择信号SM1Mi和第二单乘法选择信号SM2Mi均设为0。上述可能的实现方式中,提供的预编码器可用于对单乘法运算或者多乘法累加和运算中的第一数值进行预编码,从而减少了该乘法器所需的预编码器的数量。
在第一方面的一种可能的实现方式中,当0<i≤N×m3-1时,第i预编码器包括:四个与门、一个或非门、一个异或门和一个异或非门;异或门的两个输入端用于分别接收第一比特位a[i-1]和第二比特位a[i],异或门的输出端用于输出第一选择信号M1Mi,异或非门的两个输入端分别用于接收第二比特位a[i]和第三比特位a[i+1],或非门的两个输入端分别与异或门的输出端和异或非的输出端耦合,或非门的输出端用于输出第二选择信号M2Mi,四个与门中第一个与门的一个输入端用和第二个与门的一个输入端均用于接收第三比特位a[i+1],第一个与门的另一个输入端用于接收单乘法指示信号,第一个与门的输出端用于输出单乘法控制信号SCi,第二个与门的另一个输入端用于接收多乘法指示信号,第二个与门的输出端用于输出第一多乘法控制信号MCi,四个与门中第三个与门的一个输入端和第四个与门的一个输入端均用于接收单乘法指示信号,第三个与门的另一输入端与异或门的输出端耦合,第三个与门的输出端用于输出第一单乘法选择信号SM1Mi,第四个与门的另一输入端与或非门的输出端耦合,第四个与门的输出端用于输出第二单乘法选择信号SM2Mi。
在第一方面的一种可能的实现方式中,当i等于N×m3时,至少两个比特位包括第一数值中的第一比特位a[i-1]、第二比特位a[i]和第三比特位a[i+1];第N×m3预编码器用于执行如下编码操作:当单乘法指示信号为1时,将第四比特位设为第一比特位a[i-1];当单乘法指示信号为0时,将第四比特位设为0;当第四比特位和第二比特位a[i]不相等时,将第一选择信号M1Mi设为1;当第四比特位和第二比特位a[i]相等时,将第一选择信号M1Mi设为0;当第四比特位和第二比特位a[i]相等、且第二比特位a[i]与第三比特位a[i+1]不相等时,将第二选择信号M2Mi设为1;当第四比特位和第二比特位a[i]不相等、或第二比特位a[i]与第三比特位a[i+1]相等时,将第二选择信号M2Mi设为0;当单乘法指示信号为1时,将单乘法控制信号SCi设为第三比特位a[i+1];当单乘法指示信号为0时,将单乘法控制信号SCi设为0;当多乘法指示信号与第三比特位a[i+1]相等时,将第二多乘法控制信号MCNi设为0,当多乘法指示信号与第三比特位a[i+1]不相等时,将第二多乘法控制信号MCNi设为1;将控制信号Si设为第三比特位a[i+1];当单乘法指示信号为1时,将第一单乘法选择信号SM1Mi设为第一选择信号M1Mi、第二单乘法选择信号SM2Mi设为第二选择信号M2Mi;当单乘法指示信号为0时,将第一单乘法选择信号SM1Mi和第二单乘法选择信号SM2Mi均设为0。上述可能的实现方式中,提供的预编码器可用于对单乘法运算或者多乘法累加和运算中的第一数值进行预编码,从而减少了该乘法器所需的预编码器的数量。
在第一方面的一种可能的实现方式中,当i等于N×m3时,第N×m3预编码器包括:四个与门,一个或非门、两个异或门和一个异或非门;四个与门中第一个与门的一个输入端用于接收第一比特位a[i-1],第一个与门的另一个输入端用于接收单乘法指示信号,第一个与门的输出端与两个异或门中第一个异或门的一个输入端耦合,第一个异或门的另一个输入端和异或非门的一个输入端耦合用于接收第二比特位a[i],第一个异或门的输出端用于输出第一选择信号M1Mi,异或非门的另一个输入端用于接收第三比特位a[i+1],异或非门的输出端和第一个异或门的输出端分别与或非门的两个输入端耦合,或非门的输出端用于输出第二选择信号M2Mi,四个与门中第二个与门的一个输入端和两个异或门中第二个异或门的一个输入端相耦合用于接收第三比特位a[i+1],第二个与门的另一个输入端用于接收单乘法指示信号,第二个与门的输出端用于输出单乘法控制信号SCi,第二个异或门的另一个输入端用于接收多乘法指示信号,第二个异或门的输出端用于输出第二多乘法控制信号MCNi,将第三比特位a[i+1]输出作为控制信号Si,四个与门的第三个与门的一个输入端和第四个与门的一个输入端用于接收单乘法指示信号,第三个与门的另一个输入端与第一个异或门的输出端耦合,第三个与门的输出端用于输出第一单乘法选择信号SM1Mi,第四个与门的另一个输入端与或非门的输出端耦合,第四个与门的输出端用于输出第二单乘法选择信号SM2Mi。
在第一方面的一种可能的实现方式中,当N×m3<i≤m1-1时,至少两个比特位包括第一比特位a[i-1]、第二比特位a[i]和第三比特位a[i+1];第i预编码器用于执行如下编码操作:当第一比特位a[i-1]和第二比特位a[i]不相等时,将第一选择信号M1Mi设为1;当第一比特位a[i-1]和第二比特位a[i]相等时,将第一选择信号M1Mi设为0;当第一比特位a[i-1]和第二比特位a[i]相等、且第二比特位a[i]和第三比特位a[i+1]不相等时,将第二选择信号M2Mi设为1;当第一比特位a[i-1]和第二比特位a[i]不相等、或第二比特位a[i]与第三比特位a[i+1]相等时,将第二选择信号M2Mi设为0;当单乘法指示信号为1时,将单乘法控制信号SCi设为第三比特位a[i+1];当单乘法指示信号为0时,将单乘法控制信号SCi设为0;当多乘法指示信号与第三比特位a[i+1]相等时,将第二多乘法控制信号MCNi设为0,当多乘法指示信号与第三比特位a[i+1]不相等时,将第二多乘法控制信号MCNi设为1;当单乘法指示信号为1时,将第一单乘法选择信号SM1Mi设为第一选择信号M1Mi、第二单乘法选择信号SM2Mi设为第二选择信号M2Mi;当单乘法指示信号为0时,将第一单乘法选择信号SM1Mi和第二单乘法选择信号SM2Mi均设为0;将控制信号Si设为第三比特位a[i+1]。上述可能的实现方式中,提供的预编码器可用于对单乘法运算或者多乘法累加和运算中的第一数值进行预编码,从而减少了该乘法器所需的预编码器的数量。
在第一方面的一种可能的实现方式中,当N×m3<i≤m1-1时,第i预编码器包括:三个与门、一个或非门、两个异或门和一个异或非门;两个异或门中第一个异或门的一个输入端用于接收第一比特位a[i-1],第一个异或门的另一个输入端和异或非门的一个输入端耦合用于接收第二比特位a[i],第一个异或门的输出端用于输出第一选择信号M1Mi,异或非门的另一个输入端用于接收第三比特位a[i+1],异或非门的输出端和第一个异或门的输出端分别与或非门的两个输入端耦合,或非门的输出端用于输出第二选择信号M2Mi,三个与门中第一个与门的一个输入端和两个异或门中第二个异或门的一个输入端相耦合用于接收第三比特位a[i+1],第一个与门的另一个输入端用于接收单乘法指示信号,第一个与门的输出端用于输出单乘法控制信号SCi,第二个异或门的另一个输入端用于接收多乘法指示信号,第二个异或门的输出端用于输出第二多乘法控制信号MCNi,将第三比特位a[i+1]输出作为控制信号Si,三个与门的第二个与门的一个输入端和第三个与门的一个输入端用于接收单乘法指示信号,第二个与门的另一个输入端与第一异或门的输出端耦合,第二个与门的输出端用于输出第一单乘法选择信号SM1Mi,第三个与门的另一个输入端与或非门的输出端耦合,第三个与门的输出端用于输出第二单乘法选择信号SM2Mi。
在第一方面的一种可能的实现方式中,Q组融合编码器包括第一编码器,用于执行如下编码操作:当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]均为1,或第二单乘法选择信号SM2Mi和第二数值中的第二比特位b[k-1]均为1时,将部分积p(i,k)设为第i单乘法控制信号SCi的反相;当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]不同时为1,且第二单乘法选择信号SM2Mi和第二数值中的第二比特位b[k-1]不同时为1时,将部分积p(i,k)设为单乘法控制信号SCi。上述可能的实现方式中,提供的编码器可用于对单乘法运算或者多乘法累加和运算中的数值进行编码,从而减少了该乘法器所需的编码器的数量。
在第一方面的一种可能的实现方式中,第一编码器包括:两个与门、或门和异或门,两个与门的输出端分别与或门的两个输入端连接,或门的输出端与异或门的一个输入端连接;两个与门中每个与门的一个输入端用于分别接收第一单乘法选择信号SM1Mi和第二单乘法选择信号SM2Mi,两个与门中每个与门的另一个输入端用于分别接收第一比特位b[k]和第二比特位b[k-1];异或门的另一输入端用于接收单乘法控制信号SCi,异或门的输出端用于输出部分积p(i,k)。
在第一方面的一种可能的实现方式中,Q组融合编码器还包括:第二编码器,用于执行如下编码操作:当多乘法指示信号和第二数值中的第一比特位b[k-1]均为1,或单乘法指示信号和第二数值中的第二比特位b[k]均为1时,将第一中间项设为1;当多乘法指示信号和第二数值中的第一比特位b[k-1]不同时为1、且单乘法指示信号和第二数值中的第二比特位b[k]不同时为1时,将第一中间项设为0;当第一中间项和第一选择信号M1Mi均为1,或第二选择信号M2Mi和第一比特位b[k-1]均为1,将第二中间项设为1;当第一中间项和第一选择信号M1Mi不同时为1时,且第二选择信号M2Mi和第一比特位b[k-1]不同时为1时,将第二中间项设为0;当第二中间项为1时,将第二多乘法控制信号MCNi的反相设为部分积p(i,k);当第二中间项为0时将第二多乘法控制信号MCNi设为部分积p(i,k)。上述可能的实现方式中,提供的编码器可用于对单乘法运算或者多乘法累加和运算中的数值进行编码,从而减少了该乘法器所需的编码器的数量。
在第一方面的一种可能的实现方式中,第二编码器包括:四个与门、两个或门和一个异或门,四个与门中第一个与门的输出端和第二个与门的输出端分别与两个或门中第一个或门的两个输入端耦合,第一个或门的输出端与四个与门中第三个与门的一个输入端耦合,四个与门中第四个与门的输出端和第三个与门的输出端与两个或门中第二个或门的两个输入端耦合,第二个或门的输出端与异或门的一个输入端耦合;第一个与门的两个输入端分别用于接收第一比特位b[k-1]和多乘法指示信号,第二个与门的两个输入端分别用于接收第二比特位b[k]和单乘法指示信号,第三个与门的另一个输入端用于接收第一选择信号M1Mi,第四个与门的两个输入端分别用于接收第一比特位b[k-1]和第二选择信号M2Mi,异或门的另一个输入端用于接收第二多乘法控制信号MCNi,异或门的输出端用于输出部分积p(i,k)。
在第一方面的一种可能的实现方式中,Q组融合编码器还包括:第三编码器,用于执行如下编码操作:当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]为1时,将部分积p(i,k)设为单乘法控制信号SCi的反相;当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]不同时为1时,将部分积p(i,k)设为单乘法控制信号SCi。上述可能的实现方式中,提供的编码器可用于对单乘法运算或者多乘法累加和运算中的数值进行编码,从而减少了该乘法器所需的编码器的数量。
在第一方面的一种可能的实现方式中,第三编码器包括:一个与门和一个异或门,与门的输出端与异或门的一个输入端耦合,与门的两个输入端分别用于接收第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k],异或门的另一个输入端用于接收单乘法控制信号SCi,异或门的输出端用于输出部分积p(i,k)。
在第一方面的一种可能的实现方式中,Q组融合编码器还包括:第四编码器,用于执行如下编码操作:当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]均为1、或者第二单乘法选择信号SM2Mi和第二数值中的第二比特位b[k-1]为1时,将第一中间项设为1;当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]不同时为1且第二单乘法选择信号SM2Mi和第二数值中的第二比特位b[k-1]不同时为1时,将第一中间项设为0;当第一中间项为1时,将第二中间项设为单乘法控制信号SCi的反相;当第一中间项为0时,将第二中间项设为单乘法控制信号SCi;当多乘法指示信号为1时,将部分积p(i,k)设为1;当多乘法指示信号为0时,将部分积p(i,k)设为第二中间项。上述可能的实现方式中,提供的编码器可用于对单乘法运算或者多乘法累加和运算中的数值进行编码,从而减少了该乘法器所需的编码器的数量。
在第一方面的一种可能的实现方式中,第四编码器包括:两个与门、两个或门和一个异或门,两个与门的输出端分别与两个或门中第一个或门的两个输出端耦合,第一个或门的输出端与异或门的一个输入端耦合,异或门的输出端与两个或门中第二个或门的一个输入端耦合;两个与门中第一个与门的两个输入端分别用于接收第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k],两个与门中第二个与门的两个输入端分别用于接收第二单乘法选择信号SM2Mi和第二数值中的第二比特位b[k-1],异或门的另一个输入端用于接收单乘法控制信号SCi,第二个或门的另一个输入端用于接收多乘法指示信号。
在第一方面的一种可能的实现方式中,Q组融合编码器还包括:第五编码器,用于执行如下编码操作:当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]均为1、或者第二单乘法选择信号SM2Mi和第二数值中的第一比特位b[k]均为1时,将部分积p(i,k)设为单乘法控制信号SCi;当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]不同时为1且第二单乘法选择信号SM2Mi和第二数值中的第一比特位b[k]不同时为1时,将部分积p(i,k)设为单乘法控制信号SCi的反相。上述可能的实现方式中,提供的编码器可用于对单乘法运算或者多乘法累加和运算中的数值进行编码,从而减少了该乘法器所需的编码器的数量。
在第一方面的一种可能的实现方式中,第五编码器包括:两个与门、一个或门和一个异或非门,两个与门的输出端分别与或门的两个输入端耦合,或门的输出端与异或非门的一个输入端耦合;两个与门中第一个与门的两个输入端分别用于接收第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k],两个与门中第二个与门的两个输入端分别用于接收第二单乘法选择信号SM2Mi和第二数值中的第一比特位b[k],异或非门的另一个输入端用于接收单乘法控制信号SCi,异或非门的输出端用于输出部分积p(i,k)。
在第一方面的一种可能的实现方式中,Q组融合编码器还包括:第六编码器,用于执行如下编码操作:当第一选择信号M1Mi和第二数值中的第一比特位b[k]均为1、或者第二选择信号M2Mi和第二数值中的第一比特位b[k]均为1时,将部分积p(i,k)设为控制信号Si的反相;当第一选择信号M1Mi和第二数值中的第一比特位b[k]不同时为1且第二选择信号M2Mi和第二数值中的第一比特位b[k]不同时为1时,将部分积p(i,k)设为控制信号Si。上述可能的实现方式中,提供的编码器可用于对单乘法运算或者多乘法累加和运算中的数值进行编码,从而减少了该乘法器所需的编码器的数量。
在第一方面的一种可能的实现方式中,第六编码器包括:两个与门、一个或门和一个异或门,两个与门的输出端分别与或门的两个输入端耦合,或门的输出端与异或门的一个输入端耦合;两个与门中第一个与门的两个输入端分别用于接收第一选择信号M1Mi和第二数值中的第一比特位b[k],两个与门中第二个与门的两个输入端分别用于接收第二选择信号M2Mi和第二数值中的第一比特位b[k],异或门的另一个输入端用于接收控制信号Si,异或门的输出端用于输出部分积p(i,k)。
在第一方面的一种可能的实现方式中,Q组融合编码器还包括:第七编码器,用于执行如下编码操作:当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]均为1、或者第二单乘法选择信号SM2Mi和第二数值中的第一比特位b[k]均为1时,将第一中间项设为1;当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]不同时为1、且第二单乘法选择信号SM2Mi和第二数值中的第一比特位b[k]不同时为1时,将第一中间项设为0;当第一中间项为1时,将第二中间项设为单乘法控制信号SCi的反相;当第一中间项为0时,将第二中间项设为单乘法控制信号SCi;当单乘法指示信号为1时,将部分积p(i,k)设为第二中间项;当单乘法指示信号为0时,将部分积p(i,k)设为0。上述可能的实现方式中,提供的编码器可用于对单乘法运算或者多乘法累加和运算中的数值进行编码,从而减少了该乘法器所需的编码器的数量。
在第一方面的一种可能的实现方式中,第七编码器包括:三个与门、一个或门和一个异或门,三个与门中第一个与门的输出端和第二个与门的输出端分别与或门的两个输入端耦合,或门的输出端与异或门的一个输入端耦合,异或门的输出端与三个与门中第三个与门的一个输入端耦合;第一个与门的两个输入端分别用于接收第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k],第二个与门的两个输入端分别用于接收第二单乘法选择信号SM2Mi和第二数值中的第一比特位b[k],异或门的另一个输入端用于接收单乘法控制信号SCi,第三个与门的另一个输入端用于接收单乘法指示信号。
在第一方面的一种可能的实现方式中,Q组融合编码器还包括:第八编码器,用于执行如下编码操作:当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]均为1、或者第二单乘法选择信号SM2Mi和第二数值中的第一比特位b[k]均为1时,将第一中间项设为1;当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]不同时为1、且第二单乘法选择信号SM2Mi和第二数值中的第一比特位b[k]不同时为1时,将第一中间项设为0;当第一中间项为1时,将第二中间项设为单乘法控制信号SCi的反相;当第一中间项为0时,将第二中间项设为单乘法控制信号SCi;当单乘法指示信号为1时,将部分积p(i,k)设为第二中间项;当单乘法指示信号为0时,将部分积p(i,k)设为第二中间项的反相。上述可能的实现方式中,提供的编码器可用于对单乘法运算或者多乘法累加和运算中的数值进行编码,从而减少了该乘法器所需的编码器的数量。
在第一方面的一种可能的实现方式中,第八编码器包括:两个与门、一个或门、一个异或门和一个异或非门,两个与门的两个输出端分别与或门的两个输入端耦合,或门的输出端与异或门的一个输入端耦合,异或门的输出端与异或非门的一个输入端耦合;两个与门中第一个与门的两个输入端分别用于接收第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k],两个与门中第二个与门的两个输入端分别用于接收第二单乘法选择信号SM2Mi和第二数值中的第一比特位b[k],异或门的另一个输入端用于接收单乘法控制信号SCi,异或非门的另一个输入端用于接收单乘法指示信号,异或非门的输出端用于输出部分积p(i,k)。
在第一方面的一种可能的实现方式中,Q组融合编码器还包括:第九编码器,用于执行如下编码操作:当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]均为1、或者第二单乘法选择信号SM2Mi和第二数值中的第二比特位b[k-1]为1时,将第一中间项设为1;当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]不同时为1、且第二单乘法选择信号SM2Mi和第二数值中的第二比特位b[k-1]不同时为1时,将第一中间项设为0;当第一中间项为1时,将第二中间项设为单乘法控制信号SCi的反相;当第一中间项为0时,将第二中间项设为单乘法控制信号SCi;当第一多乘法控制信号MCi为1时,将部分积p(i,k)设为1;当第一多乘法控制信号MCi为0时,将部分积p(i,k)设为第二中间项。上述可能的实现方式中,提供的编码器可用于对单乘法运算或者多乘法累加和运算中的数值进行编码,从而减少了该乘法器所需的编码器的数量。
在第一方面的一种可能的实现方式中,第九编码器包括:两个与门、两个或门和一个异或门,两个与门的输出端分别与两个或门中第一个或门的两个输入端耦合,第一个或门的输出端与异或门的一个输入端耦合,异或门的输出端与两个或门中第二个或门的一个输入端耦合;两个与门中第一个与门的两个输入端分别用于接收第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k],两个与门中第二个与门的两个输入端分别用于接收第二单乘法选择信号SM2Mi和第二数值中的第二比特位b[k-1],异或门的另一个输入端用于接收单乘法控制信号SCi,第二个或门的另一个输入端用于接收第一多乘法控制信号MCi,第二个或门的输出端用于输出部分积p(i,k)。
在第一方面的一种可能的实现方式中,Q组融合编码器还包括:第十编码器,用于执行如下编码操作:当多乘法指示信号和第二数值中的第一比特位b[k-1]同时为1,或单乘法指示信号和第二数值中的第二比特位b[k]同时为1时,将第一中间项设为1;当多乘法指示信号和第二数值中的第一比特位b[k-1]不同时为1、且单乘法指示信号和第二数值中的第二比特位b[k]不同时为1时,将第一中间项设为0;当第一中间项和第一选择信号M1Mi同时为1,或第二选择信号M2Mi和第一比特位b[k-1]同时为1,将第二中间项设为1;当第一中间项和第一选择信号M1Mi不同时为1、且第二选择信号M2Mi和第一比特位b[k-1]不同时为1时,将第二中间项设为0;当第二中间项为1时,将第三中间项设为第二多乘法控制信号MCNi的反相;当第二中间项为0,将第三中间项设为第二多乘法控制信号MCNi;当多乘法指示信号为1时,将部分积p(i,k)设为第三中间项的反相,当多乘法指示信号为0时,将部分积p(i,k)设为第三中间项。上述可能的实现方式中,提供的编码器可用于对单乘法运算或者多乘法累加和运算中的数值进行编码,从而减少了该乘法器所需的编码器的数量。
在第一方面的一种可能的实现方式中,第十编码器包括:四个与门、两个或门和两个异或门;其中,四个与门中的第一个与门的输出端和第二个与门的输出端分别与两个或门中第一个或门的两个输入端耦合,第一个或门的输出端与四个与门中第三个与门的一个输入端耦合,四个与门中的第四个与门的输出端和第三个与门的输出端分别与两个或门中第二个或门的两个输入端耦合,第二个或门的输出端与两个异或门中第一个异或门的一个输入端耦合,第一个或门的输出端与两个异或门中第二个异或门的一个输入端耦合;第一个与门的两个输入端用于接收多乘法指示信号和第一比特位b[k-1],第二个与门的两个输入端用于接收单乘法指示信号和第二比特位b[k],第三个与门的另一个输入端用于接收第一选择信号M1Mi,第四个与门的两个输入端分别用于接收第一比特位b[k-1]和第二选择信号M2Mi,第一个异或门的另一个输入端用于接收第二多乘法控制信号MCNi,第二个异或门的另一个输入端用于接收多乘法指示信号。
第二方面,提供一种处理器,包括乘法器;其中,该乘法器为上述第一方面或者第一方面的任一种可能的实现方式所提供的乘法器。可选地,所述处理器包括神经网络处理单元。
第三方面,提供一种芯片,包括乘法器;其中,该乘法器为上述第一方面或者第一方面的任一种可能的实现方式所提供的乘法器。
可以理解地,上述提供的任一种处理器或芯片均包括上文所提供的乘法器,因此,其所能达到的有益效果可参考上文所提供的乘法器中的有益效果,此处不再赘述。
附图说明
图1为现有技术中一种乘法器的结构示意图;
图2为现有技术中另一种乘法器的结构示意图;
图3为本申请实施例提供的一种通信设备的结构示意图;
图4-图6为本申请实施例提供的一种乘法器的结构示意图;
图7-1和图7-2为本申请实施例提供的第一种预编码器的示意图;
图8-1和图8-2为本申请实施例提供的第二种预编码器的示意图;
图9-1和图9-2为本申请实施例提供的第三种预编码器的示意图;
图10-1和图10-2为本申请实施例提供的第四种预编码器的示意图;
图11-图20为本申请实施例提供的第一种编码器至第十种编码器的示意图;
图21为本申请实施例提供的一种单-双融合乘法器的结构示意图;
图22为本申请实施例提供的一种压缩器的结构示意图;
图23为本申请实施例提供的另一种单-双融合乘法器的结构示意图;
图24为本申请实施例提供的另一种压缩器的结构示意图;
图25为本申请实施例提供的一种单-四融合乘法器的结构示意图;
图26为本申请实施例提供的又一种压缩器的结构示意图。
具体实施方式
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a和b,a和c,b和c,或a、b和c,其中a,b,c可以是单个,也可以是多个。另外,本申请的实施例采用了“第一”、“第二”等字样对名称或功能或作用类似的对象进行区分,本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定。“耦合”一词用于表示电性连接,包括通过导线或连接端直接相连或通过其他器件间接相连。因此“耦合”应被视为是一种广义上的电子通信连接。
图3为本申请实施例提供的一种通信设备的结构示意图,该通信设备可以是终端、或者服务器等,或者可以是终端或者服务器内的芯片、芯片组、电路板或模组等。参见图3,该通信设备可以包括存储器301、处理器302、通信接口303和总线304。其中,存储器301、处理器302以及通信接口303通过总线304相互连接。存储器301可用于存储数据、软件程序以及模块,主要包括存储程序区和存储数据区,存储程序区可存储操作系统、至少一个功能所需的应用程序等,存储数据区可存储该设备的使用时所创建的数据等。处理器302用于对该通信设备的动作进行控制管理,比如通过运行或执行存储在存储器301内的软件程序和/或模块,以及调用存储在存储器301内的数据,执行该设备的各种功能和处理数据。通信接口303用于支持该设备进行通信。
其中,处理器302包括但不限于中央处理单元(central processing unit,CPU)、网络处理单元(network processing unit,NPU)、图形处理器(graphics processingunit,GPU)、或数字信号处理器(digital Signal processor,DSP)或者通用处理器等。处理器302中包括一个或多个乘法器,例如包括乘法器阵列,该乘法器是在处理器302中实现乘法运算的器件。
总线304可以是外设部件互连标准(peripheral component interconnect,PCI)总线,或者扩展工业标准结构(extended industry standard architecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
为了进一步描述技术方案,图4为本申请实施例提供的一种多模融合乘法器的结构示意图,该乘法器可用于实现二进制的单乘法运算A[m1-1:0]×B[m2-1:0],或者2N个二进制乘法A0[m3-1:0]×B0[m4-1:0]的累加和运算,m1≥2N×m3,m2≥2N×m4,N为正整数,≥表示大于或等于。参见图4,该乘法器包括:P个预编码器401、Q组编码器402、以及压缩器403,m1、m2、m3、m4、P和Q是大于1的整数。该乘法器相对于传统设计具有运算时间短、乘法器功耗低的特点,下面将具体介绍。
P个预编码器401,用于根据单乘法指示信号或多乘法指示信号预编码第一数值,得到预编码结果。其中,在该单乘法指示信号指示执行该单乘法运算时,第一数值为A[m1-1:0],在该多乘法指示信号指示执行该累加和运算时,第一数值包括2N个A0[m3-1:0],2N个A0[m3-1:0]之间按照从低数位到高数位的顺序排列。
其中,该单乘法指示信号可用于指示该乘法器是否在执行单乘法运算A[m1-1:0]×B[m2-1:0],该单乘法指示信号可以用一位二进制数表示。比如,当该单乘法指示信号为1时,可用于指示该乘法器在执行该单乘法运算;当该单乘法指示信号为0时,可用于指示该乘法器没有执行该单乘法运算。该多乘法指示信号可用于指示该乘法器是否在执行2N个A0[m3-1:0]×B0[m4-1:0]的累加和运算,该单乘法指示信号可以用一位二进制数表示。比如,当多乘法指示信号为1时,可用于指示该乘法器在执行该累加和运算;当该多乘法指示信号为0时,可用于指示该乘法器没有执行该累加和运算。
另外,在该多乘法指示信号指示执行该累加和运算时,第一数值包括的2N个A0[m3-1:0]之间是按照从低数位到高数位的顺序排列。比如,N=2,2N个A0[m3-1:0]即为4个A0[m3-1:0],若4个A0[m3-1:0]分别表示为A1[m3-1:0]、A2[m3-1:0]、A3[m3-1:0]和A4[m3-1:0],则这4个A0[m3-1:0]之间按照从低数位到高数位的顺序排列得到第一数值。若第一数值为a[4m3-1:0],则A1[m3-1:0]映射在第一数值中的第(m3-1)位至第0位(即a[m3-1:0]),A2[m3-1:0]映射在第一数值中的第(2m3-1)位至第m3位(即a[2m3-1:m3]),A3[m3-1:0]映射在第一数值中的第(3m3-1)位至第2m3位(即a[3m3-1:2m3]),A4[m3-1:0]映射在第一数值中的第(4m3-1)位至第3m3位(即a[4m3-1:3m3])。
可选的,当m1等于2N×m3时,2N个A0[m3-1:0]之间按照从低数位到高数位的顺序排列得到的数值即为该乘法器在执行累加和运算时的第一数值。当m1大于2N×m3时,2N个A0[m3-1:0]之间按照从低数位到高数位的顺序排列得到的数值为该乘法器在执行累加和运算时的第一数值中的第0位至第(2N×m3-1)位的数值,第一数值中第(2N×m3)位至第(m1-1)位填充有符号位,即第一数值中前(m1-2N×m3)个高位数位上填充有符号位,也可以理解为对排列得到的数值进行符号位填充后的数值即为第一数值,填充后的数值的位数等于m1。需要说明的是,在单乘法运算时,填充的符号位为A[m1-1:0]的符号位,若A[m1-1:0]的符号位为0,则填充符号位也为0,若A[m1-1:0]的符号位为1,则填充符号位也为1;在多个乘法的累加和运算时,填充的符号位为A0[m3-1:0]的符号位,若A0[m3-1:0]的符号位为0,则填充符号位也为0,若A0[m3-1:0]的符号位为1,则填充符号位也为1。
具体的,当该单乘法指示信号指示执行该单乘法运算时,P个预编码器401用于根据该单乘法指示信号或该多乘法指示信号预编码第一数值A[m1-1:0];当该多乘法指示信号指示执行该累加和运算时,P个预编码器401用于根据该单乘法指示信号或该多乘法指示信号预编码2N个A0[m3-1:0]排列或者排列并填充后得到的第一数值。
Q组融合编码器402,用于编码该预编码结果和第二数值,得到多个部分积;其中,在该单乘法指示信号指示执行该单乘法运算时,第二数值为B[m2-1:0],在该多乘法指示信号指示执行该累加和运算时,第二数值包括2N个B0[m4-1:0],2N个B0[m4-1:0]之间按照从高数位到低数位的顺序排列。
其中,在该多乘法指示信号指示执行该累加和运算时,第二数值包括的2N个B0[m4-1:0]之间是按照从高数位到低数位的顺序排列。比如,N=2,2N个B0[m4-1:0]即为4个B0[m4-1:0],若4个B0[m4-1:0]分别表示为B1[m4-1:0]、B2[m4-1:0]、B3[m4-1:0]和B4[m4-1:0],则这4个B0[m4-1:0]之间按照从高数位到低数位的顺序排列得到第二数值。若第二数值为b[4m4-1:0],则B1[m4-1:0]映射在第二数值中的第(4m4-1)位至第3m4位(即b[4m4-1:3m4]),B2[m4-1:0]映射在第二数值中的第(3m4-1)位至第2m4位(即b[3m4-1:2m4]),B3[m4-1:0]映射在第二数值中的第(2m4-1)位至第m4位(即b[2m4-1:m4]),B4[m4-1:0]映射在第二数值中的第(m4-1)位至第0位(即b[m4-1:0])。
可选的,当m2等于2N×m4时,2N个B0[m4-1:0]之间按照从高数位到低数位的顺序排列得到的数值即为该乘法器在执行累加和运算时的第二数值。当m2大于2N×m4时,2N个B0[m4-1:0]之间按照从高数位到低数位的顺序排列得到的数值为该乘法器在执行累加和运算时的第二数值中的第(m2-2N×m4)位至第(m2-1)位上的数值,第二数值中第0位至第(m2-2N×m4-1)位填充有无效位(比如,填充有0),即第二数值中后(m2-2N×m4)个低位数位上填充有无效位,也可以理解为对排列得到的数值进行无效位填充后的数值即为第二数值,填充后的数值的位数等于m2
具体的,当该单乘法指示信号指示执行该单乘法运算时,Q组融合编码器402用于编码P个预编码器401预编码A[m1-1:0]输出的编码结果和第二数值B[m2-1:0];在该多乘法指示信号指示执行该累加和运算时,Q组融合编码器402用于编码P个预编码器401预编码2N个A0[m3-1:0]排列或者排列并填充后得到的第一数值的编码结果和2N个B0[m4-1:0]排列或者排列并填充后得到的第二数值。
压缩器403,用于压缩Q组融合编码器输出的多个部分积,得到两个累加值,这两个累加值之和为该单乘法运算或该累加和运算的结果。
其中,压缩器403可以包括W层压缩器,W为正整数。当W等于1时,压缩器403包括第一层压缩器,第一层压缩器用于按照从低数位到高数位顺序依次对多个部分积的排列阵列中的每个数位进行压缩,直到每个数位对应的剩余比特位少于三个,得到包括两行的第一压缩阵列,每行对应一个累加值。当W是大于1的整数时,压缩器403包括:第一层压缩器至第W层压缩器;第一层压缩器,用于按照从低数位到高数位顺序依次对多个部分积的排列阵列中的每个数位进行压缩,直到每个数位对应的剩余比特位少于三个,得到第一压缩阵列;第j层压缩器,用于按照从低数位到高数位顺序依次对第j-1压缩阵列中的每个数位进行压缩,直到每个数位对应的剩余比特位少于三个,得到第j压缩阵列,j的取值范围依次从2至W,第W压缩阵列包括两行,每行对应一个累加值。
另外,每层压缩器对每个数位的压缩是针对该数位上的三个比特位进行的,且不压缩该层压缩器压缩得到的进位输出位和当前求和位。多个部分积的排列阵列中的每行包括一个部分积项,每列包括多个部分积中对应同一数位的多个比特位,一个部分积项包括对应同一个预编码器的一组融合编码器输出的多个部分积。
加法器404,用于接收上述两个累加值,并对这两个累加值求和以得到该单乘法运算或该累加和运算的结果。在压缩器403压缩多个部分积得到这两个累加值后,压缩器403可以将这两个累加值发送给加法器404,加法器404在接收到这两个累加值时,对这两个累加值求和即可得到第一数值与第二数值的乘积。这样,当该乘法器在执行该单乘法运算时,加法器404输出的结果即为该单乘法运算A[m1-1:0]×B[m2-1:0]的结果;当该乘法器在执行该累加和运算时,加法器404输出的结果即为2N个二进制乘法A0[m3-1:0]×B0[m4-1:0]的累加和运算的结果。
在一种可能的实施例中,若N=1、m1=2m3+I(I为非负整数)、m2=2m4+J(J为非负整数),该乘法器可以称为单-双融合乘法器,具有单乘法模式和双乘法模式。在单乘法模式下,该乘法器可用于实现一个m1bits×m2bits(即A[m1-1:0]×B[m2-1:0])的单乘法运算;在双乘法模式下,该乘法器可用于实现2个二进制乘法m3bits×m4bits(即2个A0[m3-1:0]×B0[m4-1:0])的累加和运算。为便于描述,下文中可以将2个A0[m3-1:0]分别表示为A1[m3-1:0]和A2[m3-1:0],将2个B0[m4-1:0]分别表示为B1[m4-1:0]和B2[m4-1:0]。
其中,如图5所示,在该乘法器执行m1bits×m2bits的单乘法运算时,第一数值即为A[m1-1:0],第二数值即为B[m2-1:0]。在该乘法器执行2个m3bits×m4bits的累加和运算时,若I为0,则A1[m3-1:0]映射在第一数值的第(m3-1)位至第0位(即对应单乘法运算时的A[m3-1:0])上,A2[m3-1:0]映射在第一数值的第(2m3-1)位至第m3位(即对应单乘法运算时的A[2m3-1:m3])上;进一步的,若I不为0,第一数值的第(2m3+I-1)位至第(2m3)位(即对应单乘法运算时的A[2m3+I-1:2m3]或A[m1-1:2m3])填充符号位。在该乘法器执行2个m3bits×m4bits的累加和运算时,若J为0,则B1[m4-1:0]映射在第二数值的第(2m4+J-1)位至第(m4+J)位(即对应单乘法运算时的B[2m4+J-1:m4+J]或B[m2-1:m4+J])上,B2[m4-1:0]映射在第二数值的第(m4+J-1)位至第J位(即对应单乘法运算时的B[m4+J-1:J])上;进一步的,若J不为0,则第二数值的第(J-1)位至第0位填充无效位(无效位可以是0)。图5中以I和J均不为0为例进行说明。
在一种可能的实施例中,若N=2、m1=4m3+I(I为非负整数)、m2=4m4+J(J为非负整数),该乘法器可以称为单-四融合乘法器,具有单乘法模式和四乘法模式。在单乘法模式下,该乘法器可用于实现一个m1bits×m2bits(即A[m1-1:0]×B[m2-1:0])的单乘法运算;在四乘法模式下该乘法器可用于实现4个二进制乘法m3bits×m4bits(即4个A0[m3-1:0]×B0[m4-1:0])的累加和运算。为便于描述,下文中可以将4个A0[m3-1:0]分别表示为A1[m3-1:0]、A2[m3-1:0]、A3[m3-1:0]和A4[m3-1:0],将4个B0[m4-1:0]分别表示为B1[m4-1:0]、B2[m4-1:0]、B3[m4-1:0]和B4[m4-1:0]。
其中,如图6所示,在该乘法器执行m1bits×m2bits的单乘法运算时,第一数值即为A[m1-1:0],第二数值即为B[m2-1:0]。在该乘法器执行4个m3bits×m4bits的累加和运算时,若I为0,则A1[m3-1:0]映射在第一数值的第(m3-1)位至第0位(即对应单乘法运算时的A[m3-1:0])上,A2[m3-1:0]映射在第一数值的第(2m3-1)位至第m3位(即对应单乘法运算时的A[2m3-1:m3])上,A3[m3-1:0]映射在第一数值的第(3m3-1)位至第2m3位(即对应单乘法运算时的A[3m3-1:2m3])上,A4[m3-1:0]映射在第一数值的第(4m3-1)位至第3m3位(即对应单乘法运算时的A[4m3-1:3m3])上;进一步的,若I不为0,则第一数值的第(4m3+I-1)位至第(4m3)位(即对应单乘法运算时的A[4m3+I-1:4m3]或者A[m1-1:4m3])填充符号位。在该乘法器执行4个m3bits×m4bits的累加和运算时,若J为0,则B1[m4-1:0]映射在第二数值的第(4m4+J-1)位至第(3m4+J)位(即对应单乘法运算时的B[4m4+J-1:3m4+J])上,B2[m4-1:0]映射在第二数值的第(3m4+J-1)位至第(2m4+J)位(即对应单乘法运算时的B[3m4+J-1:2m4+J])上,B3[m4-1:0]映射在第二数值的第(2m4+J-1)位至第(m4+J)位(即对应单乘法运算时的B[2m4+J-1:m4+J])上,B4[m4-1:0]映射在第二数值的第(m4+J-1)位至第J位(即对应单乘法运算时的B[m4+J-1:J])上;进一步的,若J不为0,则第二数值的第(J-1)位至第0位填充有无效位(无效位可以是0)。图6中以I和J均不为0为例进行说明。
在上述图5所示的单-双融合乘法器或者图6所示的单-四融合乘法器中,Q组融合编码器402均可用于对单乘法运算或者多乘法累加和运算中的数值进行编码,并将多个部分积输出给压缩器403,压缩器403均可用于对单乘法运算或者多乘法累加和运算时对应的多个部分积进行压缩得到两个累加值,最后由加法器404对这两个累加值求和以得到该单乘法运算或该累加和运算的结果。因此,与现有技术中支持两种不同乘法模式的乘法器相比,本申请实施例提供的乘法器无需使用不同的编码器或压缩器分开对两种不同乘法模式下的数值进行编码和压缩,从而减少了该乘法器所需的编码器的数量,同时也减小了运算时长,降低了乘法器的功耗。
进一步的,P个预编码器401包括第i预编码器,用于:当0≤i≤N×m3-1时,根据该单乘法指示信号、该多乘法指示信号和第一数值中的至少两个比特位,确定预编码器结果中的第i组选择信号、第i单乘法组选择信号、单乘法控制信号SCi和第一多乘法控制信号MCi,≤表示小于或等于,i为偶数;当N×m3≤i≤m1-1时,根据该单乘法指示信号、该多乘法指示信号和第一数值中的至少两个比特位,确定预编码器结果中的第i组选择信号、第i单乘法组选择信号、单乘法控制信号SCi和第二多乘法控制信号MCNi和控制信号Si,i为偶数。
其中,第i组选择信号包括第一选择信号M1Mi和第二选择信号M2Mi,第i单乘法组选择信号包括第一单乘法选择信号SM1Mi和第二单乘法选择信号SM2Mi,下文中将该单乘法指示信号表示为SMI,将该多乘法指示信号表示为MMI。
另外,P个预编码器401可以包括多种不同的预编码器,下面分别对这多种不同的预编码器的逻辑功能和电路结构进行详细介绍说明。
如图7-1所示,当i=0时,第一数值中的至少两个比特位包括第一比特位a[0]和第二比特位a[1],P个预编码器401包括第0预编码器。为便于描述,下文中将i=0时的第0预编码器称为第一种预编码器。
具体的,第一种预编码器用于执行如下编码操作:将第一选择信号M1M0设为第一比特位a[0];当第一比特位a[0]为0且第二比特位a[1]为1时,将第二选择信号M2M0设为1,当第一比特位a[0]不为0或第二比特位a[1]不为1时,将第二选择信号M2M0设为0;当单乘法指示信号SMI为1时,将单乘法控制信号SC0设为第二比特位a[1],当单乘法指示信号SMI为0时,将单乘法控制信号SC0设为0;当多乘法指示信号MMI为1时,将第一多乘法控制信号MC0设为第二比特位a[1],当多乘法指示信号MMI为0时,将第一多乘法控制信号MC0设为0;当单乘法指示信号SMI为1时,将第一单乘法选择信号SM1M0设为第一比特位a[0]、第二单乘法选择信号SM2M0设为第二选择M2M0信号,当单乘法指示信号SMI为0时,将第一单乘法选择信号SM1M0和第二单乘法选择信号SM2M0均设为0。
在一种可能的实现方式中,如图7-2所示,第一种预编码器包括:五个与门和一个非门。其中,非门的输入端用于接收第一比特位a[0],非门的输出端与五个与门中第一个与门的一个输入端相耦合,第一个与门的另一个输入端用于接收第二比特位a[1],第一个与门的输出端用于输出第二选择信号M2M0,五个与门中第二个与门的一个输入端和第三个与门的一个输入端均用于接收第二比特位a[1],第二个与门的另一个输入端用于接收单乘法指示信号SMI,第二个与门的输出端用于输出单乘法控制信号SC0,第三个与门的另一个输入端用于接收多乘法指示信号MMI,第三个与门的输出端用于输出第一多乘法控制信号MC0,五个与门中第四个与门的一个输入端和第五个与门的一个输入端用于接收单乘法指示信号SMI,第四个与门的另一个输入端用于接收第一比特位a[0],第四个与门的输出端用于输出第一单乘法选择信号SM1M0,第五个与门的另一个输入端与第一个与门的输出端耦合,第五个与门的输出端用于输出第二单乘法选择信号SM2M0。
如图8-1所示,当0<i≤N×m3-1时,第一数值中的至少两个比特位包括第一比特位a[i-1]、第二比特位a[i]和第三比特位a[i+1],P个预编码器401包括第i预编码器。为便于描述,下文中将0<i≤N×m3-1时的第i预编码器称为第二种预编码器。
具体的,第二种预编码器用于执行如下编码操作:当第一比特位a[i-1]和第二比特位a[i]不相等时,将第一选择信号M1Mi设为1,当第一比特位a[i-1]和第二比特位a[i]相等时,将第一选择信号M1Mi设为0;当第一比特位a[i-1]和第二比特位a[i]相等、且第二比特位a[i]与第三比特位a[i+1]不相等时,将第二选择信号M2Mi设为1,当第一比特位a[i-1]和第二比特位a[i]不相等、或者第二比特位a[i]与第三比特位a[i+1]相等时,将第二选择信号M2Mi设为0;当单乘法指示信号SMI为1时,将单乘法控制信号SCi为第三比特位a[i+1],当单乘法指示信号SMI为0时,将单乘法控制信号SCi设为0;当多乘法指示信号MMI为1时,将第一多乘法控制信号MCi为第三比特位a[i+1],当多乘法指示信号MMI为0时,将第一多乘法控制信号MCi设为0;当单乘法指示信号SMI为1时,将第一单乘法选择信号SM1Mi设为第一选择信号M1Mi、第二单乘法选择信号SM2Mi设为第二选择信号M2Mi,当单乘法指示信号SMI为0时,将第一单乘法选择信号SM1Mi和第二单乘法选择信号SM2Mi均设为0。
在一种可能的实现方式中,如图8-2所示,第二种预编码器包括:四个与门、一个或非门、一个异或门和一个异或非门。其中,异或门的两个输入端用于分别接收第一比特位a[i-1]和第二比特位a[i],异或门的输出端用于输出第一选择信号M1Mi,异或非门的两个输入端分别用于接收第二比特位a[i]和第三比特位a[i+1],或非门的两个输入端分别与异或门的输出端和异或非的输出端耦合,或非门的输出端用于输出第二选择信号M2Mi,四个与门中第一个与门的一个输入端用和第二个与门的一个输入端均用于接收第三比特位a[i+1],第一个与门的另一个输入端用于接收单乘法指示信号SMI,第一个与门的输出端用于输出单乘法控制信号SCi,第二个与门的另一个输入端用于接收多乘法指示信号MMI,第二个与门的输出端用于输出第一多乘法控制信号MCi,四个与门中第三个与门的一个输入端和第四个与门的一个输入端用于接收单乘法指示信号SMI,第三个与门的另一输入端与异或门的输出端耦合,第三个与门的输出端用于输出第一单乘法选择信号SM1Mi,第四个与门的另一输入端与或非门的输出端耦合,第四个与门的输出端用于输出第二单乘法选择信号SM2Mi。
如图9-1所示,当i等于N×m3时,第一数值中的至少两个比特位包括第一比特位a[i-1]、第二比特位a[i]和第三比特位a[i+1],P个预编码器401包括第N×m3预编码器。为便于描述,下文中将i等于N×m3时的第N×m3预编码器称为第三种预编码器。
第三种预编码器用于执行如下编码操作:当单乘法指示信号SMI为1时,将第四比特位c[1]设为第一比特位a[i-1],当单乘法指示信号SMI为0时,将第四比特位c[1]设为0;当第四比特位c[1]和第二比特位a[i]不相等时,将第一选择信号M1Mi设为1,当第四比特位c[1]和第二比特位a[i]相等时,将第一选择信号M1Mi设为0;当第四比特位和第二比特位a[i]相等、且第二比特位a[i]与第三比特位a[i+1]不相等时,将第二选择信号M2Mi设为1,当第四比特位和第二比特位a[i]不相等、或第二比特位a[i]与第三比特位a[i+1]相等时,将第二选择信号M2Mi设为0;当单乘法指示信号SMI为1时,将单乘法控制信号SCi设为第三比特位a[i+1],当单乘法指示信号SMI为0时,将单乘法控制信号SCi设为0;当多乘法指示信号MMI与第三比特位a[i+1]相等时,将第二多乘法控制信号MCNi设为0,当多乘法指示信号MMI与第三比特位a[i+1]不相等时,将第二多乘法控制信号MCNi设为1;当单乘法指示信号SMI为1时,将第一单乘法选择信号SM1Mi设为第一选择信号M1Mi、第二单乘法选择信号SM2Mi设为第二选择信号M2Mi,当单乘法指示信号SMI为0时,将第一单乘法选择信号SM1Mi和第二单乘法选择信号SM2Mi均设为0;将控制信号Si设为第三比特位a[i+1]。
在一种可能的实现方式中,如图9-2所示,第三种预编码器包括四个与门,一个或非门、两个异或门和一个异或非门。其中,四个与门中第一个与门的一个输入端用于接收第一比特位a[i-1],第一个与门的另一个输入端用于接收单乘法指示信号SMI,第一个与门的输出端与两个异或门中第一个异或门的一个输入端耦合,第一个异或门的另一个输入端和异或非门的一个输入端耦合用于接收第二比特位a[i],第一个异或门的输出端用于输出第一选择信号M1Mi,异或非门的另一个输入端用于接收第三比特位a[i+1],异或非门的输出端和第一个异或门的输出端分别与或非门的两个输入端耦合,或非门的输出端用于输出第二选择信号M2Mi,四个与门中第二个与门的一个输入端和两个异或门中第二个异或门的一个输入端相耦合用于接收第三比特位a[i+1],第二个与门的另一个输入端用于接收单乘法指示信号SMI,第二个与门的输出端用于输出单乘法控制信号SCi,第二个异或门的另一个输入端用于接收多乘法指示信号MMI,第二个异或门的输出端用于输出第二多乘法控制信号MCNi,第三比特位a[i+1]输出作为控制信号Si,四个与门的第三个与门的一个输入端和第四个与门的一个输入端用于接收单乘法指示信号SMI,第三个与门的另一个输入端与第一个异或门的输出端耦合,第三个与门的输出端用于输出第一单乘法选择信号SM1Mi,第四个与门的另一个输入端与或非门的输出端耦合,第四个与门的输出端用于输出第二单乘法选择信号SM2Mi。
如图10-1所示,当N×m3<i≤m1-1时,第一数值中的至少两个比特位包括第一比特位a[i-1]、第二比特位a[i]和第三比特位a[i+1],P个预编码器401包括第i预编码器。为便于描述,下文中将N×m3<i≤m1-1时的第i预编码器称为第四种预编码器。
第四种预编码器用于执行如下编码操作:当第一比特位a[i-1]和第二比特位a[i]不相等时,将第一选择信号M1Mi设为1,当第一比特位a[i-1]和第二比特位a[i]相等时,将第一选择信号M1Mi设为0;当第一比特位a[i-1]和第二比特位a[i]相等、且第二比特位a[i]和第三比特位a[i+1]不相等时,将第二选择信号M2Mi设为1,当第一比特位a[i-1]和第二比特位a[i]不相等、或第二比特位a[i]与第三比特位a[i+1]相等时,将第二选择信号M2Mi设为0;当单乘法指示信号SMI为1时,将单乘法控制信号SCi设为第三比特位a[i+1],当单乘法指示信号SMI为0时,将单乘法控制信号SCi设为0;当多乘法指示信号MMI与第三比特位a[i+1]相等时,将第二多乘法控制信号MCNi设为0,当多乘法指示信号MMI与第三比特位a[i+1]不相等时,将第二多乘法控制信号MCNi设为1;当单乘法指示信号SMI为1时,将第一单乘法选择信号SM1Mi设为第一选择信号M1Mi、第二单乘法选择信号SM2Mi设为第二选择信号M2Mi,当单乘法指示信号SMI为0时,将第一单乘法选择信号SM1Mi和第二单乘法选择信号SM2Mi均设为0;将控制信号Si设为第三比特位a[i+1]。
在一种可能的实现方式中,如图10-2所示,第四种预编码器包括:三个与门、一个或非门、两个异或门和一个异或非门。其中,两个异或门中第一个异或门的一个输入端用于接收第一比特位a[i-1],第一个异或门的另一个输入端和异或非门的一个输入端耦合用于接收第二比特位a[i],第一个异或门的输出端用于输出第一选择信号M1Mi,异或非门的另一个输入端用于接收第三比特位a[i+1],异或非门的输出端和第一个异或门的输出端分别与或非门的两个输入端耦合,或非门的输出端用于输出第二选择信号M2Mi,三个与门中第一个与门的一个输入端和两个异或门中第二个异或门的一个输入端相耦合用于接收第三比特位a[i+1],第一个与门的另一个输入端用于接收单乘法指示信号Si,第一个与门的输出端用于输出单乘法控制信号SCi,第二个异或门的另一个输入端用于接收多乘法指示信号MMI,第二个异或门的输出端用于输出第二多乘法控制信号MCNi,第三比特位a[i+1]输出作为控制信号Si,三个与门的第二个与门的一个输入端和第三个与门的一个输入端用于接收单乘法指示信号Si,第二个与门的另一个输入端与第一异或门的输出端耦合,第二个与门的输出端用于输出第一单乘法选择信号SM1Mi,第三个与门的另一个输入端与或非门的输出端耦合,第三个与门的输出端用于输出第二单乘法选择信号SM2Mi。
进一步的,Q组融合编码器402可以包括多种不同的编码器,比如,多种不同的编码器可以包括下文中的十四种编码器,下面分别对这多种不同的编码器的逻辑功能和电路结构进行详细介绍说明。
Q组融合编码器402包括第一编码器。如图11中的(a)所示,第一编码器用于执行如下编码操作:当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]均为1,或第二单乘法选择信号SM2Mi和第二数值中的第二比特位b[k-1]均为1时,将部分积p(i,k)设为单乘法控制信号SCi的反相;当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]不同时为1,且第二单乘法选择信号SM2Mi和第二数值中的第二比特位b[k-1]不同时为1时,将部分积p(i,k)设为单乘法控制信号SCi,k为大于或等于1的整数且k小于或等于(m2-1)。
在一种可能的实现方式中,如图11中的(b)所示,第一编码器包括:两个与门、或门和异或门,两个与门的输出端分别与或门的两个输入端连接,或门的输出端与异或门的一个输入端连接;两个与门中每个与门的一个输入端用于分别接收第一单乘法选择信号SM1Mi和第二单乘法选择信号SM2Mi,两个与门中每个与门的另一个输入端用于分别接收第一比特位b[k]和第二比特位b[k-1];异或门的另一输入端用于接收单乘法控制信号SCi,异或门的输出端用于输出部分积p(i,k)。
Q组融合编码器402还包括第二编码器。如图12中的(a)所示,第二编码器用于执行如下编码操作:当多乘法指示信号MMI和第二数值中的第一比特位b[k-1]均为1,或单乘法指示信号SMI和第二数值中的第二比特位b[k]均为1时,将第一中间项设为1,当多乘法指示信号MMI和第二数值中的第一比特位b[k-1]不同时为1、且单乘法指示信号SMI和第二数值中的第二比特位b[k]不同时为1时,将第一中间项设为0;当第一中间项和第一选择信号M1Mi均为1,或第二选择信号M2Mi和第一比特位b[k-1]均为1,将第二中间项设为1,当第一中间项和第一选择信号M1Mi不同时为1时,且第二选择信号M2Mi和第一比特位b[k-1]不同时为1时,将第二中间项设为0;当第二中间项为1时,将第二多乘法控制信号MCNi的反相设为部分积p(i,k),当第二中间项为0时将第一多乘法控制信号MCi设为部分积p(i,k)。
在一种可能的实现方式中,如图12中的(b)所示,第二编码器包括:四个与门、两个或门和一个异或门,四个与门中第一个与门的输出端和第二个与门的输出端分别与两个或门中第一个或门的两个输入端耦合,第一个或门的输出端与四个与门中第三个与门的一个输入端耦合,四个与门中第四个与门的输出端和第三个与门的输出端与两个或门中第二个或门的两个输入端耦合,第二个或门的输出端与异或门的一个输入端耦合;第一个与门的两个输入端分别用于接收第一比特位b[k-1]和多乘法指示信号MMI,第二个与门的两个输入端分别用于接收第二比特位b[k]和单乘法指示信号SMI,第三个与门的另一个输入端用于接收第一选择信号M1Mi,第四个与门的两个输入端分别用于接收第一比特位b[k-1]和第二选择信号M2Mi,异或门的另一个输入端用于接收第二多乘法控制信号MCNi,异或门的输出端用于输出部分积p(i,k)。
Q组融合编码器402还包括第三编码器。如图13中的(a)所示,第三编码器用于执行如下编码操作:当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]均为1时,将部分积p(i,k)设为单乘法控制信号SCi的反相;当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]不同时为1时,将部分积p(i,k)设为单乘法控制信号SCi。
在一种可能的实现方式中,如图13中的(b)所示,第三编码器包括:一个与门和一个异或门,与门的输出端与异或门的一个输入端耦合,与门的两个输入端分别用于接收第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k],异或门的另一个输入端用于接收单乘法控制信号SCi,异或门的输出端用于输出部分积p(i,k)。
Q组融合编码器402还包括第四编码器。如图14中的(a)所示,第四编码器用于执行如下编码操作:当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]均为1、或者第二单乘法选择信号SM2Mi和第二数值中的第二比特位b[k-1]均为1时,将第一中间项设为1,当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]不同时为1且第二单乘法选择信号SM2Mi和第二数值中的第二比特位b[k-1]不同时为1时,将第一中间项设为0;当第一中间项为1时,将第二中间项设为单乘法控制信号SCi的反相,当第一中间项为0时,将第二中间项设为单乘法控制信号SCi;当多乘法指示信号MMI为1时,将部分积p(i,k)设为1,当多乘法指示信号MMI为0时,将部分积p(i,k)设为第二中间项。
在一种可能的实现方式中,如图14中的(b)所示,第四编码器包括:两个与门、两个或门和一个异或门,两个与门的输出端分别与两个或门中第一个或门的两个输入端耦合,第一个或门的输出端与异或门的一个输入端耦合,异或门的输出端与两个或门中第二个或门的一个输入端耦合;两个与门中第一个与门的两个输入端分别用于接收第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k],两个与门中第二个与门的两个输入端分别用于接收第二单乘法选择信号SM2Mi和第二数值中的第二比特位b[k-1],异或门的另一个输入端用于接收单乘法控制信号SCi,第二个或门的另一个输入端用于接收多乘法指示信号MMI。
Q组融合编码器402还包括第五编码器。如图15中的(a)所示,第五编码器用于执行如下编码操作:当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]同时为1、或者第二单乘法选择信号SM2Mi和第二数值中的第一比特位b[k]同时为1时,将部分积p(i,k)设为单乘法控制信号SCi;当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]不同时为1且第二单乘法选择信号SM2Mi和第二数值中的第一比特位b[k]不同时为1时,将部分积p(i,k)设为单乘法控制信号SCi的反相。
在一种可能的实现方式中,如图15中的(b)所示,第五编码器包括:两个与门、一个或门和一个异或非门,两个与门的输出端分别与或门的两个输入端耦合,或门的输出端与异或非门的一个输入端耦合;两个与门中第一个与门的两个输入端分别用于接收第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k],两个与门中第二个与门的两个输入端分别用于接收第二单乘法选择信号SM2Mi和第二数值中的第一比特位b[k],异或非门的另一个输入端用于接收单乘法控制信号SCi,异或非门的输出端用于输出部分积p(i,k)。
Q组融合编码器402还包括第六编码器。如图16中的(a)所示,第六编码器用于执行如下编码操作:当第一选择信号M1Mi和第二数值中的第一比特位b[k]均为1、或者第二选择信号M2Mi和第二数值中的第一比特位b[k]均为1时,将部分积p(i,k)设为控制信号Si的反相;当第一选择信号M1Mi和第二数值中的第一比特位b[k]不同时为1且第二选择信号M2Mi和第二数值中的第一比特位b[k]不同时为1时,将部分积p(i,k)设为控制信号Si。
在一种可能的实现方式中,如图16中的(b)所示,第六编码器包括:两个与门、一个或门和一个异或门,两个与门的输出端分别与或门的两个输入端耦合,或门的输出端与异或门的一个输入端耦合;两个与门中第一个与门的两个输入端分别用于接收第一选择信号M1Mi和第二数值中的第一比特位b[k],两个与门中第二个与门的两个输入端分别用于接收第二选择信号M2Mi和第二数值中的第一比特位b[k],异或门的另一个输入端用于接收控制信号Si,异或门的输出端用于输出部分积p(i,k)。
Q组融合编码器402还包括第七编码器。如图17中的(a)所示,第七编码器用于执行如下编码操作:当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]均为1、或者第二单乘法选择信号SM2Mi和第二数值中的第一比特位b[k]均为1时,将第一中间项设为1;当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]不同时为1、且第二单乘法选择信号SM2Mi和第二数值中的第一比特位b[k]不同时为1时,将第一中间项设为0;当第一中间项为1时,将第二中间项设为单乘法控制信号SCi的反相;当第一中间项为0时,将第二中间项设为单乘法控制信号SCi;当单乘法指示信号SMI为1时,将部分积p(i,k)设为第二中间项;当单乘法指示信号SMI为0时,将部分积p(i,k)设为0。
在一种可能的实现方式中,如图17中的(b)所示,第七编码器包括:三个与门、一个或门和一个异或门,三个与门中第一个与门的输出端和第二个与门的输出端分别与或门的两个输入端耦合,或门的输出端与异或门的一个输入端耦合,异或门的输出端与三个与门中第三个与门的一个输入端耦合;第一个与门的两个输入端分别用于接收第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k],第二个与门的两个输入端分别用于接收第二单乘法选择信号SM2Mi和第二数值中的第一比特位b[k],异或门的另一个输入端用于接收单乘法控制信号SCi,第三个与门的另一个输入端用于接收单乘法指示信号SMI。
Q组融合编码器402还包括第八编码器。如图18中的(a)所示,第八编码器用于执行如下编码操作:当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]均为1、或者第二单乘法选择信号SM2Mi和第二数值中的第一比特位b[k]均为1时,将第一中间项设为1,当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]不同时为1、且第二单乘法选择信号SM2Mi和第二数值中的第一比特位b[k]不同时为1时,将第一中间项设为0;当第一中间项为1时,将第二中间项设为单乘法控制信号SCi的反相,当第一中间项为0时,将第二中间项设为单乘法控制信号SCi;当单乘法指示信号SMI为1时,将部分积p(i,k)设为第二中间项,当单乘法指示信号SMI为0时,将部分积p(i,k)设为第二中间项的反相。
在一种可能的实现方式中,如图18中的(b)所示,第八编码器包括:两个与门、一个或门、一个异或门和一个异或非门,两个与门的两个输出端分别与或门的两个输入端耦合,或门的输出端与异或门的一个输入端耦合,异或门的输出端与异或非门的一个输入端耦合;两个与门中第一个与门的两个输入端分别用于接收第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k],两个与门中第二个与门的两个输入端分别用于接收第二单乘法选择信号SM2Mi和第二数值中的第一比特位b[k],异或门的另一个输入端用于接收单乘法控制信号SCi,异或非门的另一个输入端用于接收单乘法指示信号SMI,异或非门的输出端用于输出部分积p(i,k)。
Q组融合编码器402还包括第九编码器。如图19中的(a)所示,第九编码器用于执行如下编码操作:当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]均为1、或者第二单乘法选择信号SM2Mi和第二数值中的第二比特位b[k-1]均为1时,将第一中间项设为1,当第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k]不同时为1、且第二单乘法选择信号SM2Mi和第二数值中的第二比特位b[k-1]不同时为1时,将第一中间项设为0;当第一中间项为1时,将第二中间项设为单乘法控制信号SCi的反相,当第一中间项为0时,将第二中间项设为单乘法控制信号SCi;当第一多乘法控制信号MCi为1时,将部分积p(i,k)设为1,当第一多乘法控制信号MCi为0时,将部分积p(i,k)设为第二中间项。
在一种可能的实现方式中,如图19中的(b)所示,第九编码器包括:两个与门、两个或门和一个异或门,两个与门的输出端分别与两个或门中第一个或门的两个输入端耦合,第一个或门的输出端与异或门的一个输入端耦合,异或门的输出端与两个或门中第二个或门的一个输入端耦合;两个与门中第一个与门的两个输入端分别用于接收第一单乘法选择信号SM1Mi和第二数值中的第一比特位b[k],两个与门中第二个与门的两个输入端分别用于接收第二单乘法选择信号SM2Mi和第二数值中的第二比特位b[k-1],异或门的另一个输入端用于接收单乘法控制信号SCi,第二个或门的另一个输入端用于接收第一多乘法控制信号MCi,第二个或门的输出端用于输出部分积p(i,k)。
Q组融合编码器402还包括第十编码器。如图20中的(a)所示,第十编码器用于执行如下编码操作:当多乘法指示信号MMI和第二数值中的第一比特位b[k-1]均为1,或单乘法指示信号SMI和第二数值中的第二比特位b[k]均为1时,将第一中间项设为1,当多乘法指示信号MMI和第二数值中的第一比特位b[k-1]不同时为1、且单乘法指示信号SMI和第二数值中的第二比特位b[k]不同时为1时,将第一中间项设为0;当第一中间项和第一选择信号M1Mi均为1,或第二选择信号M2Mi和第一比特位b[k-1]均为1时,将第二中间项设为1,当第一中间项和第一选择信号M1Mi不同时为1、且第二选择信号M2Mi和第一比特位b[k-1]不同时为1时,将第二中间项设为0;当第二中间项为1时,将第三中间项设为第二多乘法控制信号MCNi的反相,当第二中间项为0,将第三中间项设为第二多乘法控制信号MCNi;当多乘法指示信号MMI为1时,将部分积p(i,k)设为第三中间项的反相,当多乘法指示信号MMI为0时,将部分积p(i,k)设为第三中间项。
在一种可能的实现方式中,如图20中的(b)所示,第十编码器包括:四个与门、两个或门和两个异或门。其中,四个与门中的第一个与门的输出端和第二个与门的输出端分别与两个或门中第一个或门的两个输入端耦合,第一个或门的输出端与四个与门中第三个与门的一个输入端耦合,四个与门中的第四个与门的输出端和第三个与门的输出端分别与两个或门中第二个或门的两个输入端耦合,第二个或门的输出端与两个异或门中第一个异或门的一个输入端耦合,第一个或门的输出端与两个异或门中第二个异或门的一个输入端耦合;第一个与门的两个输入端用于接收多乘法指示信号MMI和第一比特位b[k-1],第二个与门的两个输入端用于接收单乘法指示信号SMI和第二比特位b[k],第三个与门的另一个输入端用于接收第一选择信号M1Mi,第四个与门的两个输入端分别用于接收第一比特位b[k-1]和第二选择信号M2Mi,第一个异或门的另一个输入端用于接收第二多乘法控制信号MCNi,第二个异或门的另一个输入端用于接收多乘法指示信号MMI。
Q组融合编码器402还包括第十一编码器。第十一编码器用于执行如下编码操作:当单乘法指示信号SMI为1时,将部分积p(i,k)设为1;当单乘法指示信号SMI为0时,将部分积p(i,k)设为0。在一种可能的实现方式中,第十一编码器包括:与门,与门的两个输入端分别用于接收单乘法指示信号SMI和1,与门的输出端用于输出部分积p(i,k)。
Q组融合编码器402还包括第十二编码器。第十二编码器用于执行如下编码操作:当单乘法指示信号SMI为1时,将s(i,0)设为控制信号Si;当单乘法指示信号SMI为0时,将s(i,0)设为0。在一种可能的实现方式中,第十二编码器包括:与门,该与门的两个输入端分别用于接收单乘法指示信号SMI和控制信号Si,该与门的输出端用于输出s(i,0)。
Q组融合编码器402还包括第十三编码器。第十三编码器用于执行如下编码操作:当多乘法指示信号MMI为1时,将s(0,k)设为控制信号Si;当多乘法指示信号MMI为0时,将s(0,k)设为0。在一种可能的实现方式中,第十三编码器包括:与门,该与门的两个输入端分别用于接收单乘法指示信号SMI和控制信号Si,该与门的输出端用于输出s(0,k)。
Q组融合编码器402还包括第十四编码器。第十四编码器用于执行如下编码操作:当多乘法指示信号MMI为1时,将部分积项Q(0,1)设为1;当多乘法指示信号MMI为0时,将s(0,k)设为0。在一种可能的实现方式中,第十四编码器包括:与门,该与门的两个输入端分别用于接收多乘法指示信号MMI和1,该与门的输出端用于输出Q(0,1)。
为便于理解,下面分别结合上述图5所示的单-双融合乘法器、以及图6所示的单-四融合乘法器,对本申请实施例提供的乘法器的结构进行介绍说明。
结合图5,图21为本申请实施例提供的一种单-双融合乘法器的结构示意图。在图21中,每一个空心圆圈用于表示一个编码器,每个空心圆圈中的数字表示该空心圆圈对应的编码器的种类,比如,空心圆圈中的数字为1表示该空心圆圈对应的编码器为第一编码器,圆圈中的数字为0或00表示该圆圈所对应的编码器为现有乘法器中的标准编码器;每一个实心圆圈用于表示常数1或者符号位(即E0、E2等);每一个四边形用于表示一个预编码器,每个四边形中的数字表示该矩形对应的预编码器的种类,比如,矩形中的数字为1表示该四边形对应的预编码器为第一种预编码器。需要说明的是,本文中其他图示中编码器和预编码器均采用图21中类似的表示方式,本申请实施例不再赘述。
其中,当该乘法器工作在双乘法模式时,第一数值是2个A0[m3-1:0]之间按照从低数位到高数位的顺序排列得到的数值、或者是对排列得到的数值进行符号位填充后的数值,第二数值时2个B0[m4-1:0]之间按照从高数位到低数位的顺序排列得到的数值、或者是对排列得到的数值进行无效位填充后的数值。具体的,将2个A0[m3-1:0]分别表示为A1[m3-1:0]和A2[m3-1:0],则A1[m3-1:0]映射在第一数值的第(m3-1)位至第0位(即对应单乘法运算时的A[m3-1:0])上,A2[m3-1:0]映射在第一数值的第(2m3-1)位至第m3位(即对应单乘法运算时的A[2m3-1:m3])上;将2个B0[m4-1:0]分别表示为B1[m4-1:0]和B2[m4-1:0],则B1[m4-1:0]映射在第二数值的第(2m4+J-1)位至第(m4+J)位(即对应单乘法运算时的B[2m4+J-1:m4+J])上,B2[m4-1:0]映射在第二数值的第(m4+J-1)位至第J位(即对应单乘法运算时的B[m4+J-1:J])上。
另外,当该乘法器工作在双乘法模式时,2个二进制乘法A0[m3-1:0]×B0[m4-1:0]对应的数点(也可以称为部分积)可构成两个菱形阵列,这两个菱形阵列按左对齐原则自上而下映射在单乘法模式下的数点阵列上,这两个菱形阵列具体可如图21所示。可选的,当I<2时,双乘法模式下的菱形阵列右下方排列的数点S(m3-2)无法映射到单乘法模式下的菱形阵列上,采用退位等值交换降低该列的数点纵向深度,即去掉S(m3-2),而在右侧相邻数位增加两个相等数点p(m3-2,m4+J-1)_S(m3-2)、p(2m3-2,J-1)_S(m3-2),S(m3-2)即为双乘法模式下的数点S(m3-2,0)。
此外,当该乘法器工作在双乘法模式时,第(m3-2)预编码器的输入为A1[m3-3]、A1[m3-2]和A1[m3-1],即第(m3-2)预编码器的输入为A1[m3-1:0]中的前3个高位数位上的比特位;第m3预编码器的输入为0、A2[0]和A2[1],即第m3预编码器的输入为A2[m3-1:0]中的后2个低位数位上的比特位。
可选的,当该乘法器工作在双乘法模式或者单乘法模式下时,两种模式下在运算过程中符号位扩展产生的数点为常数1的,可以事先进行相加之后,再映射在单乘法模式下的数点上。
在图21中,通过控制P个预编码器401、Q组融合编码器402的输入和/或输出,可以使得该乘法器工作在单乘法模式或者双乘法模式。当工作在单乘法模式时,P个预编码器401和Q组融合编码器402可用于对单乘法模式下的第一数值和第二数值进行编码处理。当工作在双乘法模式时,P个预编码器401和Q组融合编码器402可用于对双乘法模式下的第一数值和第二数值进行编码处理。
图22为本申请实施例提供的一种单-双融合乘法器的压缩器403的结构示意图,图中的每个圆圈代表一个部分积或者进位输出位,圆圈中无数字的为部分积,圆圈中有数字为进位输出位且圆圈中的数字表示压缩器的相应层数输出的进位输出位;图中的矩形表示压缩器,矩形中的数字表示压缩器的层数。需要说明的是,本文中其他图示中的压缩器均采用图22中类似的表示方式,本申请实施例不再赘述。
其中,表示不同的数位。数位是针对压缩器403的输出结果而言的,类似于十进制中的个位、十位或百位。该数位用于表示输出结果的二进制数值中的一个位,例如压缩器403的输出结果是32位二进制数,则输出结果包括32个数位。与数位相对的比特位则对应0或1,表示一个二进制的信息。可以认为,一个数位是所述压缩器403的输出结果中的一个比特位。
示例性,如图23所示,该单-双融合乘法器可用于实现8bits×8bits(即A[7:0]×B[7:0])的单乘法运算,或者用于实现2个4bits×4bits(即2个A0[3:0]×B0[3:0])的累加和运算。为便于描述,将2个A0[3:0]分别表示为A1[3:0]和A2[3:0],将2个B0[3:0]分别表示为B1[3:0]和B2[3:0]。
其中,当该乘法器用于执行单乘法运算时,第一数值为A[7:0],第二数值为B[7:0]。当该乘法器用于执行累加和运算时,A1[3:0]映射在第一数值中的第3位至第0位(即对应单乘法运算时的A[3:0]),A2[3:0]映射在第一数值中的第7位至第4位(即对应单乘法运算时的A[7:4])。当该乘法器用于执行累加和运算时,B1[3:0]映射在第二数值中的第7位至第4位(即对应单乘法运算时的B[7:4]),B2[3:0]映射在第二数值中的第3位至第0位(即对应单乘法运算时的B[3:0])。
在图23中,当该乘法器工作在双乘法模式时,2个4bits×4bits对应的数点可构成两个菱形阵列,这两个菱形阵列按左对齐原则自上而下映射在单乘法模式下的数点阵列上,这两个菱形阵列具体可如图23所示。可选的,双乘法模式下的菱形阵列右下方排列的数点S22无法映射到单乘法模式下的菱形阵列上,可以采用退位等值交换的方式降低该列的数点的纵向深度,即去掉S22,而在右侧相邻数位增加两个相等数点p(2,3)S2和S2。图24为图23对应的单-双融合乘法器中压缩器403的结构示意图。S22即为双乘法模式乘法下的数点S(2,0)。
另外,当该乘法器工作在双乘法模式时,第2预编码器R(2)的输入为A1[1]、A1[2]和A1[3],第4预编码器R(4)的输入为0、A2[0]和A2[1]。通过控制预编码器和编码器402的输入和/或输出,可以使得该乘法器工作在单乘法模式或者双乘法模式。
结合图6,图25为本申请实施例提供的一种单-四融合乘法器的结构示意图。在图25中,每一个圆圈用于表示一个编码器,每个圆圈中的数字表示该圆圈对应的编码器的种类,比如,圆圈中的数字为1表示该圆圈对应的编码器为第一编码器,圆圈中的数字为0表示该圆圈所对应的编码器为现有乘法器中的标准编码器;每一个四边形用于表示一个预编码器,每个四边形中的数字表示该四边形对应的预编码器的种类,比如,四边形中的数字为1表示该四边形对应的预编码器为第一种预编码器,四边形中的数字为0表示该四边形对应的预编码器为现有乘法器中的标准预编码器。
其中,当该乘法器工作在四乘法模式时,第一数值是4个A0[m3-1:0]之间按照从低数位到高数位的顺序排列得到的数值、或者是对排列得到的数值进行符号位填充后的数值,第二数值时4个B0[m4-1:0]之间按照从高数位到低数位的顺序排列得到的数值、或者是对排列得到的数值进行无效位填充后的数值。
具体的,将4个A0[m3-1:0]分别表示为A1[m3-1:0]、A2[m3-1:0]、A3[m3-1:0]和A4[m3-1:0],则A1[m3-1:0]映射在第一数值的第(m3-1)位至第0位(即对应单乘法运算时的A[m3-1:0])上,A2[m3-1:0]映射在第一数值的第(2m3-1)位至第m3位(即对应单乘法运算时的A[2m3-1:m3])上,A3[m3-1:0]映射在第一数值的第(3m3-1)位至第2m3位(即对应单乘法运算时的A[3m3-1:2m3])上,A4[m3-1:0]映射在第一数值的第(4m3-1)位至第3m3位(即对应单乘法运算时的A[4m3-1:3m3])上。将4个B0[m4-1:0]分别表示为B1[m4-1:0]、B2[m4-1:0]、B3[m4-1:0]和B4[m4-1:0],则B1[m4-1:0]映射在第二数值的第(4m4+J-1)位至第(3m4+J)位(即对应单乘法运算时的B[4m4+J-1:3m4+J])上,B2[m4-1:0]映射在第二数值的第(3m4+J-1)位至第(2m4+J)位(即对应单乘法运算时的B[3m4+J-1:2m4+J])上,B3[m4-1:0]映射在第二数值的第(2m4+J-1)位至第(m4+J)位(即对应单乘法运算时的B[2m4+J-1:m4+J])上,B4[m4-1:0]映射在第二数值的第(m4+J-1)位至第J位(即对应单乘法运算时的B[m4+J-1:J])上。
另外,当该乘法器工作在四乘法模式时,4个二进制乘法A0[m3-1:0]×B0[m4-1:0]对应的数点(也可以称为部分积)可构成四个菱形阵列,这四个菱形阵列按左对齐原则自上而下映射在单乘法模式下的数点阵列上,这四个菱形阵列具体可如图25所示。可选的,当I<2时,四乘法模式下的菱形阵列右下方排列的数点S(m3-2)和S(2m3-2)无法映射到单乘法模式下的菱形阵列上,采用退位等值交换降低该列的数点纵向深度。S(m3-2)即为四乘法模式下的数点S(m3-2,0),S(2m3-2)即为四乘法模式下的数点S(2m3-2,0)。对于S(m3-2),则去掉S(m3-2),在右侧相邻数位增加两个相等数点p(m3-2,3m4+J-1)_S(m3-2)、p(2m3-2,2m4+J-1)_S(m3-2)。对于S(2m3-2),则去掉S(2m3-2),在右侧相邻数位增加两个相等数点p(3m3-2,m4+J-1)_S(2m3-2)、p(4m3-2,J-1)_S(2m3-2)。
此外,当该乘法器工作在四乘法模式时,第(m3-2)预编码器的输入为A1[m3-3]、A1[m3-2]和A1[m3-1];第m3预编码器的输入为0、A2[0]和A2[1];第(2m3-2)预编码器的输入为A2[m3-3]、A2[m3-2]和A2[m3-1];第2m3预编码器的输入为0、A3[0]和A3[1],第(3m3-2)预编码器的输入为A3[m3-3]、A3[m3-2]和A3[m3-1];第3m3预编码器的输入为0、A4[0]和A4[1]。
可选的,当该乘法器工作在四乘法模式或者单乘法模式下时,两种模式下在运算过程中符号位扩展产生的数点为常数1的,可以事先进行相加之后,再映射在单乘法模式下的数点上。
在图25中,通过控制P个预编码器401、Q组融合编码器402的输入和/或输出,可以使得该乘法器工作在单乘法模式或者四乘法模式。当工作在单乘法模式时,P个预编码器401和Q组融合编码器402可用于对单乘法模式下的第一数值和第二数值进行编码处理。当工作在四乘法模式时,P个预编码器401和Q组融合编码器402可用于对四乘法模式下的第一数值和第二数值进行编码处理。
图26为本申请实施例提供的一种单-四融合乘法器的压缩器403的结构示意图,图中的每个圆圈代表一个部分积,圆圈中的数字表示可用于表示输出该部分积的编码器的种类。图中的矩形表示压缩器,矩形中的数字表示压缩器的层数。 表示不同的数位。数位是针对压缩器403的输出结果而言的,类似于十进制中的个位、十位或百位。该数位用于表示输出结果的二进制数值中的一个位,例如压缩器403的输出结果是32位二进制数,则输出结果包括32个数位。与数位相对的比特位则对应0或1,表示一个二进制的信息。可以认为,一个数位是所述压缩器403的输出结果中的一个比特位。
在本申请实施例中,Q组融合编码器402均可用于对单乘法运算或者多乘法累加和运算中的数值进行编码,并将多个部分积输出给压缩器403,压缩器403均可用于对单乘法运算或者多乘法累加和运算时对应的多个部分积进行压缩得到两个累加值,最后由加法器404对这两个累加值求和以得到该单乘法运算或该累加和运算的结果。因此,与现有技术中支持两种不同乘法模式的乘法器相比,本申请实施例提供的乘法器无需使用不同的编码器或压缩器分开对两种不同乘法模式下的数值进行编码和压缩,从而减少了该乘法器所需的编码器的数量,同时也减小了运算时长,降低了乘法器的功耗。
在本申请的另一方面,还提供一种处理器或者芯片,该处理器或者芯片包括乘法器;其中,该乘法器可以包括上述图3-图26中任一种图示所提供的乘法器、预编码器或者编码器等。可选地,所述处理器包括神经网络处理单元。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (17)

1.一种多模融合乘法器,其特征在于,用于实现二进制的单乘法运算A[m1-1:0]×B[m2-1:0],或者2N个二进制乘法A0[m3-1:0]×B0[m4-1:0]的累加和运算,m1≥2N×m3,m2≥2N×m4,N为正整数,包括:P个预编码器、Q组融合编码器、以及压缩器,m1、m2、m3、m4、P和Q是大于1的整数;
所述P个预编码器,用于根据单乘法指示信号或多乘法指示信号预编码第一数值,得到预编码结果;其中,在所述单乘法指示信号指示执行所述单乘法运算时,所述第一数值为所述A[m1-1:0],在所述多乘法指示信号指示执行所述累加和运算时,所述第一数值包括2N个所述A0[m3-1:0],2N个所述A0[m3-1:0]之间按照从低数位到高数位的顺序排列;
所述Q组融合编码器,用于编码所述预编码结果和第二数值,得到多个部分积;其中,在所述单乘法指示信号指示执行所述单乘法运算时,所述第二数值为所述B[m2-1:0],在所述多乘法指示信号指示执行所述累加和运算时,所述第二数值包括2N个所述B0[m4-1:0],2N个所述B0[m4-1:0]之间按照从高数位到低数位的顺序排列;
所述压缩器,用于压缩所述多个部分积,得到两个累加值,所述两个累加值之和为所述单乘法运算或所述累加和运算的结果。
2.根据权利要求1所述的乘法器,其特征在于,当m1>2N×m3,所述第一数值中前(m1-2N×m3)个高位数位上填充有符号位;和/或,当m2>2N×m4,所述第二数值中后(m2-2N×m4)个低位数位上填充有无效位。
3.根据权利要求1或2所述的乘法器,其特征在于,所述P个预编码器包括:第i预编码器,用于:
当0≤i≤N×m3-1时,根据所述单乘法指示信号、所述多乘法指示信号和所述第一数值中的至少两个比特位,确定所述编码结果中的第i组选择信号、第i单乘法组选择信号、单乘法控制信号SCi和第一多乘法控制信号MCi,i为偶数;
当N×m3≤i≤m1-1时,根据所述单乘法指示信号、所述多乘法指示信号和所述第一数值中的至少两个比特位,确定所述编码结果中的第i组选择信号、第i单乘法组选择信号、单乘法控制信号SCi、第二多乘法控制信号MCNi和控制信号Si,i为偶数;
其中,所述第i组选择信号包括第一选择信号M1Mi和第二选择信号M2Mi,所述第i单乘法组选择信号包括第一单乘法选择信号SM1Mi和第二单乘法选择信号SM2Mi。
4.根据权利要求3所述的乘法器,其特征在于,当i等于0时,所述至少两个比特位包括所述第一数值中的第一比特位a[0]和第二比特位a[1];
第0预编码器用于执行如下编码操作:
将第一选择信号M1M0设为所述第一比特位a[0];
当所述第一比特位a[0]为0且所述第二比特位a[1]为1时,将第二选择信号M2M0设为1;当所述第一比特位a[0]不为0或所述第二比特位a[1]不为1时,将第二选择信号M2M0设为0;
当所述单乘法指示信号为1时,将单乘法控制信号SC0设为所述第二比特位a[1];当所述单乘法指示信号为0时,将单乘法控制信号SC0设为0;
当所述多乘法指示信号为1时,将第一多乘法控制信号MC0设为所述第二比特位a[1];当所述多乘法指示信号为0时,将第一多乘法控制信号MC0设为0;
当所述单乘法指示信号为1时,将第一单乘法选择信号SM1M0设为所述第一比特位a[0]、第二单乘法选择信号SM2M0设为所述第二选择信号M2M0;当所述单乘法指示信号为0时,将第一单乘法选择信号SM1M0和第二单乘法选择信号SM2M0均设为0。
5.根据权利要求3所述的乘法器,其特征在于,当0<i≤N×m3-1,所述至少两个比特位包括所述第一数值中的第一比特位a[i-1]、第二比特位a[i]和第三比特位a[i+1];
第i预编码器用于执行如下编码操作:
当所述第一比特位a[i-1]和所述第二比特位a[i]不相等时,将所述第一选择信号M1Mi设为1;当所述第一比特位a[i-1]和所述第二比特位a[i]相等时,将所述第一选择信号M1Mi设为0;
当所述第一比特位a[i-1]和所述第二比特位a[i]相等、且所述第二比特位a[i]与所述第三比特位a[i+1]不相等时,将所述第二选择信号M2Mi设为1;当所述第一比特位a[i-1]和所述第二比特位a[i]不相等、或者所述第二比特位a[i]与所述第三比特位a[i+1]相等时,将所述第二选择信号M2Mi设为0;
当所述单乘法指示信号为1时,将所述单乘法控制信号SCi为所述第三比特位a[i+1];当所述单乘法指示信号为0时,将所述单乘法控制信号SCi设为0;
当所述多乘法指示信号为1时,将所述第一多乘法控制信号MCi为所述第三比特位a[i+1];当所述多乘法指示信号为0时,将所述第一多乘法控制信号MCi设为0;
当所述单乘法指示信号为1时,将所述第一单乘法选择信号SM1Mi设为所述第一选择信号M1Mi、所述第二单乘法选择信号SM2Mi设为所述第二选择信号M2Mi;当所述单乘法指示信号为0时,将所述第一单乘法选择信号SM1Mi和所述第二单乘法选择信号SM2Mi均设为0。
6.根据权利要求3所述的乘法器,其特征在于,当i等于N×m3时,所述至少两个比特位包括所述第一数值中的第一比特位a[i-1]、第二比特位a[i]和第三比特位a[i+1];
第N×m3预编码器用于执行如下编码操作:
当所述单乘法指示信号为1时,将第四比特位设为所述第一比特位a[i-1];当所述单乘法指示信号为0时,将第四比特位设为0;
当所述第四比特位和所述第二比特位a[i]不相等时,将所述第一选择信号M1Mi设为1;当所述第四比特位和所述第二比特位a[i]相等时,将所述第一选择信号M1Mi设为0;
当所述第四比特位和所述第二比特位a[i]相等、且所述第二比特位a[i]与所述第三比特位a[i+1]不相等时,将所述第二选择信号M2Mi设为1;当所述第四比特位和所述第二比特位a[i]不相等、或所述第二比特位a[i]与所述第三比特位a[i+1]相等时,将所述第二选择信号M2Mi设为0;
当所述单乘法指示信号为1时,将所述单乘法控制信号SCi设为所述第三比特位a[i+1];当所述单乘法指示信号为0时,将所述单乘法控制信号SCi设为0;
当所述多乘法指示信号与所述第三比特位a[i+1]相等时,将所述第二多乘法控制信号MCNi设为0,当所述多乘法指示信号与所述第三比特位a[i+1]不相等时,将所述第二多乘法控制信号MCNi设为1;
将所述控制信号Si设为所述第三比特位a[i+1];
当所述单乘法指示信号为1时,将所述第一单乘法选择信号SM1Mi设为所述第一选择信号M1Mi、所述第二单乘法选择信号SM2Mi设为所述第二选择信号M2Mi;当所述单乘法指示信号为0时,将所述第一单乘法选择信号SM1Mi和所述第二单乘法选择信号SM2Mi均设为0。
7.根据权利要求3所述的乘法器,其特征在于,当N×m3<i≤m1-1时,所述至少两个比特位包括第一比特位a[i-1]、第二比特位a[i]和第三比特位a[i+1];
第i预编码器用于执行如下编码操作:
当所述第一比特位a[i-1]和所述第二比特位a[i]不相等时,将所述第一选择信号M1Mi设为1;当所述第一比特位a[i-1]和所述第二比特位a[i]相等时,将所述第一选择信号M1Mi设为0;
当所述第一比特位a[i-1]和所述第二比特位a[i]相等、且所述第二比特位a[i]和所述第三比特位a[i+1]不相等时,将所述第二选择信号M2Mi设为1;当所述第一比特位a[i-1]和所述第二比特位a[i]不相等、或所述第二比特位a[i]与所述第三比特位a[i+1]相等时,将所述第二选择信号M2Mi设为0;
当所述单乘法指示信号为1时,将所述单乘法控制信号SCi设为所述第三比特位a[i+1];当所述单乘法指示信号为0时,将所述单乘法控制信号SCi设为0;
当所述多乘法指示信号与所述第三比特位a[i+1]相等时,将所述第二多乘法控制信号MCNi设为0,当所述多乘法指示信号与所述第三比特位a[i+1]不相等时,将所述第二多乘法控制信号MCNi设为1;
当所述单乘法指示信号为1时,将所述第一单乘法选择信号SM1Mi设为所述第一选择信号M1Mi、所述第二单乘法选择信号SM2Mi设为所述第二选择信号M2Mi;当所述单乘法指示信号为0时,将所述第一单乘法选择信号SM1Mi和所述第二单乘法选择信号SM2Mi均设为0;
将所述控制信号Si设为所述第三比特位a[i+1]。
8.根据权利要求3所述的乘法器,其特征在于,所述Q组融合编码器包括第一编码器,用于执行如下编码操作:
当所述第一单乘法选择信号SM1Mi和所述第二数值中的第一比特位b[k]均为1,或所述第二单乘法选择信号SM2Mi和所述第二数值中的第二比特位b[k-1]均为1时,将部分积p(i,k)设为所述单乘法控制信号SCi的反相;
当所述第一单乘法选择信号SM1Mi和所述第二数值中的第一比特位b[k]不同时为1,且所述第二单乘法选择信号SM2Mi和所述第二数值中的第二比特位b[k-1]不同时为1时,将部分积p(i,k)设为所述单乘法控制信号SCi。
9.根据权利要求3所述的乘法器,其特征在于,所述Q组融合编码器还包括:第二编码器,用于执行如下编码操作:
当所述多乘法指示信号和所述第二数值中的第一比特位b[k-1]均为1,或所述单乘法指示信号和所述第二数值中的第二比特位b[k]均为1时,将第一中间项设为1;当所述多乘法指示信号和所述第二数值中的第一比特位b[k-1]不同时为1、且所述单乘法指示信号和所述第二数值中的第二比特位b[k]不同时为1时,将第一中间项设为0;
当所述第一中间项和所述第一选择信号M1Mi均为1,或所述第二选择信号M2Mi和所述第一比特位b[k-1]均为1,将第二中间项设为1;当所述第一中间项和所述第一选择信号M1Mi不同时为1时,且所述第二选择信号M2Mi和所述第一比特位b[k-1]不同时为1时,将第二中间项设为0;
当所述第二中间项为1时,将所述第二多乘法控制信号MCNi的反相设为部分积p(i,k);当所述第二中间项为0时将所述第二多乘法控制信号MCNi设为部分积p(i,k)。
10.根据权利要求3所述的乘法器,其特征在于,所述Q组融合编码器还包括:第三编码器,用于执行如下编码操作:
当所述第一单乘法选择信号SM1Mi和所述第二数值中的第一比特位b[k]为1时,将部分积p(i,k)设为所述单乘法控制信号SCi的反相;
当所述第一单乘法选择信号SM1Mi和所述第二数值中的第一比特位b[k]不同时为1时,将部分积p(i,k)设为所述单乘法控制信号SCi。
11.根据权利要求3所述的乘法器,其特征在于,所述Q组融合编码器还包括:第四编码器,用于执行如下编码操作:
当所述第一单乘法选择信号SM1Mi和所述第二数值中的第一比特位b[k]均为1、或者所述第二单乘法选择信号SM2Mi和所述第二数值中的第二比特位b[k-1]为1时,将第一中间项设为1;当所述第一单乘法选择信号SM1Mi和所述第二数值中的第一比特位b[k]不同时为1且所述第二单乘法选择信号SM2Mi和所述第二数值中的第二比特位b[k-1]不同时为1时,将第一中间项设为0;
当所述第一中间项为1时,将第二中间项设为所述单乘法控制信号SCi的反相;当所述第一中间项为0时,将第二中间项设为所述单乘法控制信号SCi;
当所述多乘法指示信号为1时,将部分积p(i,k)设为1;当所述多乘法指示信号为0时,将部分积p(i,k)设为所述第二中间项。
12.根据权利要求3所述的乘法器,其特征在于,所述Q组融合编码器还包括:第五编码器,用于执行如下编码操作:
当所述第一单乘法选择信号SM1Mi和所述第二数值中的第一比特位b[k]均为1、或者所述第二单乘法选择信号SM2Mi和所述第二数值中的第一比特位b[k]均为1时,将部分积p(i,k)设为所述单乘法控制信号SCi;
当所述第一单乘法选择信号SM1Mi和所述第二数值中的第一比特位b[k]不同时为1且所述第二单乘法选择信号SM2Mi和所述第二数值中的第一比特位b[k]不同时为1时,将部分积p(i,k)设为所述单乘法控制信号SCi的反相。
13.根据权利要求3所述的乘法器,其特征在于,所述Q组融合编码器还包括:第六编码器,用于执行如下编码操作:
当所述第一选择信号M1Mi和所述第二数值中的第一比特位b[k]均为1、或者所述第二选择信号M2Mi和所述第二数值中的第一比特位b[k]均为1时,将部分积p(i,k)设为所述控制信号Si的反相;
当所述第一选择信号M1Mi和所述第二数值中的第一比特位b[k]不同时为1且所述第二选择信号M2Mi和所述第二数值中的第一比特位b[k]不同时为1时,将部分积p(i,k)设为所述控制信号Si。
14.根据权利要求3所述的乘法器,其特征在于,所述Q组融合编码器还包括:第七编码器,用于执行如下编码操作:
当所述第一单乘法选择信号SM1Mi和所述第二数值中的第一比特位b[k]均为1、或者所述第二单乘法选择信号SM2Mi和所述第二数值中的第一比特位b[k]均为1时,将第一中间项设为1;当所述第一单乘法选择信号SM1Mi和所述第二数值中的第一比特位b[k]不同时为1、且所述第二单乘法选择信号SM2Mi和所述第二数值中的第一比特位b[k]不同时为1时,将第一中间项设为0;
当所述第一中间项为1时,将第二中间项设为所述单乘法控制信号SCi的反相;当所述第一中间项为0时,将第二中间项设为所述单乘法控制信号SCi;
当所述单乘法指示信号为1时,将部分积p(i,k)设为所述第二中间项;当所述单乘法指示信号为0时,将部分积p(i,k)设为0。
15.根据权利要求3所述的乘法器,其特征在于,所述Q组融合编码器还包括:第八编码器,用于执行如下编码操作:
当所述第一单乘法选择信号SM1Mi和所述第二数值中的第一比特位b[k]均为1、或者所述第二单乘法选择信号SM2Mi和所述第二数值中的第一比特位b[k]均为1时,将第一中间项设为1;当所述第一单乘法选择信号SM1Mi和所述第二数值中的第一比特位b[k]不同时为1、且所述第二单乘法选择信号SM2Mi和所述第二数值中的第一比特位b[k]不同时为1时,将第一中间项设为0;
当所述第一中间项为1时,将第二中间项设为所述单乘法控制信号SCi的反相;当所述第一中间项为0时,将第二中间项设为所述单乘法控制信号SCi;
当所述单乘法指示信号为1时,将部分积p(i,k)设为所述第二中间项;当所述单乘法指示信号为0时,将部分积p(i,k)设为所述第二中间项的反相。
16.根据权利要求3所述的乘法器,其特征在于,所述Q组融合编码器还包括:第九编码器,用于执行如下编码操作:
当所述第一单乘法选择信号SM1Mi和所述第二数值中的第一比特位b[k]均为1、或者所述第二单乘法选择信号SM2Mi和所述第二数值中的第二比特位b[k-1]为1时,将第一中间项设为1;当所述第一单乘法选择信号SM1Mi和所述第二数值中的第一比特位b[k]不同时为1、且所述第二单乘法选择信号SM2Mi和所述第二数值中的第二比特位b[k-1]不同时为1时,将第一中间项设为0;
当所述第一中间项为1时,将第二中间项设为所述单乘法控制信号SCi的反相;当所述第一中间项为0时,将第二中间项设为所述单乘法控制信号SCi;
当所述第一多乘法控制信号MCi为1时,将部分积p(i,k)设为1;当所述第一多乘法控制信号MCi为0时,将部分积p(i,k)设为所述第二中间项。
17.根据权利要求3所述的乘法器,其特征在于,所述Q组融合编码器还包括:第十编码器,用于执行如下编码操作:
当所述多乘法指示信号和所述第二数值中的第一比特位b[k-1]同时为1,或所述单乘法指示信号和所述第二数值中的第二比特位b[k]同时为1时,将第一中间项设为1;当所述多乘法指示信号和所述第二数值中的第一比特位b[k-1]不同时为1、且所述单乘法指示信号和所述第二数值中的第二比特位b[k]不同时为1时,将第一中间项设为0;
当所述第一中间项和所述第一选择信号M1Mi同时为1,或所述第二选择信号M2Mi和所述第一比特位b[k-1]同时为1,将第二中间项设为1;当所述第一中间项和所述第一选择信号M1Mi不同时为1、且所述第二选择信号M2Mi和所述第一比特位b[k-1]不同时为1时,将第二中间项设为0;
当所述第二中间项为1时,将第三中间项设为所述第二多乘法控制信号MCNi的反相;当所述第二中间项为0,将第三中间项设为所述第二多乘法控制信号MCNi;
当所述多乘法指示信号为1时,将部分积p(i,k)设为所述第三中间项的反相;当所述多乘法指示信号为0时,将部分积p(i,k)设为所述第三中间项。
CN202080001065.1A 2020-04-01 2020-04-01 一种多模融合乘法器 Active CN113767362B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/082840 WO2021196096A1 (zh) 2020-04-01 2020-04-01 一种多模融合乘法器

Publications (2)

Publication Number Publication Date
CN113767362A CN113767362A (zh) 2021-12-07
CN113767362B true CN113767362B (zh) 2024-05-17

Family

ID=77926883

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080001065.1A Active CN113767362B (zh) 2020-04-01 2020-04-01 一种多模融合乘法器

Country Status (4)

Country Link
US (1) US20220374205A1 (zh)
EP (1) EP4080350A4 (zh)
CN (1) CN113767362B (zh)
WO (1) WO2021196096A1 (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101685385A (zh) * 2008-09-28 2010-03-31 北京大学深圳研究生院 一种复数乘法器
CN110221808A (zh) * 2019-06-03 2019-09-10 深圳芯英科技有限公司 向量乘加运算的预处理方法、乘加器及计算机可读介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3033212B2 (ja) * 1991-01-31 2000-04-17 日本電気株式会社 乗算器
DE60027149D1 (de) * 2000-08-01 2006-05-18 St Microelectronics Sa Aritmetik Einheit
KR20050088506A (ko) * 2004-03-02 2005-09-07 삼성전자주식회사 다중 세정도를 지원하는 확장형 몽고메리 모듈러 곱셈기
US8234326B2 (en) * 2005-05-05 2012-07-31 Mips Technologies, Inc. Processor core and multiplier that support both vector and single value multiplication
TWI489375B (zh) * 2010-12-03 2015-06-21 Via Tech Inc 無進位乘法裝置及其處理方法
US8868634B2 (en) * 2011-12-02 2014-10-21 Advanced Micro Devices, Inc. Method and apparatus for performing multiplication in a processor
CN110058840B (zh) * 2019-03-27 2022-11-25 西安理工大学 一种基于4-Booth编码的低功耗乘法器
CN110196709B (zh) * 2019-06-04 2021-06-08 浙江大学 一种基于RRAM的非易失性8位Booth乘法器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101685385A (zh) * 2008-09-28 2010-03-31 北京大学深圳研究生院 一种复数乘法器
CN110221808A (zh) * 2019-06-03 2019-09-10 深圳芯英科技有限公司 向量乘加运算的预处理方法、乘加器及计算机可读介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
高性能乘加单元的设计;侯华敏, 杨虹;微电子学;20051020(第05期);全文 *

Also Published As

Publication number Publication date
EP4080350A1 (en) 2022-10-26
WO2021196096A1 (zh) 2021-10-07
EP4080350A4 (en) 2022-12-28
US20220374205A1 (en) 2022-11-24
CN113767362A (zh) 2021-12-07

Similar Documents

Publication Publication Date Title
US5880985A (en) Efficient combined array for 2n bit n bit multiplications
CN111758106A (zh) 大规模并行神经推理计算元件
US6820102B2 (en) DSP unit for multi-level global accumulation
CN110222833B (zh) 一种用于神经网络的数据处理电路
US20140136588A1 (en) Method and apparatus for multiplying binary operands
US10853037B1 (en) Digital circuit with compressed carry
CN110554854B (zh) 数据处理器、方法、芯片及电子设备
CN115145536A (zh) 一种低位宽输入-低位宽输出的加法器树单元及近似乘加方法
CN113032723B (zh) 一种矩阵乘法器的实现方法及矩阵乘法器装置
JPH0715346A (ja) 2ベクトルのスカラ積を決定するためのデジタル信号の符号化方法および回路
CN113767362B (zh) 一种多模融合乘法器
CN103955585B (zh) 一种适用于低功耗容错电路的fir滤波器结构
CN113227963B (zh) 一种乘法器及算子电路
WO2023124371A1 (zh) 数据处理装置、方法、芯片、计算机设备及存储介质
Song et al. Research on parallel principal component analysis based on ternary optical computer
US20220075598A1 (en) Systems and Methods for Numerical Precision in Digital Multiplier Circuitry
CN115878074A (zh) 用于专门的过程块中的稀疏性操作的系统和方法
WO2022150058A1 (en) Numerical precision in digital multiplier circuitry
CN210109789U (zh) 数据处理器
CN210006030U (zh) 数据处理器
CN113986194A (zh) 基于预处理的神经网络近似乘法器实现方法及装置
CN110688087B (zh) 数据处理器、方法、芯片及电子设备
CN113610222A (zh) 计算神经网络卷积运算的方法及系统、硬件装置
WO2023015442A1 (zh) 一种乘法器
Dadda et al. A parallel-serial decimal multiplier architecture

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