CN116661734B - 支持多输入多格式的低精度乘加运算器 - Google Patents

支持多输入多格式的低精度乘加运算器 Download PDF

Info

Publication number
CN116661734B
CN116661734B CN202310920653.0A CN202310920653A CN116661734B CN 116661734 B CN116661734 B CN 116661734B CN 202310920653 A CN202310920653 A CN 202310920653A CN 116661734 B CN116661734 B CN 116661734B
Authority
CN
China
Prior art keywords
data
bit
circuit
input
multiplication
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
CN202310920653.0A
Other languages
English (en)
Other versions
CN116661734A (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.)
Shencun Technology Wuxi Co ltd
Original Assignee
Shencun Technology Wuxi 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 Shencun Technology Wuxi Co ltd filed Critical Shencun Technology Wuxi Co ltd
Priority to CN202310920653.0A priority Critical patent/CN116661734B/zh
Publication of CN116661734A publication Critical patent/CN116661734A/zh
Application granted granted Critical
Publication of CN116661734B publication Critical patent/CN116661734B/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
    • 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
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

本申请公开支持多输入多格式的低精度乘加运算器,涉及芯片领域,包括若干组并列设计的乘加运算单元和加法树,乘加运算单元输入两组8比特位的运算数据,将运算结果输入到加法树中逐级求和运算,输出结果数据;乘加运算单元包括乘法器组、指数运算电路、数据重组电路、加法器电路以及数据归一化电路,实现浮点数和整数数据根据位宽拆分成尾数乘法和整数乘法进行分段乘积,然后对分段乘积结果进行数据重组和拼接求和输出归一化数据,实现减少电路资源,减少延迟并且统一数据通路;并行乘加运算单元之间通过加法树实现多输入多格式运算数据的并行乘加运算和求和输出,提高电路兼容性和电路运行效率。

Description

