CN116205244B - 一种数字信号处理结构 - Google Patents
一种数字信号处理结构 Download PDFInfo
- Publication number
- CN116205244B CN116205244B CN202310501917.9A CN202310501917A CN116205244B CN 116205244 B CN116205244 B CN 116205244B CN 202310501917 A CN202310501917 A CN 202310501917A CN 116205244 B CN116205244 B CN 116205244B
- Authority
- CN
- China
- Prior art keywords
- multiplication
- partial product
- data
- bit
- adder
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims abstract description 47
- 238000009825 accumulation Methods 0.000 claims abstract description 24
- 230000001502 supplementing effect Effects 0.000 claims abstract description 6
- 238000007906 compression Methods 0.000 claims description 70
- 230000006835 compression Effects 0.000 claims description 69
- 238000007781 pre-processing Methods 0.000 claims description 18
- 238000004364 calculation method Methods 0.000 claims description 14
- 238000012937 correction Methods 0.000 claims description 10
- 238000000034 method Methods 0.000 claims description 9
- 238000003491 array Methods 0.000 claims description 7
- 230000009467 reduction Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 10
- 230000009471 action Effects 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 101100322581 Caenorhabditis elegans add-1 gene Proteins 0.000 description 2
- 101100322583 Caenorhabditis elegans add-2 gene Proteins 0.000 description 2
- 102100029469 WD repeat and HMG-box DNA-binding protein 1 Human genes 0.000 description 2
- 101710097421 WD repeat and HMG-box DNA-binding protein 1 Proteins 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 235000019800 disodium phosphate Nutrition 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000014616 translation Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06G—ANALOGUE COMPUTERS
- G06G7/00—Devices in which the computing operation is performed by varying electric or magnetic quantities
- G06G7/12—Arrangements for performing computing operations, e.g. operational amplifiers
- G06G7/16—Arrangements for performing computing operations, e.g. operational amplifiers for multiplication or division
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06G—ANALOGUE COMPUTERS
- G06G7/00—Devices in which the computing operation is performed by varying electric or magnetic quantities
- G06G7/12—Arrangements for performing computing operations, e.g. operational amplifiers
- G06G7/14—Arrangements for performing computing operations, e.g. operational amplifiers for addition or subtraction
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Power Engineering (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供一种数字信号处理结构包括:与所述输入寄存单元相连接的乘法运算单元,用于进行普通乘法运算和双倍低位宽乘法运算;与所述乘法运算单元相连接的加法器,用于对所述乘法运算单元的运算结果进行相加处理;与所述加法器相连接的加法输出寄存器,用于寄存相加处理得到的运算结果;与所述加法输出寄存器相连接的数据截取单元,用于在双倍乘加或乘累加模式下对四组乘加的结果进行截取,补充相应的符号位并输出;其中,所述乘法运算单元包括四组18位宽的乘法器。该数字信号处理结构在不增加乘法器数目的情况下可支持双倍低位宽操作数乘加运算及乘累加运算,运行效率更高,优化了资源利用率。
Description
技术领域
本发明属于数字集成电路技术领域,具体涉及一种可支持多组低位宽操作数乘法、乘加及乘累加运算的数字信号处理(DSP)结构。
背景技术
人工智能高速发展,在自然语言处理、目标检测、图像分类和语音识别等诸多领域中,深度学***台带来了巨大压力。深度学***台的压力对人工智能的发展意义重大。研究表明,在部分场景中,采用低精度如4bit、8bit网络模型,可以在满足准确率要求的情况下,达到显著提高加速器性能、减少内存占用的目标。目前主流的加速计算平台包括CPU、GPU、ASIC和FPGA等。其中FPGA具有动态可重构特性,能够对硬件逻辑资源进行编程,适应不同的深度学***台。FPGA对于加速计算的并行度通常与嵌入式DSP的数目相关。业内主要的商用FPGA中的嵌入式DSP(DigitalSignal Processing,简称DSP,即数字信号处理)模块通常由固定的高位宽乘法器构成,对于较低位宽的乘法相关运算如乘法、乘加和乘累加运算,乘法器位宽利用率低,使DSP模块实现低位宽数据运算的效率并不高。举例来说,现有的DSP模块采用常规的乘法器只能实现一组4bit或8bit乘法运算。现有的DSP模块在实际应用中存在缺陷,不利于当前数字集成电路技术的发展。
因此,亟需研究一种可支持多组低位宽操作数乘法、乘加或乘累加运算的数字信号处理(DSP)结构,以进一步优化计算平台支持低位宽数据卷积运算的性能,以此推动数字集成电路技术的深层次发展。
发明内容
本发明是为解决上述现有技术的全部或部分问题,本发明提出了一种数字信号处理结构,利用大位宽乘法器并行计算低位宽乘法,设计了DSP中的新型的定制的乘法器,使DSP模块可以在不增加乘法器数目的情况下,在一个周期内实现双倍数目的乘加及乘累加运算,从而大幅度提升计算平台(例如FPGA等)支持低位宽数据卷积运算性能。
本发明提供的一种数字信号处理结构,包括:输入寄存单元,用于对输入的待运算数据进行预处理以选择是否寄存;与所述输入寄存单元相连接的乘法运算单元,用于进行普通乘法运算和双倍低位宽乘法运算;与所述乘法运算单元相连接的加法器,用于对所述乘法运算单元的运算结果进行相加处理;与所述加法器相连接的加法输出寄存器,用于寄存相加处理得到的运算结果;与所述加法输出寄存器相连接的数据截取单元,用于在双倍乘加或双倍乘累加模式下对四组乘加的结果进行截取,补充相应的符号位并输出;其中,所述乘法运算单元包括四组18位宽的乘法器。
通过所述乘法运算单元可以在不增加乘法器数目的情况下实现双倍8bit及4bit乘法运算,并且数字信号处理结构中增加所述数据截取单元,可获取双倍8bit及4bit乘法运算结果,并进行符号位扩展。
所述乘法器包括:数据预处理模块,用于获取不同的被乘数信息,将被乘数(Multiplicand)拆分为两组数据(Multiplicand1和Multiplicand2)输出;与所述数据预处理模块相连接的部分积生成模块,用于对乘数(Multiplier)进行二阶布斯编码,并与所述数据预处理模块输出的两组数据作用产生部分积;与所述部分积生成模块相连接的部分积修正模块,用于在双倍8bit乘法模式下对所述部分积进行修正处理,使其满足两组8bit乘法运算的部分积阵列;与所述部分积生成模块和所述部分积修正模块分别相连接的数据选择器,用于对不同乘法模式下的部分积阵列进行选择。
所述乘法器还包括与所述数据选择器相连接的压缩树约简单元,用于对部分积阵列进行压缩处理,得到最终的运算结果。
所述压缩树约简单元包括分别采用第一公式、第二公式和第三公式进行压缩运算的压缩器,相应记为第一压缩器、第二压缩器和第三压缩器;所述第一公式、所述第二公式、所述第三公式是不同的计算公式。
所述压缩处理是四级压缩;所述四级压缩的方法包括:第一级压缩采用所述第一压缩器压缩运算;第二级压缩采用所述第一压缩器和所述第二压缩器共同压缩运算;第三级压缩采用所述第一压缩器、所述第二压缩器和所述第三压缩器共同压缩运算;第四级压缩调用加法器IP核完成最终求和。
将所述两组数据分别记为第一被乘数和第二被乘数,所述数据预处理模块包括:第一与门和数据拓展部分,用于输出第一被乘数;第二与门和数据拓展部分,用于输出第二被乘数;第三与门和数据拓展部分,用于输出第一被乘数和第二被乘数。
所述部分积生成模块包括:部分积产生电路,所述部分积产生电路用于对乘数进行编码,产生中间值后与所述第一被乘数和所述第二被乘数作用产生部分积;部分积符号位生成电路,所述部分积符号位生成电路用于对各部分积的最后一位进行补充。
所述部分积修正模块设置有多路选择器,用于对第一组8bit乘法运算中乘数最高位产生的部分积进行修正处理。
所述数字信号处理结构还包括:与所述数据截取单元相连接的加法/累加器,用于进行二级加法运算或者累加运算;与所述加法/累加器相连接的链式加法器,用于进行链式加法运算;以及,与所述链式加法器相连接的输出寄存器,用于寄存最终的运算结果。
所述加法器有两个;所述加法器和所述链式加法器均调用加法器IP核实现。
与现有技术相比,本发明的主要有益效果:
本发明提供的一种数字信号处理结构,通过乘法运算单元中包含可以并行计算双倍低位宽乘法运算的所述乘法器,能够使得计算平台中的DSP模块在不增加乘法器数量的情况下即可支持双倍低位宽操作数乘加运算及乘累加运算,避免了采用高位宽乘法器实现低位宽乘法相关运算,如乘法、乘加、乘累加运算所造成的资源浪费,同时在进行双倍低位宽乘法相关运算时,有效地减少了部分积压缩级数,进一步提升了计算平台的DSP模块在进行低位宽乘法相关运算的性能,计算效率高且利于节约计算资源。
附图说明
图1为本发明实施例的数字信号处理结构示意图。
图2为本发明实施例中定制的乘法器的结构示意图。
图3(a)为本发明实施例中双倍乘法运算时数据输入格式示意图。
图3(b)为本发明实施例中双倍乘法运算时数据输入格式示意图。
图4(a)为本发明实施例中数据预处理模块的数据处理逻辑图。
图4(b)为本发明实施例中数据预处理模块的数据处理逻辑图。
图5为本发明实施例中部分积生成模块的数据处理逻辑示意图。
图6为本发明实施例中部分积阵列排列情况示意图。
图7为本发明实施例中部分积复用情况示意图。
图8为本发明实施例中部分积修正处理逻辑示意图。
图9为本发明实施例中符号位预先求和处理后新的部分积阵列示意图。
图10为本发明实施例中压缩树约简单元的结构示意图。
图11为本发明实施例中压缩树约简单元对于双倍4bit乘法运算的数据处理逻辑示意图。
图12为本发明实施例中压缩树约简单元对于双倍8bit乘法运算的数据处理逻辑示意图。
图13为本发明实施例中压缩树约简单元对于普通乘法运算的数据处理逻辑示意图。
图14为本发明实施例中数据截取单元的结构示意图。
附图标记:S101-输入寄存单元;S102-乘法运算单元;S102a-乘法器;S102b-乘法器;S102c-乘法器;S102d-乘法器;S103a-第一加法器;S103b-第二加法器;S104-加法输出寄存器;S105-数据截取单元;S106-加法/累加器;S107-链式加法器;S108-输出寄存器;S201-数据预处理模块;S202-部分积生成模块;S203-部分积修正模块;S204-数据选择器;S205-压缩树约简单元;S500a-第一压缩器;S500b-第二压缩器;S500c-第三压缩器。
实施方式
下面将对本发明具体实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。
本发明实施例中示例的数字信号处理结构,为了便于结合实际应用方便理解,以FPGA中的嵌入式DSP模块为例进行介绍,具体示例可支持多组低位宽操作数乘法、乘加或乘累加运算的DSP模块的结构,但对具体应用场景并不限定。如图1所示,在本实施例中,数字信号处理结构包括:输入寄存单元S101,用于对输入的待运算数据进行预处理以选择是否寄存;与输入寄存单元S101相连接的乘法运算单元S102,用于进行普通乘法运算和双倍低位宽乘法运算;与乘法运算单元S102相连接的第一加法器S103a和第二加法器S103b用于分别对乘法运算单元S102的运算结果进行相加处理;与第一加法器S103a和第二加法器S103b相连接的加法输出寄存器S104,用于寄存相加处理得到的运算结果;与加法输出寄存器S104相连接的数据截取单元S105,用于在双倍乘加和双倍乘累加模式下对四组乘加的结果进行截取,拓展相应的符号位并输出;加法/累加器S106,用于进行二级加法运算或者累加运算;与加法/累加器S106相连接的链式加法器S107,用于进行链式加法运算;以及,与链式加法器S107相连接的输出寄存器S108,用于寄存最终的运算结果。图1示例的情况中数字信号处理结构所包括的组成部分是为了便于说明,这里不限定数字信号处理结构的具体构成,可以结合实际应用相应设计更多或更少的组成部分。
示例的乘法运算单元S102包括四组18位宽的乘法器S102a、S102b、S102c和S102d。图1示例的情况中第一加法器S103a和乘法器S102a、乘法器S102b分别连接,第二加法器S103b和乘法器S102c、乘法器S102d分别连接。示例的情况中第一加法器S103a和第二加法器S103b采用通用加法器以实现加法操作,两个加法器结构相同。第一加法器S103a和第二加法器S103b用来对乘法器的结果进行相加操作,从而使得DSP模块可以支持二乘加运算。示例的情况中乘法运算单元S102包含的四组乘法器是结构相同的乘法器。结合参考图1和图2,示例的一组18位宽的乘法器包括数据预处理模块S201,用于获取不同的被乘数信息(图2示例的情况中Mod是模式选择信号,Signa/b表示Signa和Signb,分别是被乘数和乘数的符号控制信号),将被乘数拆分为两组数据Multiplicand1和Multiplicand2;部分积生成模块S202,示例的情况中用于对乘数进行二阶布斯(Booth)编码,与数据预处理模块S201的输出数据作用产生八个20位宽及两个18位宽的部分积;部分积修正模块S203,用于在双倍8bit乘法模式下对部分积进行修正处理,使部分积阵列满足两组8bit乘法运算的部分积阵列;数据选择器S204,用于对本实施例中的乘法器不同模式下的部分积阵列进行选择;压缩树约简单元S205,用于对部分积阵列进行压缩处理,得到最终的运算结果(RESULT)。
在本实施例中,在进行普通乘法运算时,数据正常输入;在进行双倍乘法运算时,每组乘法器的输入数据按照图3(a)和图3(b)所示方式进行拼接处理。图3(a)中a、c代表4bit被乘数,b、d代表符号位拓展至6bit的乘数;图3(b)中A、C代表8bit被乘数,B、D代表8bit乘数。
一些常规(传统)的DSP模块也有乘法运算单元,但都是由普通的乘法器构成,普通的乘法器不同于本实施例中的乘法器,普通的乘法器只能实现一组4bit或8bit乘法运算,且无法进行双倍低位宽乘法运算。本实施例中乘法运算单元S102包括了四组定制的乘法器,结合示例的数据的输入格式,定制的乘法器对于被乘数的采取不同的编码分组所产生不同类型(如18bit、8bit、4bit)的部分积,再进行不同的压缩处理,可以支持两组4bit或8bit乘法运算。
以下对本实施例中的乘法器进行展开示例。示例的乘法器可以在一个周期内将普通的乘法器对于8bit及4bit乘法运算的运算数目由普通的乘法器的一组提升到两组。本实施例中将定制的乘法器加入到DSP模块中,并且DSP模块中加入数据截取单元S105,本实施例的DSP模块支持双倍的8bit及4bit乘加及乘累加运算。
结合参考图4(a)和图4(b),示例的数据预处理模块S201由第一与门和数据拓展部分Data Expansion、第二与门和数据拓展部分Data Expansion、第三与门和数据拓展部分Data Expansion构成。图4(a)示意了第三与门和数据拓展部分Data Expansion,用于输出第一被乘数和第二被乘数;图4(b)示意了第一与门和数据拓展部分Data Expansion,用于输出第一被乘数;以及,第二与门和数据拓展部分Data Expansion,用于输出第二被乘数。示例的乘法器能够计算18bit数据有符号数和无符号数的任意组合,实际参与运算的数据为19bit×18bit。
示例的乘法器支持两组4bit及8bit乘法运算的一个具体示例中,由数据预处理模块S201对被乘数进行预处理,将被乘数Multiplicand拆分为两组数据,两组数据分别是Multiplicand1与Multiplicand2(即第一被乘数和第二被乘数),Signa为被乘数的符号控制信号。具体的实现过程可以如下:当乘法器进行一组18bit乘法运算时,按照图4(a)示例的电路由被乘数最高位Multiplicand[17]和Signa相与,增加至被乘数最高位之前就是Multiplicand1和Multiplicand2的值。在双倍乘法运算时,乘法器输入端的一组乘数与被乘数中,含有两组8bit或4bit的数据(分别是8bit或4bit的乘数和被乘数)信息,示例的操作可以将输入被乘数中的两个8bit或4bit被乘数信息获取出来。
结合参考图3(a),当乘法器进行两组4bit乘法运算时,记X=4,则X-1=3,2X-1=7,实现a×b和c×d两组4bit乘法运算。被乘数对应位宽的值Multiplicand[3]和Multiplicand[7]分别代表被乘数c和被乘数a的最高位。按照图4(b)电路将Signa和Multiplicand[3]、Multiplicand[7]分别相与即可得到被乘数c和被乘数a的符号位,再将符号位扩展至19位宽,则得到被乘数Multiplicand1[18:0]和Multiplicand2[18:0],对应4bit被乘数c和被乘数a经过符号位拓展之后的值。
结合参考图3(b)当乘法器进行两组8bit乘法运算时,记X=8,则X-1=7,2X-1=15,实现A×B和C×D两组8bit乘法运算。被乘数对应位宽的值Multiplicand[7]和Multiplicand[15]分别代表被乘数C和被乘数A的最高位。按照图4(b)示例的电路将Signa和Multiplicand[7]、Multiplicand[15]分别相与即可得到被乘数C和被乘数A的符号位,再将符号位扩展至19位宽,得到Multiplicand1[18:0]和Multiplicand2[18:0],对应8bit被乘数C和被乘数A经过符号位拓展之后的值。
图5示例了部分积生成模块S202的电路,其中Xj、Xj-1表示被乘数,Y2i+1、Y2i、Y2i-1表示乘数,NEG、X1、X2P、ZP表示控制信号,PPi表示部分积,将控制信号与被乘数作用可以得到部分积,ADD表示相加信号,该信号为1时表示编码值为负。示例的情况中部分积生成模块S202对Multiplier[9:0]进行编码,编码分组为与Multiplicand1作用产生部分积r0-r4;对Multiplier[17:9]进行编码,编码分组为(其中/>表示乘数为有符号数时的最高位编码分组,此时乘数的符号位控制信号Signb为1,/>表示乘数为无符号数时的最高位编码分组,此时乘数的符号位控制信号Signb为0),与Multiplicand2作用产生部分积r5-r9。由于乘数Multiplier在进行二阶布斯(Booth)编码时,最高数据有效位Multiplier[17]只产生{000}、{001}和{111}三种组合,因此示例的情况中取r9低18位作为部分积有效值,部分积生成阵列参考图6所示。三种乘法模式复用部分积生成电路,不同乘法模式下的部分积阵列具体对应情况参考图7所示。本实施例中部分积在阵列里是行分布的,一行代表一个部分积,其中每一个点代表该部分积的每一位。
整体部分积阵列由Multiplier[17:0]编码后与Multiplicand1[18:0]和Multiplicand2[18:0]作用得到,在进行双倍18bit乘法运算时,Multiplicand1[18:0]和Multiplicand2[18:0]的值相等,均代表被乘数的值,整体阵列即为一组18bit乘法运算的部分积阵列。
图7中部分P由Multiplier[5:0]和Multiplier[15:9]编码后与Multiplicand1[18:0]和Multiplicand2[18:0]作用得到,在进行双倍4bit乘法运算时,Multiplier[5:0]和Multiplier[15:10]是位宽扩展至6bit的4bit乘数d和乘数b的值,且Multiplier[9:6]均为0,满足乘数b进行编码时最低位之前补充1比特“0”的编码条件,部分P即为两组4bit乘法运算a×b和c×d的部分积阵列。
图7中部分Q由Multiplier[9:0]和Multiplier[17:9]编码后与Multiplicand1[18:0]和Multiplicand2[18:0]作用得到,在进行双倍8bit乘法运算时,Multiplier[7:0]和Multiplier[17:10]为8bit乘数D和乘数B的值,Multiplier[9:8]均为0,满足乘数B进行编码时最低位之前补充1比特0的编码条件。部分积阵列中一般以r0代表部分积阵列的第一行,r1代表部分积阵列的第二行,依次类推。有些实施例中若乘数D为有符号数并且是负数时,Multiplier[9:8]应该均为1,不符合8bit乘数D的最高位的正确编码结果,则需要对r4(乘数D最高位产生的部分积)进行修正处理,部分积修正模块的多路选择器的工作情况如图8所示,当乘数D为无符号数且最高位为1时,sel1选择Mutiplicand1[19:0]作为r4的值,其他情况下选择20’b0作为r4的值。经过处理之后的阵列即为两组8bit乘法运算A×B和C×D的部分积阵列。
本实施例中采用符号位预先求和的方法,对符号位进行预先求和处理。示例采用公式(F1)对所有的符号位进行累加求和,最终化简得到公式(F2)。
公式(F1):
公式(F2):
示例的公式(F2)是对每一行的部分积进行取反,再与后边的常量数据相加。在后续计算中不需要再进行符号位拓展,取反各行部分积的最高位并加入新行即可,增加的一行为r10={110101010101010110}。新的部分积阵列如图9所示。上述示例的公式是一种符号位优化处理算法,有利于减少压缩量。
一些实施例中乘法器还包括与数据选择器S204相连接的压缩树约简单元S205,如图10至图13所示,压缩树约简单元S205包括分别按三种不同计算公式进行压缩运算的三个压缩器,相应分别记为第一压缩器S500a、第二压缩器S500b和第三压缩器S500c。附图中第一压缩器S500a是3-2压缩器;第二压缩器S500b是4-2压缩器;第三压缩器S500c是5-2压缩器。3-2压缩器是指将3个输入相加得到1个和与1个进位。4-2压缩器是指将4个输入及1个进位输入相加得到1个和与2个进位。5-2压缩器是指将5个输入及2个进位输入相加得到1个和与3个进位。
示例的情况中压缩树约简单元S205对部分积阵列进行压缩处理时,采用S501、S502、S503和S504四级压缩。其中,第一级压缩S501均采用第一压缩器S500a的方式进行压缩、第二级压缩S502采用第一压缩器S500a和第二压缩器S500b相结合的方式进行压缩、第三级压缩S503采用第一压缩器S500a、第二压缩器S500b和第三压缩器S500c相组合的方式进行压缩。示例的第四级压缩S504调用美国Synopsys公司提供的加法器IP核实现最终求和。目前Synopsys公司的EDA工具为用户提供了多种多样的IP核,用户调用加法器IP核更方便。
示例的三种不同计算公式是指第一压缩器S500a采用的第一公式(F3)、第二压缩器S500b采用的第二公式(F4)和第三压缩器S500c采用的第三公式(F5)。公式中的参数可结合参考图10至图13所示,相应理解。
第一公式(F3):
X11+X12+X13=sum1+2×carry1;其中,X11、X12、X13为第一压缩器S500a接收的数据,为部分积阵列中的比特位,sum1为第一压缩器S500a计算得到的和,carry1为第一压缩器S500a计算得到的进位;X11、X12、X13、sum1的权重相等,carry1的权重较X11、X12、X13、sum1的权重高一位;
第二公式(F4):
cin+X21+X22+X23+X24=sum2+2×(cout+carry2);其中cin、X21、X22、X23、X24为第二压缩器S500b接收的数据,cin为进位数,X21、X22、X23、X24为部分积阵列中的比特位,sum2为第二压缩器S500b计算得到的和,cout和carry2为第二压缩器计算得到的进位;cin、X21、X22、X23、X24的权重相等,cout和carry2的权重均较cin、X21、X22、X23、X24的权重高一位;
第三公式(F5):
c1_in+c2_in+X31+X32+X33+X34+X35=sum3+2×(c1_out+c2_out+carry3);其中c1_in、c2_in、X31、X32、X33、X34、X35为第三压缩器S500c接收的数据,c1_in、c2_in为进位数,X31、X32、X33、X34、X35为部分积阵列中的比特位,sum3为第三压缩器S500c计算得到的和,c1_out、c2_out、carry3为第三压缩器S500c计算得到的进位;c1_in、c2_in、X31、X32、X33、X34、X35和sum3的权重相等,c1_out、c2_out、carry3的权重均较c1_in、c2_in、X31、X32、X33、X34、X35和sum3的权重高一位。
当乘法器处于双倍4bit乘法运算模式时,如图11所示,S501中部分U为两组4bit运算c×d和a×b的部分积阵列,经过第一级压缩S501后,将两组求和与进位项拼接至第四级压缩S504的数据高9位、低9位,最终得到两组4bit乘法运算结果;当乘法器处于双倍8bit乘法运算模式时,如图12所示,S501中部分V为两组8bit运算C×D和A×B的部分积阵列,经过第一级压缩S501和第二级压缩S502后,将两组求和与进位项拼接至第四级压缩S504的数据高17位、低17位,最终得到两组8bit乘法运算结果;当乘法器处于普通乘法运算模式时,如图13所示,S501中全部黑点形成一组18bit运算A×B的部分积阵列。经过第一级压缩S501、第二级压缩S502、第三级压缩S503和第四压缩级S504后,得到一组18bit乘法运算结果。
结合参考图11和图13,部分积阵列中的数字“0”作为压缩器的输入数据补充。最终本实施例的乘法器输出结果可为一组普通乘法运算结果或两组低位宽乘法运算结果。
第一加法器S103a和第二加法器S103b用来对乘法器的结果进行相加操作,DSP模块可以支持二乘加运算。对于DSP模块双倍4bit的八组,或双倍8bit乘法的八组运算结果,每两组运算结果分别由18bit数据0或2bit数据0间隔开作为保护位,低位加法进位结果不会对高位产生影响,无需处理直接相加即可。在本实施例中第一加法器S103a、第二加法器S103b、加法/累加器S106和链式加法器S107均是调用Synopsys公司提供的加法器IP核实现的加法器。
一些实施例中,加法输出寄存器S104用于对来自两组加法运算的结果进行寄存,从而能够提高DSP模块实现的频率。
如图14所示,数据截取单元S105包括八个二选一多路选择器和两个与门,八个多路选择器以四个为一组分别记为多路选择器组G和多路选择器组H。对于DSP模块的双倍4位乘加模式,截取ADD1_A_out[8:0]和ADD1_B_out[36:27]分别为4位数据二乘加运算结果c1×d1+c2×d2和a1×b1+a2×b2的值,分别命名为double4_1和double4_2;截取ADD1_B_out[8:0]和ADD1_B_out[36:27]分别为4位数据二乘加运算结果c3×d3+c4×d4和a3×b3+a4×b4的值,分别命名为double4_3和double4_4。对于DSP模块双倍8位乘加模式,截取ADD1_A_out[16:0]和ADD1_B_out[36:19]分别为8位数据二乘加运算结果C1×D1+C2×D2和A1×B1+A2×B2的值,分别命名为double8_1和double8_2;截取ADD1_B_out[16:0]和ADD1_B_out[36:19]分别为8位数据二乘加运算结果C3×D3+C4×D4和A3×B3+A4×B4的值,分别命名为double8_3和double8_4。由多路选择器组G选择出DSP在双倍运算模式下的数据double_1、double_2、double_3和double_4,其中double_1和double_3不包含符号位,需要与数据符号控制信号sign进行与操作确定符号位,再进行符号位拓展,数据符号控制信号sign是由被乘数的符号控制信号Signa与乘数的符号控制信号Signb经过或操作而得到的;double_2和double_4包含符号位,可直接进行符号位拓展。四组数据经过符号位拓展后由多路选择器组H进行选择,输出ADD_1、ADD_2、ADD_3和ADD_4。对于DSP模块的普通乘加模式,多路选择器组H选择ADD1_A_out与ADD1_B_out作为ADD_1和ADD_3的值输入给加法/累加器S106,并将ADD_2和ADD_4的值均选择为72’b0。
图1示例的情况中,加法/累加器S106用来实现二级加法或者进行累加操作,示例的DSP模块可以支持普通乘加、双倍低位宽乘加、普通乘累加和双倍低位宽乘累加运算。示例的链式加法器S107支持DSP模块之间的链式加法操作。输出寄存器S108是对DSP模块的输出结果进行最后寄存,有利于DSP模块的性能进一步提高。
下表1示例性说明了本实施例的DSP模块与主流的常规DSP模块进行4bit及8bit乘法相关运算的性能提升对比。在FPGA芯片中一般由两个DSP模块之间由级联线互连,组成一整个DSP块,将DSP块以垂直方向堆叠构成DSP列。表中的DSP均表示DSP块,每个DSP块中有2个相同的DSP模块。本实施例中的DSP块可以实现常规DSP块双倍的4位乘法、乘加、乘累加运算,以及双倍的8位乘加、乘累加运算。即使DSP输出端口的位宽限制,也能增强对一组8位乘法运算的支持,共实现9组8位乘法运算。在DSP输出端口位宽满足的情况下,也可以支持双倍的8位乘法运算功能。
表1.运算性能对比
4bit乘法 | 8bit乘法 | 4bit乘加 | 8bit乘加 | 4bit乘累加 | 8bit乘累加 | |
常规的一整个DSP块 | 8组 | 8组 | 8组 | 8组 | 8组 | 8组 |
本实施例的一整个DSP块 | 16组 | 9组 | 16组 | 16组 | 16组 | 16组 |
有些实施例中,数字信号处理的过程如下:根据DSP模块的模式可以分为独立乘法、双乘加、四乘加、乘累加、双倍低位宽乘法、双倍低位宽乘加、双倍低位宽乘累加模式,选择不同的模式后由软件进行电路配置。
独立乘法模式下,将示例的四组乘法器都配置成普通乘法功能。首先输入数据经过输入寄存单元S101进行处理,处理结果送入乘法运算单元S102,得到乘法运算结果,最后将结果直接输出或者寄存输出。DSP模块可以支持两组18bit乘法,三组12bit乘法或者四组9bit乘法。
双乘加模式下,将四组乘法器都配置成普通乘法功能。首先输入数据经过输入寄存单元S101进行处理,处理结果送入乘法运算单元S102,将乘法器S102a与乘法器S102b的运算结果送入第一加法器S103a得到一组结果,将乘法器S102c与乘法器S102d的运算结果送入第二加法器S103b得到一组结果。最后将结果直接输出或者寄存输出。
四乘加模式下,将四组乘法器都配置成普通乘法功能。将第一加法器S103a和第二加法器S103b的结果经过加法输出寄存器S104选择是否寄存,再送给加法/累加器S106进行加法运算,计算的结果可以选择是否继续进行链式加法操作,最后将结果直接输出或者寄存输出。
乘法累加模式下,将四组乘法器都配置成普通乘法功能,实现单个乘法器乘法累加、两个乘法器乘法累加、三个乘法器乘法累加或四个乘法器乘法累加。由第一加法器S103a和第二加法器S103b分别对乘法输出数据进行加法处理,得到两个两组乘加的和,再由加法/累加器S106与上一个周期的输出数据进行加法运算,得到18bit乘法累加的值。加法/累加器S106的结果也可以选择是否继续进行链式加法操作,最后将结果直接输出或者寄存输出。
以上也是常规DSP模块基本功能模式,在本实施例中对于基本功能模式,操作数正常输入即可,且将示例的四组乘法器均配置为普通乘法功能。
双倍乘法模式下,示例的四组乘法器均配置成双倍乘法功能。首先输入数据经过输入寄存单元S101进行处理,处理结果送入乘法运算单元S102,后面将对应的运算结果直接输出或者寄存输出。DSP模块可以支持八组4bit乘法,四组8bit乘法。
双倍低位宽乘加模式下,示例的四组乘法器均配置为双倍乘法功能。八组数据A1×B1、C1×D1、A2×B2、C2×D2、A3×B3、C3×D3、A4×B4、C4×D4均按照图3(a)或图3(b)中的形式拼接至DSP模块输入端口。经过乘法运算单元S102计算后得到八组乘法结果,进入第一加法器S103a和第二加法器S103b进行加法计算,得到的两个输出中包含四组乘加的值,由数据截取单元S105将这两个输出拆分为四组乘加的值,由加法/累加器S106进行加法运算,运算结果直接输出或寄存输出。DSP模块可以支持八组4bit乘加或八组8bit乘加。
双倍低位宽乘累加模式下,示例的四组乘法器均配置为双倍乘法功能。八组数据A1×B1、C1×D1、A2×B2、C2×D2、A3×B3、C3×D3、A4×B4、C4×D4均按照图3(a)或图3(b)中的形式拼接至DSP模块输入端口。经过乘法运算单元S102计算后得到八组乘法结果,进入第一加法器S103a和第二加法器S103b进行加法计算,得到的两个输出中包含四组乘加的值,由数据截取单元S105将这两个输出拆分为四组乘加的值,由加法/累加器S106与上一个周期的输出数据进行加法运算,运算结果直接输出或寄存输出。DSP模块可以支持八组4bit乘累加或八组8bit乘累加。
可知,本实施例中提供的数字信号处理结构包括可以并行计算双倍低位宽乘法运算的乘法器,使得DSP模块在不增加乘法器数目的情况下即可支持双倍低位宽操作数乘加运算及乘累加运算,避免了采用高位宽乘法器实现低位宽乘法相关运算,如乘法、乘加、乘累加运算所造成的资源浪费,同时在进行双倍低位宽乘法相关运算时,减少了压缩级数,提升了DSP模块在进行低位宽乘法相关运算的性能。对于8bit及4bit操作数乘加、乘累加运算,本实施例给出的DSP模块可以支持8组有符号数和无符号数的任意组合,DSP模块一拍最多可以支持输出8组操作数运算结果,二拍最多可以支持输出16组操作数运算的结果,从而达到资源复用的目的,计算效率可以达到常规DSP模块的两倍。
本发明为了便于叙述清楚而采用的一些常用的英文名词或字母只是用于示例性指代而非限定性解释或特定用法,不应以其可能的中文翻译或具体字母来限定本发明的保护范围。
Claims (6)
1.一种数字信号处理结构,其特征在于:包括:
输入寄存单元,用于对输入的待运算数据进行预处理以选择是否寄存;
与所述输入寄存单元相连接的乘法运算单元,用于进行普通乘法运算和双倍低位宽乘法运算;
与所述乘法运算单元相连接的加法器,用于对所述乘法运算单元的运算结果进行相加处理;
与所述加法器相连接的加法输出寄存器,用于寄存相加处理得到的运算结果;
与所述加法输出寄存器相连接的数据截取单元,包括八个二选一多路选择器和两个与门,用于在双倍乘加或双倍乘累加模式下对四组乘加的结果进行不同的截取,补充相应的符号位并输出;
其中,所述乘法运算单元包括四组18位宽的乘法器;
所述乘法器包括:数据预处理模块,用于获取不同的被乘数信息,将被乘数拆分为两组数据输出;与所述数据预处理模块相连接的部分积生成模块,用于对乘数进行二阶布斯编码,并与所述数据预处理模块输出的两组数据作用产生部分积;与所述部分积生成模块相连接的部分积修正模块,用于在双倍8bit乘法模式下对所述部分积进行修正处理,使其满足两组8bit乘法运算的部分积阵列;与所述部分积生成模块和所述部分积修正模块分别相连接的数据选择器,用于对不同乘法模式下的部分积阵列进行选择;与所述数据选择器相连接的压缩树约简单元,用于对部分积阵列进行压缩处理,得到最终的运算结果;
将所述两组数据分别记为第一被乘数和第二被乘数,所述数据预处理模块包括:第一与门和数据拓展部分,用于输出第一被乘数;第二与门和数据拓展部分,用于输出第二被乘数;第三与门和数据拓展部分,用于输出第一被乘数和第二被乘数;
所述部分积生成模块包括:部分积产生电路,所述部分积产生电路用于对乘数进行编码,产生中间值后与所述第一被乘数和所述第二被乘数作用产生部分积;
部分积符号位生成电路,所述部分积符号位生成电路用于对各部分积的最后一位进行补充;
所述压缩处理是四级压缩,包括第一级压缩、第二级压缩、第三级压缩、第四级压缩;当所述乘法器处于双倍4bit乘法运算模式时,所述第一级压缩中包含两组4bit运算的部分积阵列,经过第一级压缩后,将两组求和与进位项拼接至第四级压缩的数据高9位、低9位,最终得到两组4bit乘法运算结果;当所述乘法器处于双倍8bit乘法运算模式时,所述第一级压缩中包含两组8bit运算的部分积阵列,经过所述第一级压缩和所述第二级压缩后,将两组求和与进位项拼接至所述第四级压缩的数据高17位、低17位,最终得到两组8bit乘法运算结果;当所述乘法器处于普通乘法运算模式时,所述第一级压缩中为一组18bit运算的部分积阵列,经过所述第一级压缩、所述第二级压缩、所述第三级压缩和所述第四级压缩后,得到一组18bit乘法运算结果。
2.根据权利要求1所述的数字信号处理结构,其特征在于:所述压缩树约简单元包括分别采用第一公式、第二公式和第三公式进行压缩运算的压缩器,相应记为第一压缩器、第二压缩器和第三压缩器;所述第一公式、所述第二公式、所述第三公式是不同的计算公式。
3.根据权利要求2所述的数字信号处理结构,其特征在于:所述四级压缩的方法包括:
第一级压缩采用所述第一压缩器压缩运算;
第二级压缩采用所述第一压缩器和所述第二压缩器共同压缩运算;
第三级压缩采用所述第一压缩器、所述第二压缩器和所述第三压缩器共同压缩运算;
第四级压缩调用加法器IP核完成最终求和。
4.根据权利要求1所述的数字信号处理结构,其特征在于:所述部分积修正模块设置有多路选择器,用于对第一组8bit乘法运算中乘数最高位产生的部分积进行修正处理。
5.根据权利要求1-4任一项所述的数字信号处理结构,其特征在于:还包括:
与所述数据截取单元相连接的加法/累加器,用于进行二级加法运算或者累加运算;
与所述加法/累加器相连接的链式加法器,用于进行链式加法运算;
以及,与所述链式加法器相连接的输出寄存器,用于寄存最终的运算结果。
6.根据权利要求5所述的数字信号处理结构,其特征在于:所述加法器有两个;所述加法器和所述链式加法器均调用加法器IP核实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310501917.9A CN116205244B (zh) | 2023-05-06 | 2023-05-06 | 一种数字信号处理结构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310501917.9A CN116205244B (zh) | 2023-05-06 | 2023-05-06 | 一种数字信号处理结构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116205244A CN116205244A (zh) | 2023-06-02 |
CN116205244B true CN116205244B (zh) | 2023-08-11 |
Family
ID=86519510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310501917.9A Active CN116205244B (zh) | 2023-05-06 | 2023-05-06 | 一种数字信号处理结构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116205244B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116991359B (zh) * | 2023-09-26 | 2023-12-22 | 上海为旌科技有限公司 | Booth乘法器、混合Booth乘法器及运算方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101458617A (zh) * | 2008-01-22 | 2009-06-17 | 西北工业大学 | 基于cisc微处理器的32位整数乘法器 |
CN103294446A (zh) * | 2013-05-14 | 2013-09-11 | 中国科学院自动化研究所 | 一种定点乘累加器 |
CN110058840A (zh) * | 2019-03-27 | 2019-07-26 | 西安理工大学 | 一种基于4-Booth编码的低功耗乘法器 |
CN110362292A (zh) * | 2019-07-22 | 2019-10-22 | 电子科技大学 | 一种基于近似4-2压缩器的近似乘法运算方法和近似乘法器 |
CN111258541A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 乘法器、数据处理方法、芯片及电子设备 |
CN113031912A (zh) * | 2019-12-24 | 2021-06-25 | 上海寒武纪信息科技有限公司 | 乘法器、数据处理方法、装置及芯片 |
CN114089949A (zh) * | 2021-11-19 | 2022-02-25 | 中科亿海微电子科技(苏州)有限公司 | 一种可直接支持多操作数加法运算的数字信号处理器 |
WO2022133686A1 (zh) * | 2020-12-21 | 2022-06-30 | 清华大学 | 有/无符号乘累加装置及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114691086A (zh) * | 2022-04-06 | 2022-07-01 | 合肥工业大学 | 一种基于操作数裁剪的高性能近似乘法器及其计算方法 |
-
2023
- 2023-05-06 CN CN202310501917.9A patent/CN116205244B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101458617A (zh) * | 2008-01-22 | 2009-06-17 | 西北工业大学 | 基于cisc微处理器的32位整数乘法器 |
CN103294446A (zh) * | 2013-05-14 | 2013-09-11 | 中国科学院自动化研究所 | 一种定点乘累加器 |
CN111258541A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 乘法器、数据处理方法、芯片及电子设备 |
CN110058840A (zh) * | 2019-03-27 | 2019-07-26 | 西安理工大学 | 一种基于4-Booth编码的低功耗乘法器 |
CN110362292A (zh) * | 2019-07-22 | 2019-10-22 | 电子科技大学 | 一种基于近似4-2压缩器的近似乘法运算方法和近似乘法器 |
CN113031912A (zh) * | 2019-12-24 | 2021-06-25 | 上海寒武纪信息科技有限公司 | 乘法器、数据处理方法、装置及芯片 |
WO2022133686A1 (zh) * | 2020-12-21 | 2022-06-30 | 清华大学 | 有/无符号乘累加装置及方法 |
CN114089949A (zh) * | 2021-11-19 | 2022-02-25 | 中科亿海微电子科技(苏州)有限公司 | 一种可直接支持多操作数加法运算的数字信号处理器 |
Non-Patent Citations (1)
Title |
---|
一种支持高效加法的FPGA嵌入式DSP IP设计;王楠 等;《太赫兹科学与电子信息学报》;第15卷(第5期);第867-873页 * |
Also Published As
Publication number | Publication date |
---|---|
CN116205244A (zh) | 2023-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210349692A1 (en) | Multiplier and multiplication method | |
CN109543140B (zh) | 一种卷积神经网络加速器 | |
Ram et al. | Area efficient modified vedic multiplier | |
CN111832719A (zh) | 一种定点量化的卷积神经网络加速器计算电路 | |
CN112540743B (zh) | 面向可重构处理器的有无符号乘累加器及方法 | |
US10776078B1 (en) | Multimodal multiplier systems and methods | |
CN116205244B (zh) | 一种数字信号处理结构 | |
CN109753268B (zh) | 多粒度并行运算乘法器 | |
US10949168B2 (en) | Compressing like-magnitude partial products in multiply accumulation | |
CN113076083B (zh) | 数据乘加运算电路 | |
CN111370064A (zh) | 基于simd的哈希函数的基因序列快速分类方法及*** | |
CN113608718A (zh) | 一种实现素数域大整数模乘计算加速的方法 | |
CN110825346B (zh) | 一种低逻辑复杂度的无符号近似乘法器 | |
CN110659014B (zh) | 乘法器及神经网络计算平台 | |
CN114237550B (zh) | 一种基于Wallace树的多输入移位求和累加器 | |
da Rosa et al. | The Radix-2 m Squared Multiplier | |
CN114089949A (zh) | 一种可直接支持多操作数加法运算的数字信号处理器 | |
US7840628B2 (en) | Combining circuitry | |
CN113986194A (zh) | 基于预处理的神经网络近似乘法器实现方法及装置 | |
US9134958B2 (en) | Bid to BCD/DPD converters | |
CN112732224A (zh) | 一种面向卷积神经网络的可重构近似张量乘加单元及方法 | |
CN112906863A (zh) | 一种神经元加速处理方法、装置、设备及可读存储介质 | |
CN112685001A (zh) | 一种Booth乘法器及其运算方法 | |
CN116126283B (zh) | 一种fpga卷积加速器的资源占用率优化方法 | |
CN116048455B (zh) | 一种***型的近似乘法累加器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |