CN113946312A - 一种乘法器及算子电路 - Google Patents
一种乘法器及算子电路 Download PDFInfo
- Publication number
- CN113946312A CN113946312A CN202111075411.3A CN202111075411A CN113946312A CN 113946312 A CN113946312 A CN 113946312A CN 202111075411 A CN202111075411 A CN 202111075411A CN 113946312 A CN113946312 A CN 113946312A
- Authority
- CN
- China
- Prior art keywords
- transistor
- coupled
- bit
- inverse
- node
- 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.)
- Pending
Links
- 238000007906 compression Methods 0.000 claims abstract description 59
- 230000006835 compression Effects 0.000 claims abstract description 55
- 238000009825 accumulation Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 23
- 238000004891 communication Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 8
- 230000003068 static effect Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000007306 turnover Effects 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000000034 method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
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
- G06F7/523—Multiplying only
- G06F7/533—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
- G06F7/5334—Reduction 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3066—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction by means of a mask or a bit-map
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/31—Design entry, e.g. editors specifically adapted for circuit design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- 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/50—Adding; Subtracting
-
- 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/50—Adding; Subtracting
- G06F7/501—Half or full adders, i.e. basic adder cells for one denomination
-
- 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
- G06F7/523—Multiplying only
-
- 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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6011—Encoder aspects
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Geometry (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Complex Calculations (AREA)
Abstract
本申请提供一种乘法器及算子电路,涉及电子技术领域,用于减小乘法器的面积。该乘法器用于实现M比特位的第一数值与N比特位的第二数值的相乘,包括:P组编码器和W层反相压缩器,P组编码器中的每组编码器包括N个编码器;所述每组编码器,用于采用正相编码算子或者反相编码算子编码第二数值中的部分比特位、对应于所述每编码器的组选择信号和符号控制输入信号以得到一个部分积项,组选择信号和符号控制输入信号是根据第一数值中的部分比特位产生的,P组编码器编码得到P个部分积项;W层反相压缩器,用于采用反相压缩算子压缩P个部分积项,得到两个累加值,两个累加值之和为第一数值与第二数值的乘积。
Description
技术领域
本申请涉及电子技术领域,尤其涉及一种乘法器及算子电路。
背景技术
随着人工智能(artificial intelligence,AI)技术的不断发展和成熟,服务器、终端等通信设备中已逐步普及AI技术,AI技术对通信设备中诸如中央处理单元(centralprocessing unit,CPU)、神经网络处理单元(neural-network processing unit,NPU)、图像处理单元(graphics processing unit,GPU)或者数字信号处理器(digital signalprocessor,DSP)等处理器的计算能力要求较高,乘法器作为处理器的核心计算单元,扮演着越来越重要的角色。
现有乘法器架构是基于标准编码器和标准加法器来设计,如图1所示,具体的设计实现可归纳为三个步骤:(1)在Radix-4 Booth编码器中采用Radix-4 Booth算法对第一数值和第二数值进行编码得到部分积;(2)通过Wallace压缩树压缩部分积;(3)将压缩得到的两个部分积求和,即得到乘法运算结果。图1中以第一数值和第二数值均为16位二进制数、乘法运算结果为32位二进制数为例进行说明,a[15:0]表示第一数值,b[15:0]表示第二数值,y[31:0]表示乘法运算结果。但是,上述基于Radix-4 Booth算法和Wallace压缩树实现的乘法器中,使用了大量的标准编码器和标准加法器,而标准编码器和标准加法器中金属-氧化物-半导体(metal–oxide–semiconductor,MOS)晶体管的数量多、面积大,从而导致乘法器的面积很大。也即是说,现有的乘法器的设计实现比较复杂。因此,如何设计更易于实现的乘法器就成为一个问题。
发明内容
本申请提供一种乘法器及算子电路,用于降低乘法器的实现难度。为达到上述目的,本申请采用如下技术方案:
第一方面,提供一种乘法器,用于实现M比特位(bits)的第一数值与N比特位的第二数值的相乘,M和N是大于1的整数,包括:P组编码器和W层反相压缩器,P组编码器中的每组编码器包括N个编码器,W是正整数,P是大于1的整数;所述每组编码器,用于采用正相编码算子或者反相编码算子编码第二数值中的部分比特位、对应于所述每组编码器的组选择信号和符号控制输入信号以得到一个部分积项,组选择信号和符号控制输入信号是根据第一数值中的部分比特位产生的,P组编码器编码得到P个部分积项;W层反相压缩器,用于采用反相压缩算子压缩P个部分积项,得到两个累加值,两个累加值之和为第一数值与第二数值的乘积。上述技术方案中,采用正相编码算子或者反相编码算子进行编码的P组编码器以及采用反相压缩算子进行压缩的W层反相压缩器,其实现方案比较简单。例如,该方案具有面积小、功耗小的优点,从而该乘法器的面积小、功耗小。
在第一方面的一种可能的实现方式中,所述N个编码器中每个编码器对应第二数值中的第一比特位和第二比特位,组选择信号包括第一信号和第二信号;所述每个编码器,具体用于:采用正相编码算子或者反相编码算子编码第一比特位、第二比特位、组选择信号和符号控制输入信号得到一个部分积项的一个输出比特位;其中,第一比特位和第二比特位可以是第二数值中相邻的两个比特位,或者是第二数值中的同一个比特位。上述可能的实现方式中,提供了一种编码器的编码方式,且其实现方案比较简单,例如能够减小编码器的面积。
在第一方面的一种可能的实现方式中,当一个编码器采用正相编码算子时,该编码器是正相编码器,且具体用于执行如下编码操作:若第一信号和第一比特位均为1、或者第二信号和第二比特位均为1,则该编码器得到的输出比特位为符号控制输入信号的反相;若第一信号和第一比特位中的至少一个为0、而且第二信号和第二比特位中的至少一个为0,则该编码器得到的输出比特位为符号控制输入信号。上述可能的实现方式中,提供了一种正相编码器,该正相编码器的实现方案比较简单,例如面积小、功耗低。
在第一方面的一种可能的实现方式中,当一个编码器采用反相编码算子时,该编码器是反相编码器,且具体用于执行如下编码操作:若第一信号和第一比特位均为1、或者第二信号和第二比特位均为1,则该编码器得到的输出比特位为符号控制输入信号;若第一信号和第一比特位中的至少一个为0、而且第二信号和第二比特位中的至少一个为0,则该编码器得到的输出比特位为符号控制输入信号的反相。上述可能的实现方式中,提供了一种反相编码器,该反相编码器的实现方案比较简单,例如面积小、功耗低。
在第一方面的一种可能的实现方式中,W为1,W层反相压缩器包括:第一层反相压缩器;第一层反相压缩器,用于按照从低数位到高数位顺序依次对P个部分积项的排列阵列中每个数位采用反相压缩算子进行压缩,直到每个数位对应的剩余比特位少于三个,得到第一压缩阵列,第一压缩阵列包括两行,每行对应一个累加值;对每个数位的压缩是针对该数位上的每三个比特位进行的;P个部分积项的排列阵列中的每行包括一个部分积项,每列包括P个部分积项中对应同一数位的多个比特位。上述可能的实现方式中,提供的反相压缩器的压缩效率高。
在第一方面的一种可能的实现方式中,W是大于1的整数,W层反相压缩器包括:第一层反相压缩器至第W层反相压缩器;第一层反相压缩器,用于按照从低数位到高数位顺序依次对P个部分积项的排列阵列中每个数位采用反相压缩算子进行压缩,直到每个数位对应的剩余比特位少于三个,得到第一压缩阵列;第i层反相压缩器,用于按照从低数位到高数位顺序依次对第i-1压缩阵列中每个数位采用反相压缩算子进行压缩,直到每个数位对应的剩余比特位少于三个,得到第i压缩阵列,i的取值范围依次从2至W;第W压缩阵列包括两行,每行对应一个累加值;其中,每层反相压缩器对每个数位的压缩是针对该数位上的三个比特位进行的;P个部分积项的排列阵列中的每行包括一个部分积项,每列包括P个部分积项中对应同一数位的多个比特位。上述可能的实现方式中,提供的W层反相压缩器的压缩效率高。
在第一方面的一种可能的实现方式中,对每个数位的每三个比特位,每个反相压缩器具体用于进行以下压缩:若所述三个比特位均为0,则进位输出位为1,当前求和输出位为1;若三个比特位均为1,则进位输出位为0,当前求和输出位为0;若所述三个比特位中存在一个比特位为1、另外两个比特位为0,则进位输出位为1,当前求和输出位为0;若所述三个比特位中存在两个比特位为1、另外一个比特位为0,则进位输出位为0,当前求和输出位为1。上述可能的实现方式中,提供了一种简单有效的反相压缩器的压缩方式。
在第一方面的一种可能的实现方式中,同一数位对应的编码器采用的编码算子的相位与反相压缩器输出的当前求和输出位或进位输出位的相位有关;其中,该同一数位对应的编码器是指编码得到该同一数位对应的输出比特位的编码器,该同一数位对应的反相压缩器是指压缩该同一数位的三个比特位的反相压缩器。上述可能的实现方式中,提供了一种快速有效的确定编码器采用的编码算子的相位的方式。
在第一方面的一种可能的实现方式中,该乘法器还包括:一个或多个反相器,用于对W层反相压缩器中的一个或多个反相压缩器输出的当前求和输出位和进位输出位的相位取反、或对输入一个或多个反相压缩器的三个比特位中至少一个比特位的相位取反。上述可能的实现方式中,能够在保证压缩结果准确的情况下,提高该W层反相压缩器的压缩效率。
在第一方面的一种可能的实现方式中,该乘法器还包括:预编码器,用于接收第一数值,并根据第一数值中的部分比特位产生组选择信号和符号控制输入信号。
在第一方面的一种可能的实现方式中,该乘法器还包括:加法器,用于接收两个累加值,并对两个累加值求和以得到乘积。
第二方面,提供一种算子电路,包括:第一晶体管、第二晶体管、第三晶体管、第四晶体管、第五晶体管、第六晶体管、第七晶体管、第八晶体管、第九晶体管、第十晶体管、第十一晶体管、第十二晶体管、第十三晶体管、第十四晶体管和第十五晶体管;其中,第一晶体管和第二晶体管并联耦合在电源端和第一节点之间;第三晶体管和第四晶体管并联耦合在第一节点和第二节点之间;第五晶体管和第七晶体管串联耦合在第二节点和接地端之间;第六晶体管和第八晶体管串联耦合在第二节点和接地端之间;第三晶体管和第五晶体管的控制端用于接收第一输入;第一晶体管和第六晶体管的控制端用于接收第二输入;第四晶体管和第七晶体管的控制端用于接收第三输入;第二晶体管和第八晶体管的控制端用于接收第四输入;第九晶体管耦合在第五输入的反相和输出端之间,第九晶体管的控制端耦合于第二节点;第十晶体管耦合在第二节点和输出端之间,第十晶体管的控制端耦合于第五输入的反相;第十一晶体管和第十三晶体管串联耦合在输出端和接地端之间;第十一晶体管的控制端耦合于第二节点;第十三晶体管的控制端用于接收第五输入的反相;第十二晶体管耦合在输出端和第二节点之间,第十二晶体管的控制端用于接收第五输入;第十四晶体管和第十五晶体管串联耦合在电源端和接地端之间,第十四晶体管和第十五晶体管的串联耦合节点耦合于第五输入的反相;第十四晶体管和第十五晶体管的控制端用于接收第五输入。上述技术方案中,提供了一种正相编码算子电路,该正相编码算子电路中晶体管的数量少、占用面积小,实现简单,从而将该算子电路应用于乘法器中时可以减小乘法器的面积。
在第二方面的一种可能的实现方式中,第一晶体管、第二晶体管、第三晶体管、第四晶体管、第九晶体管、第十晶体管和第十四晶体管是P型MOS(PMOS)晶体管;第五晶体管、第六晶体管、第七晶体管、第八晶体管、第十一晶体管、第十二晶体管、第十三晶体管和第十五晶体管是N型MOS(NMOS)晶体管。上述可能的实现方式中,提供的算子电路编码数据时晶体管的翻转率较小,从而将该算子电路应用于乘法器中时可以减小乘法器的功耗。
第三方面,提供一种算子电路,包括:第一晶体管、第二晶体管、第三晶体管、第四晶体管、第五晶体管、第六晶体管、第七晶体管、第八晶体管、第九晶体管、第十晶体管、第十一晶体管、第十二晶体管、第十三晶体管、第十四晶体管和第十五晶体管;其中,第一晶体管和第二晶体管并联耦合在电源端和第一节点之间;第三晶体管和第四晶体管并联耦合在第一节点和第二节点之间;第五晶体管和第七晶体管串联耦合在第二节点和接地端之间;第六晶体管和第八晶体管串联耦合在第二节点和接地端之间;第三晶体管和第五晶体管的控制端用于接收第一输入;第一晶体管和第六晶体管的控制端用于接收第二输入;第四晶体管和第七晶体管的控制端用于接收第三输入;第二晶体管和第八晶体管的控制端用于接收第四输入;第九晶体管和第十晶体管串联耦合在电源端和输出端之间,第九晶体管的控制端耦合于第五输入的反相,第十晶体管的控制端耦合于第二节点;第十一晶体管耦合在第二节点与输出端之间,第十一晶体管的控制端耦合于第五输入;第十二晶体管耦合在输出端和第五输入的反相之间,第十二晶体管的控制端耦合于第二节点;第十三晶体管耦合在输出端和第二节点之间,第十三晶体管的控制端耦合于第五输入的反相;第十四晶体管和第十五晶体管串联耦合在电源端和接地端之间,第十四晶体管和第十五晶体管的串联耦合节点耦合于第五输入的反相;第十四晶体管和第十五晶体管的控制端用于接收第五输入。上述技术方案中,提供了一种反相编码算子电路,该反相编码算子电路中晶体管的数量少、占用面积小,实现简单,从而将该算子电路应用于乘法器中时可以减小乘法器的面积。
在第三方面的一种可能的实现方式中,第一晶体管、第二晶体管、第三晶体管、第四晶体管、第九晶体管、第十晶体管、第十一晶体管和第十四晶体管是PMOS晶体管;第五晶体管、第六晶体管、第七晶体管、第八晶体管、第十二晶体管、第十三晶体管和第十五晶体管是NMOS晶体管。上述可能的实现方式中,提供的算子电路编码数据时晶体管的翻转率较小,从而将该算子电路应用于乘法器中时可以减小乘法器的功耗。
第四方面,提供一种算子电路,包括:第一晶体管、第二晶体管、第三晶体管、第四晶体管、第五晶体管、第六晶体管、第七晶体管、第八晶体管、第九晶体管、第十晶体管、第十一晶体管、第十二晶体管、第十三晶体管、第十四晶体管、第十五晶体管、第十六晶体管、第十七晶体管、第十八晶体管、第十九晶体管、第二十晶体管、第二十一晶体管和第二十二晶体管;其中,第一晶体管和第二晶体管并联耦合在电源端和第一节点之间;第三晶体管耦合在第一节点和第一输出端之间;第四晶体管耦合在第一输出端和第二节点之间;第五晶体管和第六晶体管并联耦合在第二节点和接地端之间;第七晶体管耦合在电源端和第三节点之间;第八晶体管耦合在第三节点和第一输出端之间;第九晶体管耦合在第一输出端和第四节点之间;第十晶体管耦合在第四节点和接地端之间;第十一晶体管和第十二晶体管串联耦合在第三节点和第二输出端之间;第十三晶体管和第十四晶体管串联耦合在第二输出端和第四节点之间;第十五晶体管、第十六晶体管和第十七晶体管并联耦合在电源端和第五节点之间;第十八晶体管耦合在第五节点与第二输出端之间;第十九晶体管耦合在第二输出端与第六节点之间;第二十晶体管、第二十一晶体管和第二十二晶体管并联耦合在第六节点与接地端之间;第三晶体管、第四晶体管、第十二晶体管、第十三晶体管、第十五晶体管和第二十晶体管的控制端用于接收第一输入;第一晶体管、第五晶体管、第七晶体管、第十晶体管、第十六晶体管和第二十一晶体管的控制端用于接收第二输入;第二晶体管、第六晶体管、第八晶体管、第九晶体管、第十一晶体管、第十四晶体管、第十七晶体管和第二十二晶体管的控制端用于接收第三输入;第十八晶体管和第十九晶体管的控制端耦合于第一输出端。上述技术方案中,提供了一种反相压缩算子电路,该反相压缩算子电路中晶体管的数量少、占用面积小,实现简单,从而将该算子电路应用于乘法器中时可以减小乘法器的面积。
在第四方面的一种可能的实现方式中,第一晶体管、第二晶体管、第三晶体管、第七晶体管、第八晶体管、第十一晶体管、第十二晶体管、第十五晶体管、第十六晶体管、第十七晶体管和第十八晶体管是PMOS晶体管;第四晶体管、第五晶体管、第六晶体管、第九晶体管、第十晶体管、第十三晶体管、第十四晶体管、第十九晶体管、第二十晶体管、第二十一晶体管和第二十二晶体管是NMOS晶体管。上述可能的实现方式中,提供的算子电路压缩数据时晶体管的翻转率较小,从而将该算子电路应用于乘法器中时可以减小乘法器的功耗。
第五方面,提供一种处理器,包括乘法器或算子电路;其中,该乘法器为上述第一方面或者第一方面的任一种可能的实现方式所提供的乘法器,该算子电路为上述第二方面至第四方面、或者第二方面至第四方面的任一种可能的实现方式所提供的算子电路。可选地,所述处理器包括神经网络处理单元。
第六方面,提供一种芯片,包括乘法器或算子电路;其中,该乘法器为上述第一方面或者第一方面的任一种可能的实现方式所提供的乘法器,该算子电路为上述第二方面至第四方面、或者第二方面至第四方面的任一种可能的实现方式所提供的算子电路。
可以理解地,上述提供的任一种处理器或芯片均包括上文所提供的乘法器或算子电路,因此,其所能达到的有益效果可参考上文所提供的乘法器或算子电路中的有益效果,此处不再赘述。
附图说明
图1为现有技术提供的一种乘法器的架构图;
图2为本申请实施例提供的一种通信设备的结构示意图;
图3为本申请实施例提供的一种乘法器的结构示意图;
图4为本申请实施例提供的一种正相编码器的逻辑框图;
图5为本申请实施例提供的一种反相编码器的逻辑框图;
图6为本申请实施例提供的一种W层反相压缩器的压缩示例图;
图7为本申请实施例提供的一种反相压缩器的逻辑框图;
图8为本申请实施例提供的一种预编码器和编码器的示例图;
图9为本申请实施例提供的另一种W层反相压缩器的压缩示例图;
图10为本申请实施例提供的一种正相编码器的电路图;
图11为本申请实施例提供的一种反相编码器的电路图;
图12为本申请实施例提供的一种反相压缩器的电路图。
具体实施方式
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,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可以是单个,也可以是多个。另外,本申请的实施例采用了“第一”、“第二”等字样对名称或功能或作用类似的对象进行区分,本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定。“耦合”一词用于表示电性连接,包括通过导线或连接端直接相连或通过其他器件间接相连。因此“耦合”应被视为是一种广义上的电子通信连接。
图2为本申请实施例提供的一种通信设备的结构示意图,该通信设备可以是终端、或者服务器等。参见图2,该通信设备可以包括存储器201、处理器202、通信接口203和总线204。其中,存储器201、处理器202以及通信接口203通过总线204相互连接。存储器201可用于存储数据、软件程序以及模块,主要包括存储程序区和存储数据区,存储程序区可存储操作系统、至少一个功能所需的应用程序等,存储数据区可存储该设备的使用时所创建的数据等。处理器202用于对该通信设备的动作进行控制管理,比如通过运行或执行存储在存储器201内的软件程序和/或模块,以及调用存储在存储器201内的数据,执行该设备的各种功能和处理数据。通信接口203用于支持该设备进行通信。
其中,处理器202包括但不限于中央处理单元(Central Processing Unit,CPU)、网络处理单元(Network Processing Unit,NPU)、图形处理器(Graphics ProcessingUnit,GPU)、或数字信号处理器(Digital Signal Processor,DSP)或者通用处理器等。处理器202中包括一个或多个乘法器,例如包括乘法器阵列,该乘法器是在处理器202中实现乘法运算的器件。
总线204可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线,或者扩展工业标准结构(Extended Industry Standard Architecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图2中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
为了进一步描述技术方案,图3为本申请实施例提供的一种乘法器的结构示意图,该乘法器用于实现M比特位的第一数值与N比特位的第二数值的相乘,M和N是大于1的整数。参见图3,该乘法器包括:P个预编码器301、P组编码器302、W层反相压缩器303和加法器304,P组编码器302中的每组编码器3021包括N个编码器,W是正整数,P是大于1的整数。该乘法器相对于传统设计实现简单,下面将具体介绍。
P个预编码器301中的每个预编码器3011,用于根据第一数值中的部分比特位产生组选择信号和符号控制输入信号,从而P个预编码器301对应产生P个组选择信号和P个符号控制输入信号。其中,P个组选择信号和P个符号控制输入信号与P组编码器一一对应,即一个组选择信号和一个符号控制输入信号与一组编码器对应。组选择信号可以是根据第一数值中相邻的两个或者三个比特位产生的,符号控制输入信号可以是第一数值中的一个比特位,也可以是根据第一数值中相邻的两个或者三个比特位产生的。
比如,第一数值为4bits的二进制数且表示为a[3:0]、P等于2,则2个预编码器可以根据a[3:0]产生2个组选择信号和2个符号控制输入信号。这2个组选择信号中,第1组选择信号可以根据a[0]和a[1]产生,第2个组选择信号可以根据a[1]至a[3]产生。这2个符号控制输入信号中,第1个符号控制输入信号可以是a[1],第2个符号控制输入信号可以是a[3]。上述a[i]表示a[3:0]中从右向左的第i个比特位,i取值从0至3。
每组编码器3021,用于采用正相编码算子或者反相编码算子编码第二数值、对应于该组编码器的组选择信号和符号控制输入信号以得到一个部分积项,P组编码器编码得到P个部分积项。
其中,每组编码器3021包括N个编码器,N个编码器中的每个编码器对应第二数值中的第一比特位和第二比特位,组选择信号包括第一信号和第二信号;则每个编码器具体可用于:采用正相编码算子或者反相编码算子编码与该编码器第一比特位、第二比特位、组选择信号和符号控制输入信号,得到一个部分积项的一个输出比特位。每组编码器3021中的N个编码器分别编码得到一个部分积项的N个输出比特位,即得到该部分积项。第一比特位和第二比特位可以是第二数值中相邻的两个比特位,或者是第二数值中的同一个比特位,后续实施例对此将进行更具体描述。
比如,第二数值为3bits的二进制数且表示为b[2:0]、N等于3,则每组编码器3021包括3个编码器。这3个编码器中,第1个编码器对应b[2:0]中的相邻两个比特位为b[0]和b[1]、第2个编码器对应b[2:0]中的相邻两个比特位为b[1]和b[2]、第3个编码器对应的第一比特位和第二比特位均为b[2:0]中的b[2],即最后一个第3个编码器仅输入一个比特位b[2]同时作为该第一比特位和第二比特位。上述b[i]表示b[2:0]中从右向左的第i个比特位。
以上述第一数值为a[3:0]、第二数值为b[2:0]的举例为例:若第1组编码中第1个编码器对应第二数值b[2:0]中相邻两个比特位为b[0]和b[1]、对应的组选择信号为根据a[0]和a[1]产生的第一组选择信号(表示为A和B),对应的符号控制输入信号为a[1],则所述第1个编码器具体可用于:采用正相编码算子或者反相编码算子编码b[0]、b[1]、A、B和a[1],得到第1个部分积项中的1个输出比特位。
具体的,当一个编码器采用正相编码算子时,该编码器可以称为正相编码器;当一个编码器采用反相编码算子时,该编码器可以称为反相编码器。下面分别对正相编码器和反相编码器进行具体描述。
正相编码器具体用于执行如下编码操作:若第一信号和第一比特位均为1、或者第二信号和第二比特位均为1,则该正相编码器得到的输出比特位为符号控制输入信号的反相;若第一信号和第一比特位中的至少一个为0、而且第二信号和第二比特位中的至少一个为0,则该正相编码器得到的输出比特位为符号控制输入信号。
图4为本申请实施例提供的一种正相编码器的逻辑框图,该逻辑框图中包括编码选通单元、取反单元和开关控制单元。该编码选通单元的功能为:若A与Sel_A同时为1、或B与Sel_B同时为1则输出1,否则输出0;该取反单元的功能为:对该编码选通单元的输出进行取反;该开关控制单元的功能为:若该取反单元的输出为1则输出S,若该取反单元的输出为0则输出/S。上述图4中的A表示第一信号、B表示第二信号、Sel_A表示第一比特位、Sel_B表示第二比特位、S表示符号控制输入信号、/S表示符号控制输入信号的反相、OUT表示输出比特位。
也即是,该正相编码器具体可以根据如下表1所示的逻辑表进行编码,表1中的x表示“0”或“1”中的任一个,A、B、Sel_A、Sel_B、S和OUT与图4中的A、B、Sel_A、Sel_B、S和OUT一致。
表1
A | Sel_A | B | Sel_B | S | OUT |
1 | 1 | x | x | 0 | 1 |
1 | 1 | x | x | 1 | 0 |
x | x | 1 | 1 | 0 | 1 |
x | x | 1 | 1 | 1 | 0 |
0 | x | 0 | x | 0 | 0 |
0 | x | 0 | x | 1 | 1 |
x | 0 | x | 0 | 0 | 0 |
x | 0 | x | 0 | 1 | 1 |
反相编码器,具体用于执行如下编码操作:若第一信号和第一比特位均为1、或者第二信号和第二比特位均为1,则该反相编码器得到的输出比特位为符号控制输入信号;若第一信号和第一比特位中的至少一个为0、而且第二信号和第二比特位中的至少一个为0,则该反相编码器得到的输出比特位为符号控制输入信号的反相。
图5为本申请实施例提供的一种反相编码器的逻辑框图,该逻辑框图中包括编码选通单元、取反单元和开关控制单元。该编码选通单元的功能为:若A与Sel_A同时为1、或B与Sel_B同时为1则输出1,否则输出0;该取反单元的功能为:对该编码选通单元的输出进行取反;该开关控制单元的功能为:若该取反单元的输出为0则输出S,若该取反单元的输出为1则输出/S。上述图5中的A表示第一信号、B表示第二信号、Sel_A表示第一比特位、Sel_B表示第二比特位、S表示符号控制输入信号、/S表示符号控制输入信号的反相、OUT表示输出比特位。
也即是,反相编码器具体可以根据如下表2所示的逻辑表进行编码,表2中的x表示“0”或“1”中的任一个,A、B、Sel_A、Sel_B、S和OUT与图5中的A、B、Sel_A、Sel_B、S和OUT一致。
表2
A | Sel_A | B | Sel_B | S | OUT |
1 | 1 | x | x | 0 | 0 |
1 | 1 | x | x | 1 | 1 |
x | x | 1 | 1 | 0 | 0 |
x | x | 1 | 1 | 1 | 1 |
0 | x | 0 | x | 0 | 1 |
0 | x | 0 | x | 1 | 0 |
x | 0 | x | 0 | 0 | 1 |
x | 0 | x | 0 | 1 | 0 |
W层反相压缩器303,用于采用反相压缩算子压缩P个部分积项,得到两个累加值。
具体的,当W为1时,W层反相压缩器303包括:第一层反相压缩器,用于按照从低数位到高数位顺序依次对P个部分积项的排列阵列中每个数位采用反相压缩算子进行压缩,直到每个数位对应的剩余比特位少于三个,得到包括两行的第一压缩阵列,每行对应一个累加值。当W是大于1的整数时,W层反相压缩器303包括:第一层反相压缩器至第W层反相压缩器;第一层反相压缩器,用于按照从低数位到高数位顺序依次对P个部分积项的排列阵列中每个数位采用反相压缩算子进行压缩,直到每个数位对应的剩余比特位少于三个,得到第一压缩阵列;第i层反相压缩器,用于按照从低数位到高数位顺序依次对第i-1压缩阵列中每个数位采用反相压缩算子进行压缩,直到每个数位对应的剩余比特位少于三个,得到第i压缩阵列,i的取值范围依次从2至W,第W压缩阵列包括两行,每行对应一个累加值。
其中,每层反相压缩器对每个数位的压缩是针对该数位上的三个比特位进行的,且不压缩该层反相压缩器压缩得到的进位输出位和当前求和位。P个部分积项的排列阵列中的每行包括一个部分积项,每列包括P个部分积项中对应同一数位的多个比特位对每个数位的压缩是针对该数位上的三个比特位进行的;其中,P个部分积项的排列阵列中的每行包括一个部分积项,每列包括P个部分积项中对应同一数位的多个比特位。
比如,假设P组编码器编码得到8个部分积项,每个部分积项包括16个比特位,则这8个部分积项的排列阵列可以如图6中的(a)所示,PP[1]至PP[8]分别表示8个部分积项,20、21、21、…、232表示不同的数位。数位是针对所述W层反相压缩器的输出结果而言的。类似于十进制中的个位、十位或百位,该数位用于表示输出结果的二进制数值中的一个位,例如W层反相压缩器的输出结果是32位二进制数,则输出结果包括32个数位。与数位相对的,比特位则对应0或1,表示一个二进制的信息。可以认为,一个数位是所述W层反相压缩器的输出结果中的一个比特位。
为便于理解,将图6中的(a)转换为图6中的(b)所示,对W层反相压缩器303中的每层反相压缩器的压缩过程进行举例说明。具体的,输出的结果有32个数位,第一层反相压缩器具体用于对该排列阵列中24至229中的每个数位对应的比特位,按每三个比特位进行压缩、不足三个比特位的保留,除24至229之外的其他数位对应的比特位不足三个比特位也保留,图6中的(b)中的每个实线矩形方框可用于表示第一层反相压缩器中的一个反相压缩器,第一层反相压缩器压缩得到的第1压缩阵列如图6中的(c)所示,图中的表示第一层反相压缩器输出的当前求和输出位,○表示第一层反相压缩器输出的进位输出位;第二层反相压缩器具体用于对第1压缩阵列中26至223、以及226中的每个数位对应的比特位,按每三个比特位进行压缩、不足三个比特位的保留,除26至223、以及226之外的其他数位对应的比特位不足三个比特位也保留,图6中的(c)中的每个矩形方框可用于表示第二层反相压缩器中的一个反相压缩器,第二层反相压缩器压缩得到的第2压缩阵列如图6中的(d)所示,图中的表示第二层反相压缩器输出的当前求和输出位,◎表示第二层反相压缩器输出的进位输出位。后续第三层反相压缩器至第W层反相压缩器的具体压缩过程与上述第一层反相压缩器和第二层反相压缩器的具体压缩过程类似,本申请实施例在此不再赘述。
对每个数位的每三个比特位,每个反相压缩器具体用于进行以下压缩:若所述三个比特位均为0,则进位输出位为1,当前求和输出位为1;若所述三个比特位均为1,则进位输出位为0,当前求和输出位为0;若所述三个比特位中存在一个比特位为1、另外两个比特位为0,则进位输出位为1,当前求和输出位为0;若所述三个比特位中存在两个比特位为1、另外一个比特位为0,则进位输出位为0,当前求和输出位为1。
其中,进位输出位是指向当前压缩数位的下一数位的输出位,当前求和输出位是指当前压缩数位压缩后的输出位。比如,假设当前压缩数位为25、当前压缩数位的下一数位为26、对25的三个比特位,若这三个比特位均为0,则压缩后25对应产生1个1,26对应产生一个1。
图7为本申请实施例提供的一种反相压缩器的逻辑框图,该逻辑框图中包括反相进位输出单元和反相求和输出单元。该反相进位输出单元的功能为:若Ai、Bi和Ci中至少有2个有效(有效可以为1,也可以为0),则输出无效(若有效为1,则无效为0,若有效为0,则无效为1),否则输出有效。该反相求和输出单元的功能为:若Ai、Bi和Ci中存在2个有效、或全无效,则输出有效,否则输出无效,输入该反相求和输出单元的nCip1在有效时可用于区分Ai、Bi和Ci是2个有效还是全无效。上述图7中的Ai、Bi和Ci分别表示输入的三个比特位,nCip1表示进位输出位,nSi表示当前求和输出位。也即是,每层反相压缩器具体可以根据如下表3所示的逻辑表进行压缩,表3中的Ai、Bi和Ci分别表示输入的所述三个比特位,nCip1表示进位输出位,nSi表示当前求和输出位。
表3
进一步的,该乘法器还可以包括:一个或多个反相器,用于对W层反相压缩器303中的一个或多个反相压缩器输出的当前求和输出位和进位输出位的相位取反、或对输入所述一个或多个反相压缩器的所述三个比特位中至少一个比特位的相位取反。
其中,W层反相压缩器303可以包括多层反相压缩器,多层反相压缩器中的每层可以包括至少一个反相压缩器,每个反相压缩器的输出相位可以根据需求进行设定,且每个反相压缩器的输出相位与输入相位是相反的,从而每个反相压缩器的输入相位也被设定。
需要说明的是,一个反相压缩器的输出相位可以是指该反相压缩器输出的当前求和输出位和进位输出位的相位,且当前求和输出位和进位输出位的相位是相同的,即同为正相或反相。一个反相压缩器的输入相位可以是指设定的输入该反相压缩器的所述三个比特位的相位,且设定的所述三个比特位的相位是相同的,即同为正相或反相。
当W层反相压缩器303中的一个或多个反相压缩器本身的输出相位与设定的输出相位不同时,所述一个或者多个反相器可用于对这一个或多个反相压缩器输出的当前求和输出位和进位输出位的相位取反,以使其与设定的输出相位一致。同理,当输入一个或多个反相压缩器的所述三个比特位中至少一个比特位的相位与设定的输入相位不同时,所述一个或者多个反相器可用于对输入所述一个或多个反相压缩器的所述三个比特位中至少一个比特位的相位取反,以使其与设定的输入相位一致。
在一种可能的实现方式中,每层反相压缩器包括的至少一个反相压缩器的输出相位可以按照如下方式设定:最后一层反相压缩器的输出相位设定为正相,倒数第二层反相压缩器的输出相位设定为反相,倒数第三层反相压缩器的输出相位设定为正相,……,以此类推,直到设定第一层反相压缩器的输出相位。这里的第一层反相压缩器可以是指按照从上到下的顺序、对每个数位对应的多个比特位进行压缩时的最上层的反相压缩器,第二层反相压缩器可以是指次上层的反相压缩器,……,以此类推。比如,W层反相压缩器303包括4层反相压缩器,则可以按照如下方式设定:第4层反相压缩器的输出相位设定为正相,第3层反相压缩器的输出相位设定为反相,第2层反相压缩器的输出相位设定为正相,第1层反相压缩器的输出相位设定为反相。
可选的,当某一反相压缩器本身的输出相位或输入相位、与设定的输出相位或输入相位不一致,且需要至少三个反相器进行取反才能满足时,可以局部调整该反相压缩器的输出相位的设定,来减少需要的反相器的数量。比如,当某一反相压缩器设定的输出相位为正相(此时该反相压缩器设定的输入相位为反相)时,若该该反相压缩器本身的输出相位为正相、且输入该反相压缩器的所述三个比特位本身的相位也为正相,则该反相压缩器需要三个反相器分别对所述三个比特位的相位取反之后,才能满足设定的输出相位和输入相位的要求;此时,通过重新设定该反相压缩器的输出相位为反相(此时该反相压缩器设定的输入相位为正相),则该反相压缩器只需要两个反相器对两个输出位(即当前求和输出位和进位输出位)的输出相位取反之后,即可满足设定的输出相位和输入相位的要求。
进一步的,P组编码器302中的至少一个编码器采用的编码算子的相位与W层反相压缩器303中至少一层反相压缩器输出的当前求和输出位或进位输出位的相位有关。可选的,设定至少一个编码器中每个编码器采用的编码算子的相位与自身连接的反相压缩器的输入相位相同。其中,每个编码器采用的编码算子的相位可以是正相或反相。当一个编码器采用的编码算子的相位是正相(即采用正相编码算子)时,该编码器即为上述正相编码器;当一个编码器采用的编码算子的相位是反相(即采用反相编码算子)时,该编码器即为上述反相编码器。
加法器304,用于接收上述两个累加值,并对这两个累加值求和以得到所述乘积。在W层反相压缩器303压缩P个部分积项得到这两个累加值后,W层反相压缩器303可以将这两个累加值发送给加法器304,加法器304在接收到这两个累加值时,对这两个累加值求和即可得到第一数值与第二数值的乘积。
为便于理解,下面以第一数值为a[10:0]、第二数值为b[12:0]为例,对本申请所述的乘法器进行举例说明。如图8所示,该乘法器可以包括6个预编码器、6组编码器和3层反相压缩器。
具体的,第1个预编码器用于根据a[0]和a[1]产生组选择信号S0和S1、以及符号控制输入信号a[1];第2个预编码器用于根据a[1]、a[2]和a[3]产生组选择信号S2和S3、以及符号控制输入信号a[3];第3个预编码器用于根据a[3]、a[4]和a[5]产生组选择信号S4和S5、以及符号控制输入信号a[5];第4个预编码器用于根据a[5]、a[6]和a[7]产生组选择信号S6和S7、以及符号控制输入信号a[7];第5个预编码器用于根据a[7]、a[8]和a[9]产生组选择信号S8和S9、以及符号控制输入信号a[9];第6个预编码器用于根据a[9]和a[10]产生组选择信号S10、以及符号控制输入信号S_11。相应的,第1组编码器用于编码b[12:0]、S0、S1和a[1],得到第1个部分积项PP[1];第2组编码器用于编码b[12:0]、S2、S3和a[3],得到第2个部分积项PP[2];第3组编码器用于编码b[12:0]、S4、S5和a[5],得到第3个部分积项PP[3];第4组编码器用于编码b[12:0]、S6、S7和a[7],得到第4个部分积项PP[4];第5组编码器用于编码b[12:0]、S8、S9和a[9],得到第5个部分积项PP[5];第6组编码器用于编码b[12:0]、S10和S_11,得到第6个部分积项PP[6]。其中,每组编码器中的每个编码器分别用于编码b[12:0]中的一个比特位或者两个比特位,以及对应的组选择信号和符号控制输入信号,具体可以参见图8所示。最后,这6个部分积项PP[1]至PP[6]对应的排列阵列可以如图9所示,按照上述乘法器中W层反相压缩器303的相关描述,可以通过3层反相压缩器对图9所示的排列阵列进行压缩,详细的压缩过程与上述图6中的相关描述类似,本申请实施例在此不再赘述。
本申请实施例提供的乘法器中,P个预编码器中可以包括结构不同的预编码器,比如图8中的第1个预编码器包括非门和与门,第2至第5个预编码器包括异或门、同或门和或非门,第6个预编码器包括异或门和与门。另外,本申请实施例中同一组编码器的第1个编码器可以与其他编码器的结构不同,不同组的编码器的结构也可以不同,比如,图8中第1至第5组编码器的第1个编码器包括与门和异或门,第2-第13个编码器为正相编码器或者反相编码器,第6组编码器的每个编码器包括与门和同或门。
需要说明的是,图8中的PP[1]_i(i的取值范围为1至14)表示第一个部分积项PP[1]的第i个比特位,A表示第一信号,B表示第二信号,Sel_A表示第一比特位,Sel_B表示第二比特位,S表示符号控制输入信号,OUT表示输出比特位。
图10为本申请实施例提供的一种正相编码算子电路的结构示意图,该正相编码算子电路也可以称为正相编码器。该正相编码器包括:第一晶体管M1、第二晶体管M2、第三晶体管M3、第四晶体管M4、第五晶体管M5、第六晶体管M6、第七晶体管M7、第八晶体管M8、第九晶体管M9、第十晶体管M10、第十一晶体管M11、第十二晶体管M12、第十三晶体管M13、第十四晶体管M14和第十五晶体管M15。
其中,第一晶体管M1和第二晶体管M2并联耦合在电源端和第一节点①之间;第三晶体管M3和第四晶体管M4并联耦合在第一节点①和第二节点②之间;第五晶体管M5和第七晶体管M7串联耦合在第二节点②和接地端之间;第六晶体管M6和第八晶体管M8串联耦合在第二节点②和接地端之间。第三晶体管M3和第五晶体管M5的控制端用于接收第一输入A;第一晶体管M1和第六晶体管M6的控制端用于接收第二输入Sel_A;第四晶体管M4和第七晶体管M7的控制端用于接收第三输入B;第二晶体管M2和第八晶体管M8的控制端用于接收第四输入Sel_B。
第九晶体管M9耦合在第五输入S的反相/S和输出端OUT之间,第九晶体管M9的控制端耦合于第二节点②,第二节点②的信号为/Y;第十晶体管M10耦合在第二节点②和输出端OUT之间,第十晶体管M10的控制端耦合于第五输入S的反相/S;第十一晶体管M11和第十三晶体管M13串联耦合在输出端OUT和接地端之间。第十一晶体管M11的控制端耦合于第二节点②;第十三晶体管M13的控制端用于接收第五输入S的反相/S;第十二晶体管M12耦合在输出端OUT和第二节点②之间,第十二晶体管M12的控制端用于接收第五输入S;第十四晶体管M14和第十五晶体管M15串联耦合在电源端和接地端之间,第十四晶体管M14和第十五晶体管M15的串联耦合节点耦合于第五输入S的反相/S;第十四晶体管M14和第十五晶体管M15的控制端用于接收第五输入S。
在本申请实施例中,上述第一输入A至第五输入S分别可以是上述乘法器实施例中关于正相编码器的相关描述中的第一信号、第一比特位、第二信号、第二比特位和符号控制输入信号。
可选的,第一晶体管M1、第二晶体管M2、第三晶体管M3、第四晶体管M4、第九晶体管M9、第十晶体管M10和第十四晶体管M14是PMOS晶体管;第五晶体管M5、第六晶体管M6、第七晶体管M7、第八晶体管M8、第十一晶体管M11、第十二晶体管M12、第十三晶体管M13和第十五晶体管M15是NMOS晶体管。相应的,上述控制端具体可以是指相应的PMOS晶体管或者NMOS晶体管的栅极。
需要说明的是,上述举例的第一晶体管M1至第十五晶体管M15可以是MOS晶体管,也可以是用双极型晶体管代替,图10中所示的各晶体管的类型仅为示例性的,并不对本申请实施例构成限制。
图11为本申请实施例提供的一种反相编码算子电路的结构示意图,该反相编码算子电路也可以称为反相编码器。该反相编码器包括:第一晶体管M1、第二晶体管M2、第三晶体管M3、第四晶体管M4、第五晶体管M5、第六晶体管M6、第七晶体管M7、第八晶体管M8、第九晶体管M9、第十晶体管M10、第十一晶体管M11、第十二晶体管M12、第十三晶体管M13、第十四晶体管M14和第十五晶体管M15。
其中,第一晶体管M1和第二晶体管M2并联耦合在电源端和第一节点①之间;第三晶体管M3和第四晶体管M4并联耦合在第一节点①和第二节点②之间;第五晶体管M5和第七晶体管M7串联耦合在第二节点②和接地端之间;第六晶体管M6和第八晶体管M8串联耦合在第二节点②和接地端之间;第三晶体管M3和第五晶体管M5的控制端用于接收第一输入A;第一晶体管M1和第六晶体管M6的控制端用于接收第二输入Sel_A;第四晶体管M4和第七晶体管M7的控制端用于接收第三输入B;第二晶体管M2和第八晶体管M8的控制端用于接收第四输入Sel_B。
第九晶体管M9和第十晶体管M10串联耦合在电源端和输出端OUT之间,第九晶体管M9的控制端耦合于第五输入S的反相/S,第十晶体管M10的控制端耦合于第二节点②,第二节点②的信号为/Y;第十一晶体管M11耦合在第二节点②与输出端OUT之间,第十一晶体管M11的控制端耦合于第五输入S;第十二晶体管M12耦合在输出端OUT和第五输入S的反相/S之间,第十二晶体管M12的控制端耦合于第二节点②;第十三晶体管M13耦合在输出端OUT和第二节点②之间,第十三晶体管M13的控制端耦合于第五输入S的反相/S;第十四晶体管M14和第十五晶体管M15串联耦合在电源端和接地端之间,第十四晶体管M14和第十五晶体管M15的串联耦合节点耦合于第五输入S的反相/S;第十四晶体管M14和第十五晶体M15管的控制端用于接收第五输入S。
在本申请实施例中,上述第一输入A至第五输入S分别可以是上述乘法器实施例中关于反相编码器的相关描述中的第一信号、第一比特位、第二信号、第二比特位和符号控制输入信号。
可选的,第一晶体管M1、第二晶体管M2、第三晶体管M3、第四晶体管M4、第九晶体管M9、第十晶体管M10、第十一晶体管M11和第十四晶体管M14是PMOS晶体管;第五晶体管M5、第六晶体管M6、第七晶体管M7、第八晶体管M8、第十二晶体管M12、第十三晶体管M13和第十五晶体管M15是NMOS晶体管。相应的,上述控制端具体可以是指相应的PMOS晶体管或者NMOS晶体管的栅极。
需要说明的是,上述举例的第一晶体管M1至第十五晶体管M15可以是MOS晶体管,也可以是用双极型晶体管代替,图11中所示的各晶体管的类型仅为示例性的,并不对本申请实施例构成限制。
图12为本申请实施例提供的一种反相压缩算子电路的结构示意图,该反相压缩算子电路也可以称为反相压缩器。该反相压缩器包括:第一晶体管M1、第二晶体管M2、第三晶体管M3、第四晶体管M4、第五晶体管M5、第六晶体管M6、第七晶体管M7、第八晶体管M8、第九晶体管M9、第十晶体管M10、第十一晶体管M11、第十二晶体管M12、第十三晶体管M13、第十四晶体管M14、第十五晶体管M15、第十六晶体管M16、第十七晶体管M17、第十八晶体管M18、第十九晶体管M19、第二十晶体管M20、第二十一晶体管M21和第二十二晶体管M22。
其中,第一晶体管M1和第二晶体管M2并联耦合在电源端和第一节点①之间;第三晶体管M3耦合在第一节点①和第一输出端nCip1之间;第四晶体管M4耦合在第一输出端nCip1和第二节点②之间;第五晶体管M5和第六晶体管M6并联耦合在第二节点②和接地端之间;第七晶体管M7耦合在电源端和第三节点③之间;第八晶体管M8耦合在第三节点③和第一输出端nCip1之间;第九晶体管M9耦合在第一输出端nCip1和第四节点④之间;第十晶体管M10耦合在第四节点④和接地端之间;第十一晶体管M11和第十二晶体管M12串联耦合在第三节点③和第二输出端nSi之间;第十三晶体管M13和第十四晶体管M14串联耦合在第二输出端nSi和第四节点④之间;第十五晶体管M15、第十六晶体管M16和第十七晶体管M17并联耦合在电源端和第五节点⑤之间;第十八晶体管M18耦合在第五节点⑤与第二输出端nSi之间;第十九晶体管M19耦合在第二输出端nSi与第六节点⑥之间;第二十晶体管M20、第二十一晶体管M21和第二十二晶体管M22并联耦合在第六节点⑥与接地端之间。
第三晶体管M3、第四晶体管M4、第十二晶体管M12、第十三晶体管M13、第十五晶体管M15和第二十晶体管M20的控制端用于接收第一输入Ai;第一晶体管M1、第五晶体管M5、第七晶体管M7、第十晶体管M10、第十六晶体管M16和第二十一晶体管M21的控制端用于接收第二输入Bi;第二晶体管M2、第六晶体管M6、第八晶体管M8、第九晶体管M9、第十一晶体管M11、第十四晶体管M14、第十七晶体管M17和第二十二晶体管M22的控制端用于接收第三输入Ci;第十八晶体管M18和第十九晶体管M19的控制端耦合于第一输出端nCip1。
在本申请实施例中,上述第一输入Ai、第二输入Bi和第三输入Ci可以是上述乘法器实施例中关于反相压缩器的相关描述中的所述三个比特位,第一输出端nCip1可以用于输出所述反相压缩器的进位输出位,第二输出端nSi可以用于输出所述反相压缩器的当前求和输出位。
可选的,第一晶体管M1、第二晶体管M2、第三晶体管M3、第七晶体管M7、第八晶体管M8、第十一晶体管M11、第十二晶体管M12、第十五晶体管M15、第十六晶体管M16、第十七晶体管M17和第十八晶体管M18是PMOS晶体管;第四晶体管M4、第五晶体管M5、第六晶体管M6、第九晶体管M9、第十晶体管M10、第十三晶体管M13、第十四晶体管M14、第十九晶体管M19、第二十晶体管M20、第二十一晶体管M21和第二十二晶体管M22是NMOS晶体管。相应的,上述控制端具体可以是指相应的PMOS晶体管或者NMOS晶体管的栅极。
需要说明的是,上述举例的第一晶体管M1至第二十二晶体管M22可以是MOS晶体管,也可以用双极型晶体管代替,图12中所示的各晶体管的类型仅为示例性的,并不对本申请实施例构成限制。
本申请实施例将采用上文所提供的正相编码器、反相编码器和反相压缩器的乘法器与现有基于标准编码器和标准加法器的乘法器进行了比较,具体如下表4和表5所示,作为本申请的一个实施例,其不限定于以下具体参数值。
表4
从表4中可以看出,每个标准编码器使用的晶体管数量为22、占用面积为0.2736、面积收益为1.18,每个正相编码器或反相编码器使用的晶体管数量为15、占用面积为0.23256、面积收益为1,每个标准加法器使用的晶体管数量为28、占用面积为0.2736、面积收益为1.10,每个反相压缩器使用的晶体管数量为24、占用面积为0.24816、面积收益为1。因此,本申请实施例提供的乘法器的面积小。
表5
从表5中可以看出,标准编码器每编码1bit数据翻转4次、静态功耗为0.44522、静态功耗的收益为1.18、动态功耗的收益为1.09,正相编码器或反相编码器每编码1bit数据翻转3次、静态功耗为0.4084、静态功耗和动态功耗的收益均为1,标准加法器每压缩1bit数据翻转4次、静态功耗为0.57685、静态功耗的收益为1.10、动态功耗的收益为1.80,反相压缩器每压缩1bit数据翻转2次、静态功耗为0.32122、静态功耗和动态功耗的收益均为1。因此,本申请实施例提供的乘法器的功耗小。
本申请实施例提供的乘法器中的编码器通过采用正相编码算子或者反相编码算子进行编码,即该乘法器采用正相编码器或反相编码器进行编码,以及压缩器通过采用反相压缩器进行压缩,其实现方案比较简单,例如能够减小乘法器中MOS晶体管的数量,从而减小乘法器的面积。此外,该乘法器每编码或压缩1bit数据时对应的编码器或压缩器的翻转次数较小,从而该乘法器的功耗小。
最后应说明的是:以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (20)
1.一种乘法器,其特征在于,用于实现M比特位的第一数值与N比特位的第二数值的相乘,M和N是大于1的整数,包括:P组编码器和W层反相压缩器,所述P组编码器中的每组编码器包括N个编码器,W是正整数,P是大于1的整数;
所述每组编码器,用于采用正相编码算子或者反相编码算子编码所述第二数值中的部分比特位、对应于所述每组编码器的组选择信号和符号控制输入信号以得到一个部分积项,所述组选择信号和所述符号控制输入信号是根据所述第一数值中的部分比特位产生的,所述P组编码器编码得到P个部分积项;
所述W层反相压缩器,用于采用反相压缩算子压缩所述P个部分积项,得到两个累加值,所述两个累加值之和为所述第一数值与所述第二数值的乘积。
2.根据权利要求1所述的乘法器,其特征在于,所述N个编码器中每个编码器对应所述第二数值中的第一比特位和第二比特位,所述组选择信号包括第一信号和第二信号;所述每个编码器,具体用于:采用正相编码算子或者反相编码算子编码所述第一比特位、所述第二比特位、所述组选择信号和所述符号控制输入信号得到一个部分积项的一个输出比特位。
3.根据权利要求2所述的乘法器,其特征在于,当一个编码器采用正相编码算子时,该编码器是正相编码器,且具体用于执行如下编码操作:
若所述第一信号和所述第一比特位均为1、或者所述第二信号和所述第二比特位均为1,则该编码器得到的所述输出比特位为所述符号控制输入信号的反相;
若所述第一信号和所述第一比特位中的至少一个为0、而且所述第二信号和所述第二比特位中的至少一个为0,则该编码器得到的所述输出比特位为所述符号控制输入信号。
4.根据权利要求2所述的乘法器,其特征在于,当一个编码器采用反相编码算子时,该编码器是反相编码器,且具体用于执行如下编码操作:
若所述第一信号和所述第一比特位均为1、或者所述第二信号和所述第二比特位均为1,则该编码器得到的所述输出比特位为所述符号控制输入信号;
若所述第一信号和所述第一比特位中的至少一个为0、而且所述第二信号和所述第二比特位中的至少一个为0,则该编码器得到的所述输出比特位为所述符号控制输入信号的反相。
5.根据权利要求1-4任一项所述的乘法器,其特征在于,W为1,所述W层反相压缩器包括:第一层反相压缩器;
所述第一层反相压缩器,用于按照从低数位到高数位顺序依次对所述P个部分积项的排列阵列中每个数位采用所述反相压缩算子进行压缩,直到每个数位对应的剩余比特位少于三个,得到包括两行的第一压缩阵列,每行对应一个累加值;
对每个数位的压缩是针对该数位上的每三个比特位进行的;所述P个部分积项的排列阵列中的每行包括一个部分积项,每列包括所述P个部分积项中对应同一数位的多个比特位。
6.根据权利要求1-4任一项所述的乘法器,其特征在于,W是大于1的整数,所述W层反相压缩器包括:第一层反相压缩器至第W层反相压缩器;
所述第一层反相压缩器,用于按照从低数位到高数位顺序依次对所述P个部分积项的排列阵列中每个数位采用所述反相压缩算子进行压缩,直到每个数位对应的剩余比特位少于三个,得到第一压缩阵列;
所述第i层反相压缩器,用于按照从低数位到高数位顺序依次对第i-1压缩阵列中每个数位采用所述反相压缩算子进行压缩,直到每个数位对应的剩余比特位少于三个,得到第i压缩阵列,i的取值范围依次从2至W;
所述第W压缩阵列包括两行,每行对应一个累加值;
其中,每层反相压缩器对每个数位的压缩是针对该数位上的三个比特位进行的;所述P个部分积项的排列阵列中的每行包括一个部分积项,每列包括所述P个部分积项中对应同一数位的多个比特位。
7.根据权利要求5或6所述的乘法器,其特征在于,对每个数位的三个比特位,每个反相压缩器具体用于进行以下压缩:
若所述三个比特位均为0,则进位输出位为1,当前求和输出位为1;
若所述三个比特位均为1,则进位输出位为0,当前求和输出位为0;
若所述三个比特位中存在一个比特位为1、另外两个比特位为0,则进位输出位为1,当前求和输出位为0;
若所述三个比特位中存在两个比特位为1、另外一个比特位为0,则进位输出位为0,当前求和输出位为1。
8.根据权利要求7所述的乘法器,其特征在于,同一数位对应的编码器采用的编码算子的相位与反相压缩器输出的当前求和输出位或进位输出位的相位有关;
其中,该同一数位对应的编码器是指编码得到该同一数位对应的输出比特位的编码器,该同一数位对应的反相压缩器是指压缩该同一数位的三个比特位的反相压缩器。
9.根据权利要求8所述的乘法器,其特征在于,所述乘法器还包括:
一个或多个反相器,用于对所述W层反相压缩器中的一个或多个反相压缩器输出的当前求和输出位和进位输出位的相位取反、或对输入所述一个或多个反相压缩器的所述三个比特位中至少一个比特位的相位取反。
10.根据权利要求1-9任一项所述的乘法器,其特征在于,所述乘法器还包括:
预编码器,用于接收所述第一数值,并根据所述第一数值中的所述部分比特位产生所述组选择信号和所述符号控制输入信号。
11.根据权利要求1-10任一项所述的乘法器,其特征在于,所述乘法器还包括:
加法器,用于接收所述两个累加值,并对所述两个累加值求和以得到所述乘积。
12.一种算子电路,其特征在于,包括:第一晶体管、第二晶体管、第三晶体管、第四晶体管、第五晶体管、第六晶体管、第七晶体管、第八晶体管、第九晶体管、第十晶体管、第十一晶体管、第十二晶体管、第十三晶体管、第十四晶体管和第十五晶体管;其中,
所述第一晶体管和所述第二晶体管并联耦合在电源端和第一节点之间;
所述第三晶体管和所述第四晶体管并联耦合在所述第一节点和第二节点之间;
所述第五晶体管和所述第七晶体管串联耦合在所述第二节点和接地端之间;
所述第六晶体管和所述第八晶体管串联耦合在所述第二节点和所述接地端之间;
所述第三晶体管和所述第五晶体管的控制端用于接收第一输入;
所述第一晶体管和所述第六晶体管的控制端用于接收第二输入;
所述第四晶体管和所述第七晶体管的控制端用于接收第三输入;
所述第二晶体管和所述第八晶体管的控制端用于接收第四输入;
所述第九晶体管耦合在第五输入的反相和输出端之间,所述第九晶体管的控制端耦合于所述第二节点;
所述第十晶体管耦合在所述第二节点和所述输出端之间,所述第十晶体管的控制端耦合于所述第五输入的反相;
所述第十一晶体管和所述第十三晶体管串联耦合在所述输出端和所述接地端之间;
所述第十一晶体管的控制端耦合于所述第二节点;
所述第十三晶体管的控制端用于接收所述第五输入的反相;
所述第十二晶体管耦合在所述输出端和所述第二节点之间,所述第十二晶体管的控制端用于接收所述第五输入;
所述第十四晶体管和所述第十五晶体管串联耦合在所述电源端和所述接地端之间,所述第十四晶体管和所述第十五晶体管的串联耦合节点耦合于所述第五输入的反相;
所述第十四晶体管和所述第十五晶体管的控制端用于接收所述第五输入。
13.根据权利要求12所述的算子电路,其特征在于,所述第一晶体管、所述第二晶体管、所述第三晶体管、所述第四晶体管、所述第九晶体管、所述第十晶体管和所述第十四晶体管是PMOS晶体管;
所述第五晶体管、所述第六晶体管、所述第七晶体管、所述第八晶体管、所述第十一晶体管、所述第十二晶体管、所述第十三晶体管和所述第十五晶体管是NMOS晶体管。
14.一种算子电路,其特征在于,包括:第一晶体管、第二晶体管、第三晶体管、第四晶体管、第五晶体管、第六晶体管、第七晶体管、第八晶体管、第九晶体管、第十晶体管、第十一晶体管、第十二晶体管、第十三晶体管、第十四晶体管和第十五晶体管;其中,
所述第一晶体管和所述第二晶体管并联耦合在电源端和第一节点之间;
所述第三晶体管和所述第四晶体管并联耦合在所述第一节点和第二节点之间;
所述第五晶体管和所述第七晶体管串联耦合在所述第二节点和接地端之间;
所述第六晶体管和所述第八晶体管串联耦合在所述第二节点和所述接地端之间;
所述第三晶体管和所述第五晶体管的控制端用于接收第一输入;
所述第一晶体管和所述第六晶体管的控制端用于接收第二输入;
所述第四晶体管和所述第七晶体管的控制端用于接收第三输入;
所述第二晶体管和所述第八晶体管的控制端用于接收第四输入;
所述第九晶体管和所述第十晶体管串联耦合在所述电源端和输出端之间,所述第九晶体管的控制端耦合于第五输入的反相,所述第十晶体管的控制端耦合于所述第二节点;
所述第十一晶体管耦合在所述第二节点与所述输出端之间,所述第十一晶体管的控制端耦合于所述第五输入;
所述第十二晶体管耦合在所述输出端和所述第五输入的反相之间,所述第十二晶体管的控制端耦合于所述第二节点;
所述第十三晶体管耦合在所述输出端和所述第二节点之间,所述第十三晶体管的控制端耦合于所述第五输入的反相;
所述第十四晶体管和所述第十五晶体管串联耦合在所述电源端和所述接地端之间,所述第十四晶体管和所述第十五晶体管的串联耦合节点耦合于所述第五输入的反相;
所述第十四晶体管和所述第十五晶体管的控制端用于接收所述第五输入。
15.根据权利要求14所述的算子电路,其特征在于,所述第一晶体管、所述第二晶体管、所述第三晶体管、所述第四晶体管、所述第九晶体管、所述第十晶体管、所述第十一晶体管和所述第十四晶体管是PMOS晶体管;
所述第五晶体管、所述第六晶体管、所述第七晶体管、所述第八晶体管、所述第十二晶体管、所述第十三晶体管和所述第十五晶体管是NMOS晶体管。
16.一种算子电路,其特征在于,包括:第一晶体管、第二晶体管、第三晶体管、第四晶体管、第五晶体管、第六晶体管、第七晶体管、第八晶体管、第九晶体管、第十晶体管、第十一晶体管、第十二晶体管、第十三晶体管、第十四晶体管、第十五晶体管、第十六晶体管、第十七晶体管、第十八晶体管、第十九晶体管、第二十晶体管、第二十一晶体管和第二十二晶体管;其中,
所述第一晶体管和所述第二晶体管并联耦合在电源端和第一节点之间;
所述第三晶体管耦合在所述第一节点和第一输出端之间;
所述第四晶体管耦合在所述第一输出端和第二节点之间;
所述第五晶体管和所述第六晶体管并联耦合在所述第二节点和接地端之间;
所述第七晶体管耦合在所述电源端和第三节点之间;
所述第八晶体管耦合在所述第三节点和所述第一输出端之间;
所述第九晶体管耦合在所述第一输出端和第四节点之间;
所述第十晶体管耦合在所述第四节点和所述接地端之间;
所述第十一晶体管和所述第十二晶体管串联耦合在所述第三节点和第二输出端之间;
所述第十三晶体管和所述第十四晶体管串联耦合在所述第二输出端和所述第四节点之间;
所述第十五晶体管、所述第十六晶体管和所述第十七晶体管并联耦合在所述电源端和第五节点之间;
所述第十八晶体管耦合在所述第五节点与所述第二输出端之间;
所述第十九晶体管耦合在所述第二输出端与第六节点之间;
所述第二十晶体管、所述第二十一晶体管和所述第二十二晶体管并联耦合在所述第六节点与所述接地端之间;
所述第三晶体管、所述第四晶体管、所述第十二晶体管、所述第十三晶体管、所述第十五晶体管和所述第二十晶体管的控制端用于接收第一输入;
所述第一晶体管、所述第五晶体管、所述第七晶体管、所述第十晶体管、所述第十六晶体管和所述第二十一晶体管的控制端用于接收第二输入;
所述第二晶体管、所述第六晶体管、所述第八晶体管、所述第九晶体管、所述第十一晶体管、所述第十四晶体管、所述第十七晶体管和所述第二十二晶体管的控制端用于接收第三输入;
所述第十八晶体管和所述第十九晶体管的控制端耦合于所述第一输出端。
17.根据权利要求16所述的算子电路,其特征在于,所述第一晶体管、所述第二晶体管、所述第三晶体管、所述第七晶体管、所述第八晶体管、所述第十一晶体管、所述第十二晶体管、所述第十五晶体管、所述第十六晶体管、所述第十七晶体管和所述第十八晶体管是PMOS晶体管;
所述第四晶体管、所述第五晶体管、所述第六晶体管、所述第九晶体管、所述第十晶体管、所述第十三晶体管、所述第十四晶体管、所述第十九晶体管、所述第二十晶体管、所述第二十一晶体管和所述第二十二晶体管是NMOS晶体管。
18.一种W层反相压缩器,其特征在于,W是大于1的整数,所述W层反相压缩器包括:第一层反相压缩器至第W层反相压缩器;
所述第一层反相压缩器,用于按照从低数位到高数位顺序依次对P个部分积项的排列阵列中每个数位采用反相压缩算子进行压缩,直到每个数位对应的剩余比特位少于三个,得到第一压缩阵列;
所述第i层反相压缩器,用于按照从低数位到高数位顺序依次对第i-1压缩阵列中每个数位采用所述反相压缩算子进行压缩,直到每个数位对应的剩余比特位少于三个,得到第i压缩阵列,i的取值范围依次从2至W;
所述第W压缩阵列包括两行,每行对应一个累加值;
其中,每层反相压缩器对每个数位的压缩是针对该数位上的三个比特位进行的;所述P个部分积项的排列阵列中的每行包括一个部分积项,每列包括所述P个部分积项中对应同一数位的多个比特位。
19.根据权利要求18所述的W层反相压缩器,其特征在于,对每个数位的三个比特位,每个反相压缩器具体用于进行以下压缩:
若所述三个比特位均为0,则进位输出位为1,当前求和输出位为1;
若所述三个比特位均为1,则进位输出位为0,当前求和输出位为0;
若所述三个比特位中存在一个比特位为1、另外两个比特位为0,则进位输出位为1,当前求和输出位为0;
若所述三个比特位中存在两个比特位为1、另外一个比特位为0,则进位输出位为0,当前求和输出位为1。
20.根据权利要求18或19所述的W层反相压缩器,其特征在于,所述W层反相压缩器还包括:
一个或多个反相器,用于对所述W层反相压缩器中的一个或多个反相压缩器输出的当前求和输出位和进位输出位的相位取反、或对输入所述一个或多个反相压缩器的所述三个比特位中至少一个比特位的相位取反。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111075411.3A CN113946312A (zh) | 2019-11-21 | 2019-11-21 | 一种乘法器及算子电路 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111075411.3A CN113946312A (zh) | 2019-11-21 | 2019-11-21 | 一种乘法器及算子电路 |
CN201980006794.3A CN113227963B (zh) | 2019-11-21 | 2019-11-21 | 一种乘法器及算子电路 |
PCT/CN2019/119993 WO2021097765A1 (zh) | 2019-11-21 | 2019-11-21 | 一种乘法器及算子电路 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980006794.3A Division CN113227963B (zh) | 2019-11-21 | 2019-11-21 | 一种乘法器及算子电路 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113946312A true CN113946312A (zh) | 2022-01-18 |
Family
ID=75980379
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980006794.3A Active CN113227963B (zh) | 2019-11-21 | 2019-11-21 | 一种乘法器及算子电路 |
CN202111075411.3A Pending CN113946312A (zh) | 2019-11-21 | 2019-11-21 | 一种乘法器及算子电路 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980006794.3A Active CN113227963B (zh) | 2019-11-21 | 2019-11-21 | 一种乘法器及算子电路 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11855661B2 (zh) |
EP (1) | EP4030277A4 (zh) |
JP (1) | JP7371255B2 (zh) |
KR (1) | KR102676098B1 (zh) |
CN (2) | CN113227963B (zh) |
BR (1) | BR112022007427A2 (zh) |
WO (1) | WO2021097765A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115917499A (zh) * | 2021-07-30 | 2023-04-04 | 华为技术有限公司 | 一种累加器、乘法器及算子电路 |
WO2023015442A1 (zh) * | 2021-08-10 | 2023-02-16 | 华为技术有限公司 | 一种乘法器 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NL179619C (nl) * | 1974-04-18 | 1987-05-18 | Philips Nv | Digitale signaalverwerkingsinrichting voor het realiseren van een vooraf bepaalde overdrachtskarakteristiek. |
US4153938A (en) * | 1977-08-18 | 1979-05-08 | Monolithic Memories Inc. | High speed combinatorial digital multiplier |
US4730340A (en) * | 1980-10-31 | 1988-03-08 | Harris Corp. | Programmable time invariant coherent spread symbol correlator |
JP3153370B2 (ja) * | 1993-01-14 | 2001-04-09 | 三菱電機株式会社 | 乗算装置 |
US6195392B1 (en) * | 1998-06-30 | 2001-02-27 | U.S. Philips Corporation | Method and arrangement for generating program clock reference values (PCRS) in MPEG bitstreams |
KR20010019352A (ko) * | 1999-08-26 | 2001-03-15 | 윤종용 | 곱셈기의 압축기 |
US6877022B1 (en) * | 2001-02-16 | 2005-04-05 | Texas Instruments Incorporated | Booth encoding circuit for a multiplier of a multiply-accumulate module |
JP4177125B2 (ja) | 2003-01-22 | 2008-11-05 | 三菱電機株式会社 | 演算装置及び演算装置の演算方法 |
US7028068B1 (en) * | 2003-02-04 | 2006-04-11 | Advanced Micro Devices, Inc. | Alternate phase dual compression-tree multiplier |
US8064520B2 (en) * | 2003-09-07 | 2011-11-22 | Microsoft Corporation | Advanced bi-directional predictive coding of interlaced video |
US20110064214A1 (en) * | 2003-09-09 | 2011-03-17 | Ternarylogic Llc | Methods and Apparatus in Alternate Finite Field Based Coders and Decoders |
US8577026B2 (en) * | 2010-12-29 | 2013-11-05 | Ternarylogic Llc | Methods and apparatus in alternate finite field based coders and decoders |
US20140055290A1 (en) * | 2003-09-09 | 2014-02-27 | Peter Lablans | Methods and Apparatus in Alternate Finite Field Based Coders and Decoders |
CN100405288C (zh) * | 2004-05-27 | 2008-07-23 | 扬智科技股份有限公司 | 乘法器的符号延伸方法及结构 |
JP4988627B2 (ja) | 2008-03-05 | 2012-08-01 | ルネサスエレクトロニクス株式会社 | フィルタ演算器及び動き補償装置 |
JP5456766B2 (ja) * | 2008-05-12 | 2014-04-02 | クゥアルコム・インコーポレイテッド | プログラム可能なプロセッサにおける随意選択的なガロア域計算の実行 |
US20150193203A1 (en) | 2014-01-07 | 2015-07-09 | Nvidia Corporation | Efficiency in a fused floating-point multiply-add unit |
US10003342B2 (en) * | 2014-12-02 | 2018-06-19 | Taiwan Semiconductor Manufacturing Company, Ltd. | Compressor circuit and compressor circuit layout |
US10002219B2 (en) | 2015-03-25 | 2018-06-19 | Samsung Electronics Co., Ltd. | Method for placing parallel multiplier |
US9876488B2 (en) * | 2015-11-02 | 2018-01-23 | Mediatek Inc. | Flip-flop circuit with data-driven clock |
CN107977191B (zh) * | 2016-10-21 | 2021-07-27 | 中国科学院微电子研究所 | 一种低功耗并行乘法器 |
CN110058840B (zh) * | 2019-03-27 | 2022-11-25 | 西安理工大学 | 一种基于4-Booth编码的低功耗乘法器 |
-
2019
- 2019-11-21 JP JP2022529732A patent/JP7371255B2/ja active Active
- 2019-11-21 CN CN201980006794.3A patent/CN113227963B/zh active Active
- 2019-11-21 EP EP19953180.7A patent/EP4030277A4/en active Pending
- 2019-11-21 CN CN202111075411.3A patent/CN113946312A/zh active Pending
- 2019-11-21 BR BR112022007427A patent/BR112022007427A2/pt unknown
- 2019-11-21 KR KR1020227015465A patent/KR102676098B1/ko active IP Right Grant
- 2019-11-21 WO PCT/CN2019/119993 patent/WO2021097765A1/zh unknown
-
2022
- 2022-05-21 US US17/750,299 patent/US11855661B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11855661B2 (en) | 2023-12-26 |
JP2023503119A (ja) | 2023-01-26 |
BR112022007427A2 (pt) | 2022-07-12 |
JP7371255B2 (ja) | 2023-10-30 |
WO2021097765A1 (zh) | 2021-05-27 |
CN113227963A (zh) | 2021-08-06 |
EP4030277A4 (en) | 2023-01-11 |
CN113227963B (zh) | 2024-05-17 |
KR102676098B1 (ko) | 2024-06-19 |
KR20220074965A (ko) | 2022-06-03 |
EP4030277A1 (en) | 2022-07-20 |
US20220294468A1 (en) | 2022-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107977191B (zh) | 一种低功耗并行乘法器 | |
US10684825B2 (en) | Compressing like magnitude partial products in multiply accumulation | |
US11855661B2 (en) | Multiplier and operator circuit | |
CN110515587B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN110413254A (zh) | 数据处理器、方法、芯片及电子设备 | |
CN110531954B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
Besli et al. | A novel redundant binary signed-digit (RBSD) Booth's encoding | |
Harikiran et al. | Design and implementation of 16× 16 modified booth multiplier | |
JPH10307706A (ja) | 半及び全加算器を用いたウォレスツリー乗算器 | |
US8417761B2 (en) | Direct decimal number tripling in binary coded adders | |
Kumar et al. | Complex multiplier: implementation using efficient algorithms for signal processing application | |
CN209879493U (zh) | 乘法器 | |
WO2023004783A1 (zh) | 一种累加器、乘法器及算子电路 | |
WO2023015442A1 (zh) | 一种乘法器 | |
Beuchat et al. | Multiplication algorithms for radix-2 RN-codings and two's complement numbers | |
Keote et al. | VLSI design of 64bit× 64bit high performance multiplier with redundant binary encoding | |
CN113767362B (zh) | 一种多模融合乘法器 | |
Nagayama et al. | Numeric function generators using piecewise arithmetic expressions | |
Sandeep et al. | Design of area and power Potent Booth multiplier using multiplexer | |
Kumar et al. | Design of an area-efficient multiplier | |
Tanaka et al. | An efficient diminished-1 modulo 2n+ 1 multiplier using signed-digit number representation | |
PRIYA et al. | Implementation of Redundant Binary High Speed Multipliers with Efficient Partial Product Generator | |
JAYAKANTH et al. | Implementation of Redundant Binary Multipliers with Modified Partial Product Generator | |
Smyk et al. | High-speed binary-to-residue converter design using 2-bit segmentation of the input word | |
SAFIYA et al. | A Modified Partial Product Generator for Redundant Binary Multipliers |
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 |