支持多输入多格式的低精度乘加运算器
技术领域
本申请涉及芯片领域,特别涉及一种支持多输入多格式的低精度乘加运算器。
背景技术
在芯片领域中,卷积计算和矩阵计算是芯片的基础计算操作,这两种计算的最底层运算是乘法和加法的融合运算,也即乘加计算。而随着人工智能处理的对象和数据的复杂度提升,需要设计更高性能、低功耗的神经网络加速器集成电路(包括FPGA/IP/SOC/AISC),以支持多整数和浮点数的乘加计算。
当下主流相关的电路设计中,硬件电路被设计成只支持最低8位的整数和最高16位的浮点数运算,这种设计在处理低位宽整数和浮点数时必须采用更高位宽的计算电路,且会降低电路的计算效率,导致芯片效率损失或成本上升。受限于计算电路总位宽限制,这种设计还会影响每组输入数据的数量,进一步拉低芯片的计算效率。
此外,在一些超大语言模型(LLM)下使用高精度计算电路数据处理,虽然可以实现对应功能,但这种高位宽乘加计算方式会增大资源消耗、增大计算时间、降低计算效率,模型响应速度也会受到影响。
发明内容
本申请提供一种支持多输入多格式的低精度乘加运算器,解决高精度计算乘加运算电路资源消耗大、计算效率低和系统延迟高的问题。支持多输入多格式的混合精度乘加运算器,包括若干组并列设计的乘加运算单元和加法树,每个所述乘加运算单元输入两组8比特位的运算数据,并根据模式控制信号执行乘加运算,并将运算结果输入到所述加法树中;所述加法树包含若干组级联的多模2输入加法器模块,接收前级输出的运算结果,并根据模式控制信号进行逐级求和运算,输出一组16比特位的结果数据;
所述乘加运算单元包括乘法器组、指数运算电路、数据重组电路、加法器电路以及数据归一化电路;
所述乘法器组包括若干窄位乘法电路,根据模式控制信号将输入的运算数据拆分成对应位宽的比特数据,执行整数或浮点数尾数部分的乘法计算,并输出乘法计算结果;不同模式控制信号表示不同计算模式;
所述指数运算电路基于模式控制信号执行浮点数指数部分的计算操作,并输出指数计算结果;
所述数据重组电路分别连接所述乘法器组和所述指数运算电路的输出,基于模式控制信号对多组乘法计算结果进行数据重组,或基于模式控制信号对多组乘法计算结果与指数计算结果两部分的结合进行数据重组;
所述加法器电路连接所述数据重组电路的输出,对输出的重组数据进行数据拼接求和,获得拼接数据;
所述数据归一化电路分别连接所述指数运算电路和所述加法器电路的输出,基于模式控制信号将所述拼接数据归一化为16比特位数据,或基于模式控制信号对所述拼接数据和指数计算结果两部分的结合归一化为16比特位数据。
本申请实施例提供的技术方案带来的有益效果至少包括:
复用整数乘法和浮点尾数乘法的乘法器,对其进行乘法运算;通过5位乘法器兼容2比特、4比特位整数数据和8比特浮点数据的乘法运算,通过比特位拆分的方式对超过5位的数据类型进行分段乘积和求和,可以节省电路资源,并且统一数据通路;
通过统一的宽位加法器和归一化电路来实现多个输入数据的求和,并对其进行数据格式同一,可以减少电路资源,减少延迟并且统一数据通路;
把最后的计算结果归一化到标准数据,以利于后续计算操作;
整体上,多个并行乘加运算单元通过加法树的逐级级联可以实现大规模、多输入运算数据的乘加运算,兼容更多类型低精度数据的乘加运算,提高电路的并行计算效率。
附图说明
图1是本申请提供的支持多输入多格式的低精度乘加运算器的结构图;
图2是本申请提供的calc_cell的结构图;
图3是 用窄5位乘法电路组成的低精度乘加运算器的结构图;
图4是乘法电路的电路示意图;
图5示出了不同类型和长度格式的数据示意图;
图6是乘加运算器处理2比特位整数型数据的结构示意图;
图7是乘加运算器处理4比特位整数型数据的结构示意图;
图8是乘加运算器处理8比特位整数型数据的结构示意图;
图9是乘加运算器处理8比特位AI浮点型数据结构示意图;
图10是乘加运算器处理另一种8比特位AI浮点型数据结构示意图;
图11是exp_op的电路结构示意图;
图12是data_reorder的电路结构示意图;
图13是是adder4的电路结构示意图;
图14是data_normal的电路结构示意图;
图15是多模2输入加法器模块的详细结构图;
图16是一种可能的4输入乘加运算器结构示意图;
图17是一种支持多输入多格式的低精度乘加运算方法的流程图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
因为传统的芯片设计需要面对多种数据类型输入计算的问题,所以会在芯片电路中集成多种独立的计算电路,分别处理12位、16位和更高位整数的乘法和加法运算,或者是直接使用宽位计算电路,如用宽位(16位)计算电路来处理窄位(8位或12位)的乘法和加法运算,这两种方案都会导致芯片电路面积增大或资源开销增大/浪费的问题。
目前主流设计中,电路被设计成只支持最低8位的整数和最高16位的浮点数运算,这种设计有以下几个问题:
处理低于8位的整数,比如4位整数或2位整数,只能采用8位的宽位整数计算电路来支持,计算效率是设计目标的50%或25%,导致芯片效率损失或成本上升。
处理8位浮点数,只能采用16位的宽位浮点数计算电路来支持,计算效率是设计目标的50%,导致芯片效率损失或成本上升。
在一些特别的领域,如大语言和超大语言模型、低精度数据,如4位或2位整数,以及8位浮点数的计算等这些都是数据计算所需的硬件位宽不高,倘若使用8位或16位计算电路,必然会导致大量资源浪费,还会增大延迟等问题。本申请通过设计一个通用的电路设计,兼容低精度场景下数据运算,支持多输入、多格式、低精度的输入,达到节省资源、减少延迟、提高效率的目的。
图1是本申请提供的支持多输入多格式的低精度乘加运算器的结构图,该乘加运算器MAC包括若干组并列设计的乘加运算单元和加法树,每个乘加运算单元输入两组8比特位的运算数据,并根据模式控制信号mode执行乘加运算,并将运算结果输入到加法树中。例如MAC包括n组乘加运算单元,每个单元输入[7:0]的运算数据,加法树则以2输入加法器模块将相邻两个乘加运算单元的输出进行逐级求和运算。又考虑到数据不同场景下数据格式存在差异,例如浮点型数据和整数数据等,因为两种输入的计算模式不同,所以需要通过mode信号控制其对应的计算模式,而多模2输入加法器模块可以根据模式控制信号进行逐级求和运算,输出一组16比特位的结果数据。因为运算数据支持[7:0]共计8个比特位输入,当输入的是2比特位、4比特位或其他比特位数据时,可以叠加输入,例如A[7:0]可以包含4个2比特位数据,或2个4比特位数据。这样可以实现叠加输入,增加并行计算效率。
图2是本申请提供的calc_cell的结构图,calc_cell具体实现对不同比特位的运算数据进行拆分、根据mode信号执行对应的乘加计算过程。calc_cell具体包括乘法器组mul_prod、指数运算电路exp_op、数据重组电路data_reorder、加法器电路adder4和数据归一化电路data_normal。mul_prod包括若干窄位乘法电路,根据模式控制mode信号将输入的运算数据拆分成对应位宽的比特数据,然后执行整数或浮点数尾数部分的乘法计算,并输出乘法计算结果。exp_op基于mode信号执行浮点数指数部分的计算操作,并输出指数计算结果。数据重组电路data_reorder分别连接mul_prod和exp_op的输出,基于mode信号对多组乘法计算结果进行数据重组,或基于mode信号对多组乘法计算结果与指数计算结果两部分的结合进行数据重组。需要说明的是,只有输入运算数据是浮点数据(进行指数运算)时,exp_op才会执行相关计算任务,输入为整数数据时不参与运算。adder4连接data_reorder的输出,对输出的重组数据进行数据拼接求和,获得拼接数据。data_normal分别连接exp_op和adder4的输出,基于mode信号将拼接数据归一化为16比特位数据,或基于mode信号对拼接数据和指数计算结果两部分的结合归一化为16比特位数据。此外,该运算器还包括寄存器DFF接在数据归一化电的下级,通过DFF缓存输出的即为最终计算结果。
因为本设计是实现低位宽数据的乘加运算,低位宽数据可以是2比特位、4比特位和8比特位数据,所以mul_prod优先选择窄位乘法电路,例如窄8位乘法电路或窄5位乘法电路,本申请以窄5位乘法电路为例进行说明,如图3是用窄5位乘法电路组成的低精度乘加运算器的结构图。
乘法器组mul_prol包括若干窄5位乘法电路,所有乘法电路共同组成乘法器组。乘法器电路的数量具体根据实际应用场景中可能处理的数据长度决定,本申请以最高20个比特位进行说明,也就是由4组5位乘法电路组成。当输入该运算器输入运算数据后,首先需要确定计算模式,计算模式根据输入乘加运算单元中运算数据的类型确定,将运算数据拆分成为对应位宽的比特数据并输入到窄位乘法电路中,执行整数或浮点数尾数部分的乘法计算,并输出多组乘法计算结果。4个乘法电路最多可以执行4对乘法运算,具体如何将两输入拆分计算则由mode信号控制,因为不同数据长度可能面临高低位拆分乘积然后重组的情况,且浮点型和整数型数据的拆分也需要考虑进去。
本申请以输入两组8比特位数据为例,也就是X组和Y组数据分别可以输入8比特位数据,最终输出归一化的16比特位数据。按照数据类型和长度可以将计算模式概括为如下几种计算模式:
1. X组4个2比特位整数(x1:x2:x3:x4),Y组4个2比特位整数(y1:y2:y3:y4),两组中的4个整数两两相乘后求和运算(x1*y1+x2*y2+x3*y3+x4*y4);
2. X组2个4比特位整数,Y组2个4比特位整数,两组中的2个整数两两相乘后求和运算;
3. X组1个8比特位整数、Y组1个8比特位整数,两组中的整数相乘运算;
4. X组1个8比特位AI浮点数,Y组1个8比特位浮点数, 2个浮点数相乘运算。
上述的计算模式涵盖绝大部分低精度(不超过8比特位宽数据)乘加计算的数据类型,而完成这些乘加计算无需单独设计对应的电路结构,将其拆分(数据长度超过乘法器位宽时)输入至4个窄5位乘法电路mul。
窄5位乘法电路包括第一乘法电路mul 0、第二乘法电路mul 1、第三乘法电路mul2和第四乘法电路mul 3,四个乘法电路结构完全相同。每个乘法器电路输入两个5比特位数据段,也就是根据计算模式拆分并分配的比特数据,其输出的乘法计算结果为10比特位数据。当运算数据为整数类型时,输入乘法电路的是各个整数的整数数据;当运算数据为浮点类型时,输入乘法电路的是各个浮点数的尾数数据mantissa,对应输入exp_op的是各个浮点数的指数数据exp。当然在一些实施例中,还可以将mul全部统一为窄8位计算电路,那么最高可以实现16位输出。
图4是乘法电路的电路示意图,假设输入的两个5比特位数据段表示为a[4:0]和b[4:0]。每个乘法电路包括两组相同的补码处理单元(inv+1)和第一选择器mux1、一组窄5位乘法器、第二选择器mux2和异或门。补码处理单元的设计是考虑到一些有符号数据,其操作原理就是补码+1得到有效数据段,所以补码处理单元输入的是去除符号位的[4:0]数据,最高位[5]是符号位。mux1的两个输入分别是有效数据段和拆分后的5比特位数据段。mux1根据mode信号选通得到a’[4:0]和b’[4:0],并将其输入到5位乘法器中。mux1的选通规则是:当计算的是有符号数据时,选通原码数据输出(a’[4:0]和b’[4:0]即为去除符号位的有效数据段),当计算的是无符号数据时,选通5比特位数据段直接输出(a’[4:0]即为a [4:0],b’[4:0]即为b[4:0])。异或门的两个输入是5比特位数据段的符号位数据a[5]和b[5],异或结果继续输入到第二选择器mux2。
5位乘法器经过乘法计算输出的乘积结果包括高位和低位乘积结果两部分,高位乘积结果是乘积结果的最高位数据,低位乘积结果是除最高位数据外的低位数据。mux2的另一个输入是5位乘法器输出的最高位数据,输出为窄位乘法电路的最高位数据o[9],o[9]和低位乘积结果o[8:0]组成10比特位的乘法计算结果。异或门和mux2的目的是对符号位进行处理,在输入是无符号数据时,异或门不执行,mux2直接选通乘法器的最高位输出。
补充说明,mul_prod计算过程中,当输入数据是整数时,乘法器执行的是完全意义上的乘法运算;但当数据是浮点数时,mul_prod执行的是浮点数的尾数乘法,指数部分的运算分开到exp_op中执行。
前述说到,不同计算模式数据长度各不相同,还包括有符号和无符号情况,而乘法器只有5位,对于有符号和无符号的5位整数可以正常处理,而超过5位数的数据类型则需要根据具体数据长度进行分段拆分处理。图5示出了不同类型和长度格式的数据示意图,乘法器处理整数数据和浮点数据的尾数mantissa,根据计算模式可以对输入的X[7:0]和Y[7:0]做如下拆分成:
1.当输入mul_prod的运算数据是2比特位整数时,直接将每组4个整数两两输入4个乘法电路进行计算。
如图6所示,带符号的int2-a和int2-0分别作为sa和s0分段数据输入mul 0;int2-b和int2-1分别作为sb和s1分段数据输入mul1;int2-c和int2-2分别作为sc和s2分段数据输入mul2;int2-d和int2-3分别作为sd和s3分段数据输入mul3。无符号unit类似,此处不作赘述。其中因为乘法器是5比特位宽,对于2比特位数据的高位补0。
2.当输入的运算数据是4比特位整数时,直接将每组2个整数两两输入4个乘法电路进行计算。
如图7所示,带符号的int4-a和int4-0分别作为sa和s0分段数据输入mul0;int4-b和int4-1分别作为sb和s1分段数据输入mul1;因为运算数据的总位宽是[7:0],所以每组最多仅能输入两个4比特位数据,对应的mul3和mul2则无输入(补0输入)。对于无符号unit类似,此处不作赘述。
3.当输入的运算数据是8比特位整数时,每组仅能输入1个运算数据,而乘法器位宽只有5位,所以数据必须进行拆分处理,按照高低位拆分成低5位和高3位输入。
如图8所示,int8-a拆分成sa和sb,int8-0拆分成s0和s1。其中的sa和s0都有5个有效位,s b和s 1中仅3个有效位,其余高位补0。基于此,将每组拆分后的两个数据段分段乘积,也就是sa*s0、sa*s1、sb*s0和sb*s1四组,将其分别输入到四个窄5位乘法器中分段乘积。四个乘法器是结构相同的,输入顺序可以任意设置。在一些其他实施例中,还可以将sa和s0分配4个有效位,s b和s 1也分配4个有效位,只要不超过乘法器的位宽即可。
4.当输入的运算数据是8比特位AI浮点数据时,将每组1个包含符号位和尾数的数据段输入到第一和第二乘法电路进行分段乘积,第三和第四乘法电路补0输入。
AI浮点型数据主要针对因特尔和英伟达公司系列产品的数据处理,因为总输入最多8位,所以每组只能输入1个浮点数据。8位AI浮点数据包含两种,如图9和10所示,浮点数据必须包含符号位,第一种8位浮点型的尾数为[1:0]位,符号位s为[7],所以fp8-a拆分为符号位[7] +隐藏位1+尾数[1:0]作为sa输入mul0,fp8-b拆分为符号位[7] +隐藏位1+尾数[1:0]作为s0输入mul0,其余乘法电路补0输入。这其中mul0中仅包含4位有效数据,高位补0。基于此,fp8-a的指数部分[6:2]输入到指数运算电路进行指数运算,fp8-b类似。
对于第二种AI型数据,则是将符号位 [7] +隐藏位1 +尾数[2:0]输入mul0,指数部分[6:3]输入exp_op中进行指数运算。
当然在另一些实施例中,还可以将尾数和隐藏位部分输入到乘法电路中进行分段乘积,而将指数位和符号位部分输入到exp_op中运算,例如附图9和10以前者进行说明。
通过这种分段乘积的方法可以在不增加额外计算电路的情况下最大限度的复用窄5位乘法器,且通过mode信号实现控制不同格式和数据长度的乘法计算,实现多种精度计算。
图11是指数运算电路的电路示意图,该部分只有在输入包含浮点数据的情况下才会参与计算。指数运算电路exp_op输入两组浮点数据的指数数据位,包括绝对值计算单元abs(exp_x-exp_y)和指数求和单元sum(exp_x,exp_y)。绝对值计算单元用于计算两个指数的绝对差值,并输入数据重组电路data_reorder。指数求和单元用于计算两个指数的合值,并输入数据归一化电路data_normal。
此电路结构的输入支持如下几种模式:
2个8比特位浮点数,输入的是2个5比特位的指数部分exp,高位补0;
2个8比特位浮点数,输入的是2个4比特的指数部分exp,高位补0;
图12是data_reorder的电路示意图, data_reorder包括四组移位选择单元,每组移位选择单元包含一个移位器和一个第三选择器mux3。移位器连接绝对值计算单元abs(exp_x-exp_y)的输出,mux3分别连接对应移位器和窄位乘法电路的输出。四个乘法电路的输出分别表示为a[9:0]、b[9:0]、c[9:0]和d[9:0],分别输入四个对应的mux3,且mux3分别基于mode信号控制选通,选通输出依次表示为a’[9:0]、b’[9:0]、c’[9:0]和d’[9:0]。移位器单元用于对浮点数据的移位操作计算,如左移和右移操作,mux3用于根据计算模式选择对整数乘法的高位和低位部分乘法计算结果重组输出,或将移位操作数据及浮点数乘法尾数部分对齐输出。其中,在mode信号指示整数计算时移位器单元不工作。具体包括如下功能模式:
1.原始运算数据是2位或4位整数,不做任何处理直送后续电路;
2.原始运算数据是8位整数,把低20位(a[9:0]和b[9:0])和高20位(c[9:0]和d[9:0])分别选择输出送给后续电路;
3.原始运算数据是8位AI浮点数,把低20位(a[9:0]和b[9:0])和高20位(c[9:0]和d[9:0])分别根据输入的指数模块结果进行移位后选择输出送给后续电路。
图13是adder4的电路示意图,该加法器电路包括两组一级加法器和一组二级加法器。两组一级加法器分别将两组移位选择单元按照高低位进行求和,也就是a’[9:0]和b’[9:0]求和,c’[9:0]和d’[9:0]求和后输入到二级加法器。二级加法器计算两组一级加法器输出的合数,获得12位的拼接数据,即o[11:0]。
特别说明的是,该加法器电路还包括对低位数据的移位操作,具体是通过移动部分积的结果然后相加来得到宽位数据的最终乘法结果,因为分段乘积的求和过程需要对不同高低位的数据扩大倍数。
图14是data_normal的电路示意图,data_normal包括进位饱和单元、归一化单元、拼接单元、位扩展单元和第四选择器mux4。二级加法器输出的拼接数据分别输入到进位饱和单元和位扩展单元,位扩展单元根据标准数据长度对整数型拼接数据进行高位扩展。
进位饱和单元和指数求和单元的输出连接归一化单元,进而通过拼接单元将指数和尾数部分拼接成对应的标准数据长度的浮点型数据。位扩展单元和拼接单元的输出连接第四选择器的输入端,第四选择器基于计算模式确定输出浮点型数据或整数型标准数据。具体包括如下功能模式:
原始运算数据是整数(包括2位、4位、8位整数)时,根据原始数据的输入格式在加法器的12位合数的结果上进行高位比特扩展得到标准的16位(int16)整数;在mode信号指示整数计算时移位器单元不工作。
当原始运算数据是浮点数时,根据原始数据的输入格式,对加法器的12位合数结果先进行饱和或者四舍五入进位运算,然后根据exp_op的输入进行移位操作,最后进行拼接得到16位浮点数(float16)。
最后输出结果根据输入模式(数据格式)选择16位整数或者16位浮点数输出到DFF寄存器中。
上述内容是单个calc_cell的结构和计算原理过程。为提高数据运行效率,还可以对calc_cell进行扩展,也就是通过加法树实现。基于calc_cell的加法树同样需要兼容浮点数和整数的求和特点,如图15所示是多模2输入加法器模块的详细结构图。adder2包括指数求和电路exp_op_add,依次级联的移位器、整数加法器和进位饱和单元。进一步的还可以包括DFF,用以逐级寄存。exp_op_add包括最大值确定单元exp_max和绝对值计算单元exp_abs,exp_abs接收前一级的两个输入,对两个数据的指数部分进行比较和取绝对差值,绝对差值输入移位器用于求和时移位,最大值确定单元用于在求和时执行进位操作。特别说明的是,移位器只有在a[15:0]和b[15:0]是浮点数求和时才会执行移位操作,当a[15:0]和b[15:0]是执行的整数求和时,直接输出到整数加法器。整数加法器在此处执行的内容包括整数求和及指数型尾数的求和。经过逐级求和最终得出乘加运算的结果。
在一些实施例中,MAC中包含的calc_cell数量根据实际需求配置,例如图16所示的4输入乘加运算器,n=2时,4输入乘加运算器可以涵盖最大不超过16个(INT2)偶数数目的运算数据的乘加计算。
综上所述,本申请通过复用整数乘法和浮点尾数乘法的乘法器,对其进行乘法运算;通过5位乘法器兼容2比特、4比特位整数数据和8比特浮点数据的乘法运算,通过比特位拆分的方式对超过5位的数据类型进行分段乘积和求和,可以节省电路资源,并且统一数据通路。
通过统一的宽位加法器和归一化电路来实现多个输入数据的求和,并对其进行数据格式同一,可以减少电路资源,减少延迟并且统一数据通路;
整体上,多个并行乘加运算单元通过加法树的逐级级联可以实现大规模、多输入运算数据的乘加运算,兼容更多类型低精度数据的乘加运算,提高电路的并行计算效率。
图17示出了一种支持多输入多格式的低精度乘加运算方法的流程图,用于上述各实施例所述的支持多输入多格式的低精度乘加运算器,方法包括如下:
S1,输入运算数据;
S2,根据输入格式按照比特分配/重组数据;
S3,根据输入格式按照比特进行乘法运算;
S4,根据输入格式,对乘法器运算结果进行直接输出,或高低位数据拼接后输出,或高低位移位和拼接后操作;
S5,进行4个输入数的加法运算,输出加法结果;
S6,根据输入格式,对加法器运算结果进行高位补零或高位符号位扩展,或进位计算、饱和判断、规格化后输出。
S7,根据输入格式对每2个运算单元的输出数据进行加法运算,输出加法结果。
S8,根据输入格式对2个加法器单元的输出数据进行逐级加法运算,输出结果数据。
以上对本发明的较佳实施例进行了描述;需要理解的是,本发明并不局限于上述特定实施方式,其中未尽详细描述的设备和结构应该理解为用本领域中的普通方式予以实施;任何熟悉本领域的技术人员,在不脱离本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例,这并不影响本发明的实质内容;因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。

Claims (12)

1.一种支持多输入多格式的低精度乘加运算器,其特征在于,包括若干组并列设计的乘加运算单元和加法树,每个所述乘加运算单元输入两组8比特位的运算数据,并根据模式控制信号执行乘加运算,并将运算结果输入到所述加法树中;所述加法树包含若干组级联的多模2输入加法器模块,接收前级输出的运算结果,并根据模式控制信号进行逐级求和运算,输出一组16比特位的结果数据;
所述乘加运算单元包括乘法器组、指数运算电路、数据重组电路、加法器电路以及数据归一化电路;
所述乘法器组包括若干窄位乘法电路,根据模式控制信号将输入的运算数据拆分成对应位宽的比特数据,执行整数或浮点数尾数部分的乘法计算,并输出乘法计算结果;不同模式控制信号表示不同计算模式;
所述指数运算电路基于模式控制信号执行浮点数指数部分的计算操作,并输出指数计算结果;
所述数据重组电路分别连接所述乘法器组和所述指数运算电路的输出,基于模式控制信号对多组乘法计算结果进行数据重组,或基于模式控制信号对多组乘法计算结果与指数计算结果两部分的结合进行数据重组;
所述加法器电路连接所述数据重组电路的输出,对输出的重组数据进行数据拼接求和,获得拼接数据;
所述数据归一化电路分别连接所述指数运算电路和所述加法器电路的输出,基于模式控制信号将所述拼接数据归一化为16比特位数据,或基于模式控制信号对所述拼接数据和指数计算结果两部分的结合归一化为16比特位数据。
2.根据权利要求1所述的支持多输入多格式的低精度乘加运算器,其特征在于,计算模式根据输入所述乘加运算单元中运算数据的类型确定,将运算数据拆分成为对应位宽的比特数据并输入到所述窄位乘法电路中;
所述乘法器组总输入为两组8比特位宽数据,计算模式包括两组各4个2比特位整数乘加计算、两组各2个4比特位整数乘加计算、两组各1个8比特位整数乘加计算、两组各1个8比特位AI浮点数乘加计算。
3.根据权利要求2所述的支持多输入多格式的低精度乘加运算器,其特征在于,所述乘法器组包括第一乘法电路、第二乘法电路、第三乘法电路和第四乘法电路;所述窄位乘法电路结构相同,分别输入两个拆分后的5比特位数据段,输出10比特位的乘法计算结果;
其中,当运算数据为整数时,输入所述窄位乘法电路的是整数数据;当运算数据为浮点数时,输入所述窄位乘法电路的浮点数的尾数数据,输入所述指数运算电路的是指数数据。
4.根据权利要求3所述的支持多输入多格式的低精度乘加运算器,其特征在于,所述窄位乘法电路包括两组相同的补码处理单元和第一选择器、5位乘法器、异或门和第二选择器;所述第一选择器输入5比特位数据段和所述补码处理单元输出的有效数据段,所述5位乘法器连接两个所述第一选择器的输出,进行乘法计算并输出乘积结果;
异或门输入两个拆分后5比特位数据段的符号位数据,所述第二选择器输入异或结果和所述5位乘法器乘积结果的最高位数据。
5.根据权利要求4所述的支持多输入多格式的低精度乘加运算器,其特征在于,整数类型和浮点数分别分为有符号数据和无符号数据;
所述补码处理单元输入去除符号位的低位数据并输出原码数据;所述第一选择器输入补码数据和5比特位数据段,输出有效数据段;所述5位乘法器输出的乘积结果包括高位和低位乘积结果,其中的高位乘积结果是乘积结果的最高位数据,低位乘积结果是除最高位数据外的低位数据;
所述第二选择器的输出为所述窄位乘法电路输出的最高位数据,和低位乘积结果组成10位的乘法计算结果。
6.根据权利要求5所述的支持多输入多格式的低精度乘加运算器,其特征在于,第一和第二选择器基于模式控制信号选通数据;当输入的5比特位数据段是有符号数据时,将异或门的异或结果作为所述第二选择器的输出,将原码数据作为所述第一选择器的输出;
当输入的5比特位数据段是无符号数据时,将高位乘积结果作为所述第二选择器的输出,将5比特位数据段作为所述第一选择器的输出。
7.根据权利要求1所述的支持多输入多格式的低精度乘加运算器,其特征在于,所述指数运算电路输入浮点数据的指数数据位,包括绝对值计算单元和指数求和单元;所述绝对值计算单元用于计算两个指数的绝对差值,并输入所述数据重组电路;所述指数求和单元用于计算两个指数的合值,并输入所述数据归一化电路。
8.根据权利要求3所述的支持多输入多格式的低精度乘加运算器,其特征在于,当输入乘加运算器中的运算数据是2比特位整数时,直接将每组4个整数两两输入4个窄位乘法电路进行计算;
当输入乘加运算器中的运算数据是4比特位整数时,直接将每组2个整数分别输入到第一和第二乘法电路进行分段乘积;第三和第四乘法电路补0输入;
当输入乘加运算器中的运算数据是8比特位整数时,将每组1个整数拆分为低第5位和高3位数据段,分别输入到第一和第二乘法电路,第三和第四乘法电路进行分段乘积,其中每组的高低位数据段分别和另一组的高低位数据段分段乘积;
当输入的运算数据是8比特位AI浮点数据时,将每组1个包含符号位和尾数的数据段输入到第一和第二乘法电路进行分段乘积,第三和第四乘法电路补0输入。
9.根据权利要求7所述的支持多输入多格式的低精度乘加运算器,其特征在于,所述数据重组电路包括四组移位选择单元,每组移位选择单元包含一个移位器和一个第三选择器;移位器连接所述绝对值计算单元的输出,用于对浮点数据的尾数乘积结果进行移位操作计算;所述第三选择器分别连接对应移位器和所述窄位乘法电路的输出,用于根据模式控制信号选择对整数乘法的高位和低位部分乘法计算结果重组输出,或将移位操作数据及浮点数乘法尾数部分的对齐输出。
10.根据权利要求9所述的支持多输入多格式的低精度乘加运算器,其特征在于,所述加法器电路包括两组一级加法器和一组二级加法器;两组一级加法器分别将两组移位选择单元按照高低位进行求和,并输入到二级加法器;二级加法器计算两组一级加法器输出的合数,获得拼接数据。
11.根据权利要求9所述的支持多输入多格式的低精度乘加运算器,其特征在于,所述数据归一化电路包括进位饱和单元、归一化单元、拼接单元、位扩展单元和第四选择器;二级加法器输出的拼接数据分别输入到所述进位饱和单元和所述位扩展单元,所述位扩展单元根据标准数据长度对整数型拼接数据进行高位扩展;
所述进位饱和单元和所述指数求和单元的输出连接所述归一化单元,进而通过所述拼接单元将指数和尾数部分拼接成对应的标准数据长度的浮点型数据;
所述位扩展单元和所述拼接单元的输出连接所述第四选择器的输入端,所述第四选择器基于模式控制信号确定输出浮点型数据或整数型标准16位数据。
12.根据权利要求1所述的支持多输入多格式的低精度乘加运算器,其特征在于,所述多模2输入加法器模块包括指数计算电路,依次级联的移位器、整数加法器和进位饱和单元;所述指数计算电路包括最大值确定单元和绝对值计算单元,所述绝对值计算单元输出连接所述进位饱和单元,所述最大值确定单元输出连接移位器;
移位器基于模式控制信号执行浮点型移位操作,所述进位饱和单元基于模式控制信号执行浮点型或整数型进位/饱和调整输出。
CN202310920653.0A 2023-07-26 2023-07-26 支持多输入多格式的低精度乘加运算器 Active CN116661734B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310920653.0A CN116661734B (zh) 2023-07-26 2023-07-26 支持多输入多格式的低精度乘加运算器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310920653.0A CN116661734B (zh) 2023-07-26 2023-07-26 支持多输入多格式的低精度乘加运算器

Publications (2)

Publication Number Publication Date
CN116661734A CN116661734A (zh) 2023-08-29
CN116661734B true CN116661734B (zh) 2023-10-10

Family

ID=87715583

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310920653.0A Active CN116661734B (zh) 2023-07-26 2023-07-26 支持多输入多格式的低精度乘加运算器

Country Status (1)

Country Link
CN (1) CN116661734B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117687598A (zh) * 2023-12-19 2024-03-12 上海合芯数字科技有限公司 多项式乘加处理电路和芯片

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107168678A (zh) * 2017-05-09 2017-09-15 清华大学 一种改进的浮点乘加器及浮点乘加计算方法
CN108287681A (zh) * 2018-02-14 2018-07-17 中国科学院电子学研究所 一种单精度浮点融合点乘运算单元
WO2022028134A1 (zh) * 2020-08-04 2022-02-10 腾讯科技(深圳)有限公司 一种芯片、终端及浮点运算的控制方法和相关装置
CN116400883A (zh) * 2023-03-09 2023-07-07 华南理工大学 一种可切换精度的浮点乘加器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107168678A (zh) * 2017-05-09 2017-09-15 清华大学 一种改进的浮点乘加器及浮点乘加计算方法
CN108287681A (zh) * 2018-02-14 2018-07-17 中国科学院电子学研究所 一种单精度浮点融合点乘运算单元
WO2022028134A1 (zh) * 2020-08-04 2022-02-10 腾讯科技(深圳)有限公司 一种芯片、终端及浮点运算的控制方法和相关装置
CN116400883A (zh) * 2023-03-09 2023-07-07 华南理工大学 一种可切换精度的浮点乘加器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
高速矩阵运算电路设计;安婧;沈小林;;微计算机信息(第29期);全文 *

Also Published As

Publication number Publication date
CN116661734A (zh) 2023-08-29

Similar Documents

Publication Publication Date Title
CN115934030B (zh) 算数逻辑单元、浮点数乘法计算的方法及设备
US20210349692A1 (en) Multiplier and multiplication method
US6584482B1 (en) Multiplier array processing system with enhanced utilization at lower precision
KR100264961B1 (ko) 비트 길이가 다른 다중수를 지원하는 병렬 승산기
CN116661734B (zh) 支持多输入多格式的低精度乘加运算器
CN105468331A (zh) 独立的浮点转换单元
CN117111881A (zh) 支持多输入多格式的混合精度乘加运算器
CN108255777B (zh) 用于fpga的嵌入式浮点型dsp硬核结构
CN110413254B (zh) 数据处理器、方法、芯片及电子设备
US6704762B1 (en) Multiplier and arithmetic unit for calculating sum of product
CN112540743B (zh) 面向可重构处理器的有无符号乘累加器及方法
CN117149130B (zh) 一种应用于fpga嵌入式dsp的多精度浮点乘法器结构
CN110688086A (zh) 一种可重构的整型-浮点加法器
WO2022170811A1 (zh) 一种适用于混合精度神经网络的定点乘加运算单元及方法
CN116627379A (zh) 可重构的支持多精度浮点或定点运算的方法及系统
US4823300A (en) Performing binary multiplication using minimal path algorithm
US5999962A (en) Divider which iteratively multiplies divisor and dividend by multipliers generated from the divisors to compute the intermediate divisors and quotients
US7840628B2 (en) Combining circuitry
CN112685001A (zh) 一种Booth乘法器及其运算方法
KR20010014902A (ko) 3입력 분할 가산기
CN111142840A (zh) 基于fpga的数据计算方法和装置
US9164728B1 (en) Ternary DSP block
US6161119A (en) Hardware multiplication of scaled integers
TWI804043B (zh) 多輸入多輸出的累加器及其執行方法
EP4206902A1 (en) Operation unit, method and apparatus for calculating floating-point number, and chip and calculation device

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