CN112988112A - 点积计算装置 - Google Patents

点积计算装置 Download PDF

Info

Publication number
CN112988112A
CN112988112A CN202110456687.XA CN202110456687A CN112988112A CN 112988112 A CN112988112 A CN 112988112A CN 202110456687 A CN202110456687 A CN 202110456687A CN 112988112 A CN112988112 A CN 112988112A
Authority
CN
China
Prior art keywords
units
multiplication
compression
results
shift
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110456687.XA
Other languages
English (en)
Other versions
CN112988112B (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.)
Beijing Bilin Technology Development Co ltd
Shanghai Bi Ren Technology Co ltd
Original Assignee
Beijing Bilin Technology Development Co ltd
Shanghai Biren Intelligent Technology 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 Beijing Bilin Technology Development Co ltd, Shanghai Biren Intelligent Technology Co Ltd filed Critical Beijing Bilin Technology Development Co ltd
Priority to CN202110456687.XA priority Critical patent/CN112988112B/zh
Publication of CN112988112A publication Critical patent/CN112988112A/zh
Application granted granted Critical
Publication of CN112988112B publication Critical patent/CN112988112B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only

Landscapes

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

Abstract

本公开的实施例涉及点积计算装置,涉及集成电路领域。该点积计算装置包括:具有预定输入位宽的4N个乘法单元,N为正整数;N个4:2压缩单元,与4N个乘法单元对应耦接,被配置为将4N个乘法单元的4N个乘法结果压缩成2N个压缩结果;2N个第一移位单元,与N个4:2压缩单元对应耦接,被配置为对2N个压缩结果进行移位,以生成2N个第一移位结果;加法树单元,与2N个第一移位单元相耦接,被配置为对所述2N个第一移位结果进行压缩,以生成加法树压缩结果;以及全加单元,与加法树单元相耦接,被配置为对加法树压缩结果求和,以生成点积计算结果。由此,能够降低点积计算装置的功耗和面积。

Description

点积计算装置
技术领域
本公开的实施例总体涉及集成电路领域,具体涉及点积计算装置。
背景技术
点积是矩阵乘法中的重要运算操作。在矩阵乘法中,点积相当于左矩阵某一行乘以右矩阵某一列,从而得到结果矩阵中的值。
为了实现不同精度下的算力配比,例如为了实现FP32:BF16:INT8算力配比为1:2:4,FP32乘法运算需要24x24的乘法器,通过拼接拆分需要9个8x8的乘法器,BF16乘法运算需要2个8x8的乘法器,INT8乘法运算需要4个8x8乘法器,综合情况考虑需要消耗9个乘法器。如果去除FP32的功能,只保留BF16:INT8的算力配比为2:4,则只需4个8x8的乘法器。因此,为了支持FP32的功能,消耗了多余的电路,导致功耗和面积增加。
发明内容
提供了一种点积计算装置及方法,能够降低点积计算装置的功耗和面积。
根据本公开的第一方面,提供了一种点积计算装置。该点积计算装置包括:具有预定输入位宽的4N个乘法单元,N为正整数;N个4:2压缩单元,与4N个乘法单元对应耦接,N个4:2压缩单元被配置为将4N个乘法单元的4N个乘法结果压缩成2N个压缩结果;2N个第一移位单元,与N个4:2压缩单元对应耦接,2N个第一移位单元被配置为对2N个压缩结果进行移位,以生成2N个第一移位结果;加法树单元,与2N个第一移位单元相耦接,加法树单元被配置为对2N个第一移位结果进行压缩,以生成加法树压缩结果;以及全加单元,与加法树单元相耦接,全加单元被配置为对加法树压缩结果求和,以生成点积计算结果。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素。
图1是根据本公开的第一实施例的点积计算装置100的示意框图。
图2是根据本公开的第二实施例的点积计算装置200的示意框图。
图3是根据本公开的第三实施例的点积计算装置300的示意框图。
图4是根据本公开的第四实施例的点积计算装置400的示意框图。
图5是根据本公开的第五实施例的点积计算装置500的示意框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如上所述,传统方案为了支持FP32的功能消耗了多余电路,导致功耗和面积增加。
为了解决上述问题,本公开提供了一种点积计算装置。
图1示出了根据本公开的第一实施例的点积计算装置100的示意框图。如图1所示,点积计算装置100包括4N个乘法单元110-1至110-4N(下文将乘法单元统称为110)、N个4:2压缩单元120-1至120-N(下文将压缩单元统称为120)、2N个第一移位单元130-1至130-2N(下文将第一移位单元统称为130)、加法树单元140和全加单元150。应当理解,虽然附图中示出N为2的情形,但是这只是举例说明,N可以为任何正整数。
关于4N个乘法单元110,其具有预定输入位宽。预定输入位宽例如包括但不限于8比特,例如乘法单元110为8x8乘法器。8x8乘法器可以是无符号乘法器,输出无符号数后根据乘法结果的符号转换成补码。也可以使用9x9的有符号乘法器,将尾数变成补码后运算并输出补码。应当理解,8比特只是为了举例说明,预定输入位宽也可以是其他值,例如16比特等,本公开的范围在此不受限制。下文以乘法单元110位8x8乘法器为例来举例说明。乘法单元110可以采用任何合适的乘法器或乘法电路来实现。
关于N个4:2压缩单元120,其与4N个乘法单元110对应耦接。N个4:2压缩单元120可以被配置为将4N个乘法单元110的4N个乘法结果压缩成2N个压缩结果。
对于每个4:2压缩单元120,其可以包括4个输入端和2个输出端。4个输入端与4N个乘法单元110中的4个乘法单元110相耦接。2个输出端与2N个第一移位单元130中的2个第一移位单元130相耦接。2个输出端分别输出和值(SUM)与进位值(CARRY),也就是2个压缩结果,使得和值+2*进位值=4个输入之和。以压缩单元120-1为例,其可以将4个乘法单元110-1至110-4的4个乘法结果压缩为2个压缩结果,也就是和值与进位值,使得和值+2*进位值=4个乘法结果之和。4:2压缩单元120可以采用任何合适的4:2压缩器或压缩电路来实现。
关于2N个第一移位单元130,其与N个4:2压缩单元120对应耦接。2N个第一移位单元130可以被配置为对N个4:2压缩单元120的2N个压缩结果进行移位,以生成2N个第一移位结果。第一移位单元130可以采用任何合适的移位器或移位电路来实现。
关于加法树单元140,其与2N个第一移位单元130相耦接。加法树单元140可以被配置为对2N个第一移位单元130的2N个第一移位结果进行压缩,以生成加法树压缩结果。也就是,每个第一移位单元130将其移位结果输出到加法树单元140。加法树单元140可以采用任何合适的加法树电路来实现。
关于全加单元150,其与加法树单元140相耦接。全加单元150可以被配置为对加法树压缩结果求和,以生成点积计算结果。全加单元150可以采用任何合适的全加器或全加电路来实现。
对于FP32浮点数的点积运算(例如N个乘加运算)而言,可以将FP32浮点数*FP32浮点数的尾数乘法部分拆分成4部分输入到4个乘法单元110。FP32浮点数具有1个符号位、8个指数位和23个尾数位,其尾数具有24位精度,可以表示为规格化的1.mant[22:0]或者如果指数为0,则表示为非规格化的0.mant[22:0]。以规格化的1.mant[22:0] 和乘法单元110-1至110-4来举例说明,2个FP32浮点数的尾数乘法可以拆分成以下4个部分:
1)HH 部分1.mant0[22:16]*1.mant1[22:16],例如通过乘法单元110-1来实现;
2)HL部分1.mant0[22:16]*mant1[15:8] ,例如通过乘法单元110-2来实现;
3)LH 部分mant0[15:8]*1.mant1[22:16] ,例如通过乘法单元110-3来实现;
4)LL 部分mant0[15:8]* mant1[15:8] ,例如通过乘法单元110-4来实现。
也就是说,FP32尾数的[7:0]部分被舍弃。
由此,对于诸如包括N个乘加运算的FP32点积运算,仅包括4N个乘法单元,相比于传统方案所需的9N个乘法单元,大大减少了点积计算装置中的乘法单元数量,从而减少了点积计算装置的面积。此外,采用4:2压缩单元,省去了FP32乘法结果的全加器面积和功耗开销。
在一些实施例中,点积计算装置100还可以包括2N个第二移位单元190-1至190-2N,其与4N个乘法单元110中的2N个乘法单元(110-1,110-4…110-4N-3,110-4N)和N个4:2压缩单元120对应耦接。2N个第二移位单元190-1至190-2N中与相同压缩单元120相耦接的每2个第二移位单元可以被配置为对所耦接2个乘法单元110的2个乘法结果对应执行以下操作,以输出到所耦接的压缩单元120:
向左移位预定输入位宽以及向右移位预定输入位宽。
接着上文FP32尾数乘法拆分并以压缩单元120-1和4个乘法单元110-1至110-4举例说明,在压缩单元120-1和2个乘法单元110-1、110-4之间布置2个第二移位单元190-1和190-2。其他压缩单元和乘法单元之间也可以进行类似布置,不再赘述。
在压缩单元120-1与乘法单元110-1之间的第二移位单元190-1被配置为对乘法单元110-1的乘法结果向左移位预定输入位宽,例如对于HH 部分1.mant0[22:16]*1.mant1[22:16]左移8位。
在压缩单元120-1与乘法单元110-4之间的第二移位单元190-2被配置为对乘法单元110-4的乘法结果向右移位预定输入位宽,例如对于LL 部分mant0[15:8]* mant1[15:8]右移8位,也就是LL[15:8]。
可见,压缩单元120-1接收的输入为FP32*FP32的尾数结果中的[31:8]部分。
由此,通过第二移位单元,使得输入到压缩单元的乘法结果反映了先前拆分FP32尾数乘法时各部分乘法结果对应的移位,以便于压缩单元的处理。
除了第二移位单元之外,点积计算装置100还可以包括N个符号位补偿单元(未示出),其与N个4:2压缩单元120、2N个第一移位单元130和4N个乘法单元110中的N个乘法单元110对应耦接。这N个乘法单元与执行向右移位预定输入位宽的N个第二移位单元对应耦接。
N个符号位补偿单元可以被配置为基于输入的N个乘法符号结果和N个乘法单元110的N个乘法结果,对N个4:2压缩单元120的2N个压缩结果进行符号位补偿,以输出到2N个第一移位单元130。
以压缩单元120-1举例说明,在压缩单元120-1和2个第一移位单元130-1和130-2之间布置符号位补偿单元。该符号位补偿单元还与乘法单元110-4相耦接,以接收乘法单元110-4的输出结果,并且接收与乘法单元110-1至110-4相关联的FP32*FP32的乘法符号结果mul_sgn。其他压缩单元、第一移位单元和乘法单元之间也可以类似布置,例如在压缩单元120-N和2个第一移位单元130-2N-1和130-2N之间布置符号位补偿单元,该符号位补偿单元与乘法单元110-4N相耦接,并且接收与乘法单元110-4N-3至110-4N相关联的FP32*FP32的乘法符号结果,不再赘述。
该符号位补偿单元可以被配置为基于乘法单元110-4的输出结果(LL部分mant0[15:8]* mant1[15:8] )和所对应乘法符号结果mul_sgn,对压缩单元120-1的2个压缩结果进行符号位补偿,以输出到2个第一移位单元130-1和130-2。
在一些实施例中,符号位补偿单元还可以被配置为如果确定所耦接压缩单元120的2个压缩结果的最高位的值均为0并且所对应乘法符号结果为正,则按照第一预定补偿模式,对2个压缩结果中的第一压缩结果进行符号位补偿。
具体来说,第一预定补偿模式对2个压缩结果中的第一压缩结果向左移位预定输入位宽并且在第一压缩结果的左侧补充1比特0,以生成第一中间结果,以及在第一中间结果的左侧补充第一数量个0,以生成经符号位补偿的第一压缩结果,第一数量为预定移位宽度减去经第一中间结果的位宽。
例如,以pp0[24:0]表示所耦接压缩单元120-1的第一压缩结果,以pp1[24:0]表示所耦接压缩单元120-1的第二压缩结果,以mul_sgn表示所对应乘法符号结果,也就是与乘法单元110-1至110-4相关联的FP32*FP32的乘法符号结果mul_sgn,Shift_in0和Shift_in1表示经符号位补偿的第一压缩结果和第二压缩结果,作为与压缩单元120-1相耦接的2个第一移位单元130-1和130-2的输入,SHIFT_WIDTH表示预定移位宽度。
如果pp0[24]为0、pp1[24]为0且mul_sgn为正(也就是0),也可以表示为{pp0[24],pp1[24]}==2’b00 && !mul_sgn,则Shift_in0 = {{SHIFT_WIDTH-25-8-1{1’b0}},1’b0,pp0[24:0],8’b0},其中SHIFT_WIDTH-25-8-1表示第一数量,1’b0表示1比特0,8’b0表示8比特0。
备选地或者附加地,在一些实施例中,符号位补偿单元还可以被配置为如果确定所耦接压缩单元120的2个压缩结果的最高位的值均为1并且所对应乘法符号结果为负,则按照第二预定补偿模式,对2个压缩结果中的第一压缩结果进行符号位补偿。
具体来说,第二预定补偿模式对2个压缩结果中的第一压缩结果向左移位预定输入位宽并且在第一压缩结果的左侧补充1比特0,以生成第二中间结果,以及在第二中间结果的左侧补充第一数量个1,以生成经符号位补偿的第一压缩结果,第一数量为预定移位宽度减去第二中间结果的位宽。
如果pp0[24]为1、pp1[24]为1且mul_sgn为负(也就是1),也可以表示为{pp0[24],pp1[24]}==2’b11 && mul_sgn,则Shift_in0 = {{SHIFT_WIDTH-25-8-1{1’b1}},1’b0,pp0[24:0],8’b0},其中1’b1表示1比特1。
符号位补偿单元还可以被配置为如果确定所耦接压缩单元120的2个压缩结果的最高位的值不同、所耦接压缩单元120的2个压缩结果的最高位的值均为0并且所对应乘法符号结果为负、或者所耦接压缩单元120的2个压缩结果的最高位的值均为1并且所对应乘法符号结果为正,则按照第三预定补偿模式,对2个压缩结果中的第一压缩结果进行符号位补偿。
具体来说,第三预定补偿模式对2个压缩结果中的第一压缩结果向左移位预定输入位宽并且在第一压缩结果的左侧补充1比特1,以生成第三中间结果,以及在第三中间结果的左侧补充第一数量个1,以生成经符号位补偿的第一压缩结果,第一数量为预定移位宽度减去第三中间结果的位宽。
对于其他情形,例如pp0[24]为1且pp1[24]为0,或者pp0[24]为0且pp1[24]为1,或者pp0[24]为1、 pp1[24]为1且mul_sgn为正,或者pp0[24]为0、 pp1[24]为0且mul_sgn为负,Shift_in0 = {{SHIFT_WIDTH-25-8-1{1’b1}},1’b1,pp0[24:0],8’b0}。
符号位补偿单元还可以被配置为对2个压缩结果中的第二压缩结果向左移位预定输入位宽并且在右侧补充所耦接乘法单元110的乘法结果中从低到高预定输入位宽的部分结果。
例如,Shift_in1 = {pp1[24:0],LL[7:0]},其中LL[7:0]为所耦接乘法单元110-4的乘法结果(LL部分mant0[15:8]* mant1[15:8] )中从低往高8位的部分结果。
由此,通过符号位补偿单元,省去了进位保存加法器(Carry Saving Adder,CSA)为了移位而进行的移位器宽度扩展。
图2示出了根据本公开的第二实施例的点积计算装置200的示意框图。图2中的4N个乘法单元210-1至210-4N(下文统称为210)、N个4:2压缩单元220-1至220-N(下文统称为220)、2N个第一移位单元230-1至230-2N(下文统称为230)、加法树单元240以及全加单元250分别与图1中的4N个乘法单元110-1至110-4N、N个4:2压缩单元120-1至120-N、2N个第一移位单元130-1至130-2N、加法树单元140以及全加单元150相对应,不再赘述。除了通过点积计算装置200实现FP32的点积运算之外,还可以考虑利用点积计算装置200实现BF16的点积运算。
如图2所示,在一些实施例中,点积计算装置200还可以包括2N个第一选择单元260-1至260-2N(下文将第一选择单元统称为260),其与N个4:2压缩单元220、4N个乘法单元210中的2N个乘法单元210以及2N个第一移位单元230对应耦接。2N个第一选择单元260可以被配置为选择N个4:2压缩单元220的2N个压缩结果或2N个乘法单元210的2N个乘法结果,以输出到2N个第一移位单元230。
参照图2,以压缩单元220-1举例说明, 2个第一选择单元260-1和260-2与压缩单元220-1相耦接。具体来说,第一选择单元260-1可被配置为接收压缩单元220-1的第一压缩结果,以及第一选择单元260-2可被配置为接收压缩单元220-1的第二压缩结果。
第一选择单元260-1还同与压缩单元220-1相耦接的乘法单元210-1相耦接,并且被配置为接收乘法单元210-1的乘法结果。第一选择单元260-2还同与压缩单元220-1相耦接的乘法单元210-3相耦接,并且被配置为接收乘法单元210-3的乘法结果。
第一选择单元260-1的输出端与第一移位单元230-1相耦接,以及第一选择单元260-2的输出端与第一移位单元230-2相耦接。
也就是说,第一选择单元260-1可以被配置为选择乘法单元210-1的乘法结果或压缩单元220-1的第一输出结果,以输出到第一移位单元230-1。第一选择单元260-2可以被配置为选择乘法单元210-3的乘法结果或压缩单元220-1的第二输出结果,以输出到第一移位单元230-2。
对于BF16浮点数的点积运算(例如2N个乘加运算)而言,可以将BF16浮点数的尾数部分乘法通过4N个乘法单元中的2N个乘法单元来实现。以4个乘法单元210-1至210-4为例,将BF16浮点数的尾数部分乘法通过乘法单元210-1和210-3来实现,并且通过控制2个第一选择单元260-1和260-2来将BF16尾数乘法结果输出到第一移位单元230-1和230-2进行移位,以最终实现BF16点积运算。
由此,通过2个第一选择单元可以实现压缩单元的2个压缩结果与2个乘法单元的2个乘法结果之间的选择,从而点积计算装置可以实现BF16点积运算和FP32点积运算之间的切换。
2N个第一选择单元260还可以被配置为响应于与第一预定精度相关联的第一控制信号,选择N个4:2压缩单元220的2N个压缩结果,以及响应于与第二预定精度相关联的第二控制信号,选择2N个乘法单元210的2N个乘法结果。
具体来说,每个第一选择单元260可以被配置为响应于与第一预定精度相关联的第一控制信号,选择所耦接压缩单元220的压缩结果,以及响应于与第二预定精度相关联的第二控制信号,选择所耦接乘法单元210的乘法结果。第一预定精度例如为FP32,第二预定精度例如为BF16。应当理解,这里第一预定精度和第二预定精度仅仅是举例说明,也可以采用其他的合适精度。
也就是说,在接收到针对FP32点积运算的控制信号时,第一选择单元260将所耦接压缩单元220的压缩结果输出到所耦接第一移位单元230。此时,第一移位单元230对压缩结果进行移位,以生成第一移位结果。在接收到针对BF16点积运算的控制信号时,第一选择单元260将所耦接乘法单元210的乘法结果输出到所耦接第一移位单元230。此时,第一移位单元230对乘法结果进行移位,以生成第一移位结果。
由此,通过与不同精度相关联的不同控制信号,点积计算装置可以实现BF16点积运算与FP32点积运算之间的切换。
图3示出了根据本公开的第三实施例的点积计算装置300的示意框图。图3中的4N个乘法单元310-1至310-4N(下文统称为310)、N个4:2压缩单元320-1至320-N(下文统称为320)、2N个第一移位单元330-1至330-2N(下文统称为330)、加法树单元340以及全加单元350分别与图1中的4N个乘法单元110-1至110-4N、N个4:2压缩单元120-1至120-N、2N个第一移位单元130-1至130-2N、加法树单元140以及全加单元150相对应,不再赘述。除了通过点积计算装置300实现FP32的点积运算之外,还可以考虑利用点积计算装置300实现INT8的点积运算。
如图3所示,点积计算装置300还可以包括4N个第二选择单元370,其与2N个第一移位单元330、4N个乘法单元310以及加法树单元340对应耦接。4N个第二选择单元370可以被配置为选择2N个第一移位单元330的2N个第一移位结果或者4N个乘法单元310的4N个乘法结果,以输出到加法树单元340。
以压缩单元320-1为例进行说明,与压缩单元320-1相耦接的4个乘法单元310-1至310-4的4个输出端与4个第二选择单元370-1至370-4相耦接。具体来说,乘法单元310-1的输出端与第二选择单元370-1的一个输入端相耦接,乘法单元310-2的输出端与第二选择单元370-2的一个输入端相耦接,乘法单元310-3的输出端与第二选择单元370-3的一个输入端相耦接,乘法单元310-4的输出端与第二选择单元370-4的一个输入端相耦接。
与压缩单元320-1相耦接的2个第一移位单元330-1和330-2的2个输出端与2个第二选择单元370-1和370-3相耦接。具体来说,第一移位单元330-1的输出端与第二选择单元370-1的另一个输入端相耦接,以及第一移位单元330-2的输出端与第二选择单元370-3的另一个输入端相耦接。第二选择单元370-2的另一个输入端可以接收或者设置为0。第二选择单元370-4的另一个输入端也可以接收或者设置为0。
4个第二选择单元370-1至370-4的4个输出端耦接到加法树单元340。
也就是说,4个第二选择单元370-1至370-4可以选择将4个乘法单元310-1至310-4的4个乘法结果输出到加法树单元340,或者将2个第一移位单元330-1和330-2的2个第一移位结果输出到加法树单元340。
对于INT8点积运算(例如4N个乘加运算)而言,可以通过4N个乘法单元310实现INT8点积运算中的4N个乘法运算。通过控制4N个第二选择单元370输出4N个乘法单元310的4N个乘法结果到加法树单元340,而不经过压缩单元320和第一移位单元330,来实现INT8点积运算。
由此,通过第二选择单元可以实现第一移位结果与乘法结果之间的选择,从而可以实现INT8点积运算与BF16/FP32点积运算之间的切换。
4N个第二选择单元370还可以被配置为响应于与第三预定精度相关联的第三控制信号,选择4N个乘法单元310的4N个乘法结果。此时,加法树单元340对4N个乘法结果进行压缩,以生成加法树压缩结果。4N个第二选择单元370还可以被配置为响应于与第一预定精度或第二预定精度相关联的第四控制信号,选择2N个第一移位单元330的2N个第一移位结果。此时,加法树单元340对2N个第一移位结果进行压缩,以生成加法树压缩结果。
具体来说,4N个第二选择单元370中的每个第二选择单元370可以被配置为响应于与第三预定精度相关联的第三控制信号,选择所耦接乘法单元310的乘法结果,以及还可以被配置为响应于与第一预定精度或第二预定精度相关联的第四控制信号,选择所耦接第一移位单元330的第一移位结果或者0。第一预定精度例如为FP32,第二预定精度例如为BF16,第三预定精度例如为INT8。应当理解,这里的精度仅是举例说明,也可以采用其他合适的精度,本公开的范围在此不受限制。
以4个第二选择单元370-1至370-3举例说明,在接收到针对INT8点积运算的控制信号,第二选择单元370-1至370-3将乘法单元310-1至310-3的4个乘法结果输出到加法树单元340,从而实现INT8点积运算。在接收到针对BF16或BF32点积运算的控制信号时,第二选择单元370-1和370-3将第一移位单元330-1和330-2的2个第一移位结果输出到加法树单元340,第二选择单元370-2和370-4输出0,从而实现BF16或BF32点积运算。
由此,通过与不同精度相关联的不同控制信号,点积计算装置可以实现INT8点积运算与BF16/FP32点积运算之间的切换。
图4示出了根据本公开的第四实施例的点积计算装置400的示意框图。图4中的4N个乘法单元410-1至410-4N(下文统称为410)、N个4:2压缩单元420-1至420-N(下文统称为420)、2N个第一移位单元430-1至430-2N(下文统称为430)、加法树单元440以及全加单元450分别与图1中的4N个乘法单元110-1至110-4N、N个4:2压缩单元120-1至120-N、2N个第一移位单元130-1至130-2N、加法树单元140以及全加单元150相对应。图4中的2N个第一选择单元460-1至460-2N(下文统称为460)与图2中的2N个第一选择单元260-1至260-2N相对应,图4中的4N个第二选择单元470-1至470-4N(下文统称为470)与图3中的4N个第二选择单元370-1至370-4N相对应,不再赘述。
点积计算装置400可以用于FP32:BF16:INT8之间的算力配比为1:2:4的点积运算。通过2N个第一选择单元460可以实现BF16和FP32之间的切换,以及通过4N个第二选择单元470可以实现INT8与BF16/FP32之间的切换。
图5示出了根据本公开的第五实施例的点积计算装置500的示意框图。图5中的5N个乘法单元510-1至510-4N(下文统称为510)、N个4:2压缩单元520-1至520-N(下文统称为520)、2N个第一移位单元530-1至530-2N(下文统称为530)、加法树单元540以及全加单元550分别与图1中的4N个乘法单元110-1至110-4N、N个4:2压缩单元120-1至120-N、2N个第一移位单元130-1至130-2N、加法树单元140以及全加单元150相对应,图5中的2N个第一选择单元560-1至560-2N(下文统称为560)与图2中的2N个第一选择单元260-1至260-2N相对应,图5中的4N个第二选择单元570-1至570-4N(下文统称为570)与图3中的4N个第二选择单元370-1至370-4N相对应,不再赘述。
如图5所示,点积计算装置500还可以包括指数处理单元580。应当理解,虽然仅在图5中示出指数处理单元580,但是这只是举例,图1-图3中也可以包括指数处理单元580。
指数处理单元580与2N个第一移位单元530相耦接。指数处理单元580可以被配置为基于输入的N个或2N个浮点数指数和确定用于2N个第一移位单元530的2N个移位值。
例如,对于具有2N个乘加运算的BF16点积运算而言,乘法单元510-1、510-3…510-4N-3以及510-4N-1这2N个乘法单元各接收2个BF16尾数。2个浮点数相乘时,其对应的2个尾数相乘,对应的2个指数相加。相应地,对于这2N个乘法单元中的每个乘法单元,所接收的2个BF16尾数对应的2个BF16指数和输入到指数处理单元580。也就是说,一共2N个BF16指数和输入到指数处理单元580。指数处理单元580基于这2N个BF16指数和,确定用于2N个第一移位单元530的2N个移位值。
又如,对于具有N个乘加运算的FP32点积运算而言,每4个乘法单元对应一个FP32乘法,也就是对应一个FP32指数和。一共存在N个FP32指数和。这N个FP32指数和输入到指数处理单元580。指数处理单元580基于这N个FP32指数和,确定用于2N个第一移位单元530的2N个移位值。
由此,通过指数处理单元实现尾数乘法结果的正确移位,以用于点积运算中的后续加法操作正确实现。
在一些实施例中,指数处理单元580还可以被配置为确定N个或2N个浮点数指数和中的最大值。指数处理单元580还可以被配置为对于2N个第一移位单元530中的每个第一移位单元530,确定最大值与第一移位单元530所对应的浮点数指数和之间的差,作为用于第一移位单元530的移位值。
以第一移位单元530-1和530-2为例,在BF16模式,第一移位单元530-1所对应的浮点数指数和为与第一移位单元530-1相耦接的乘法单元510-1所对应的浮点数指数和,也就是输入乘法单元510-1的两个BF16尾数对应的两个BF16指数和,因为在BF16模式,乘法单元510-1的乘法结果被第一选择单元560-1选择输出到第一移位单元530-1。类似地,第一移位单元530-2所对应的浮点数指数和为与第一移位单元530-2相耦接的乘法单元510-3所对应的浮点数指数和,也就是输入乘法单元510-3的两个BF16尾数对应的两个BF16指数和,因为在BF16模式,乘法单元510-3的乘法结果被第一选择单元560-2选择输出到第一移位单元530-2。
在FP32模式,第一移位单元530-1所对应的浮点数指数和为与第一移位单元530-1相耦接的4:2压缩单元520-1所对应的浮点数指数和,也就是输入乘法单元510-1至510-4的两个FP32尾数对应的两个FP32指数和。第一移位单元530-2所对应的浮点数指数和为与之相同,因为第一移位单元530-2也耦接到相同压缩单元520-1。
由此,通过浮点数指数和最大值与第一移位单元所对应浮点数指数和之差,可以确定第一移位单元的移位值,便于点积运算后续的加法运算。
通过上文可以看出,对于INT8 4N个乘加的点积,可以通过4N个8x8乘法单元、一个输入是4N组的加法树单元以及一个全加单元来实现。
对于BF16 2N个乘加的点积,可以通过2N个8x8乘法单元、2N个第一移位单元、一个输入是2N组的加法树单元、一个全加单元以及对应2N个BF16点积的指数处理单元来实现。
对于FP32 N个乘加的点积,可以通过4N个8x8乘法单元、N个4:2压缩单元、2N个第一移位单元、一个输入是2N组的加法树单元、一个全加单元以及对应N个FP32点积的指数处理单元。
考虑同一时刻点积计算装置只运行在一种精度模式,点积计算装置100可以包括4N个8x8的乘法单元、N个4:2压缩单元、2N个第一移位单元、一个输入是4N组的加法树单元、一个全加单元以及对应的指数处理单元。
相比于传统方案,该点积计算装置面积小,频率高,同样的乘法器移位器,FP32算力翻倍,采用42压缩表示方法,省去了FP32乘法结果的全加器面积和功耗开销,添加了符号位补偿机制,省去了CSA为了移位而进行的移位器宽度扩展。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。
本公开的以上描述用于使本领域的任何普通技术人员能够实现或使用本公开。对于本领域普通技术人员来说,本公开的各种修改都是显而易见的,并且本文定义的一般性原理也可以在不脱离本公开的精神和保护范围的情况下应用于其它变形。因此,本公开并不限于本文所述的实例和设计,而是与本文公开的原理和新颖性特性的最广范围相一致。

Claims (11)

1.一种点积计算装置,包括:
具有预定输入位宽的4N个乘法单元,N为正整数;
N个4:2压缩单元,与所述4N个乘法单元对应耦接,所述N个4:2压缩单元被配置为将所述4N个乘法单元的4N个乘法结果压缩成2N个压缩结果;
2N个第一移位单元,与所述N个4:2压缩单元对应耦接,所述2N个第一移位单元被配置为对所述2N个压缩结果进行移位,以生成2N个第一移位结果;
加法树单元,与所述2N个第一移位单元相耦接,所述加法树单元被配置为对所述2N个第一移位结果进行压缩,以生成加法树压缩结果;以及
全加单元,与所述加法树单元相耦接,所述全加单元被配置为对所述加法树压缩结果求和,以生成点积计算结果。
2.根据权利要求1所述的点积计算装置,还包括2N个第一选择单元,与所述N个4:2压缩单元、所述4N个乘法单元中的2N个乘法单元以及所述2N个第一移位单元对应耦接,所述2N个第一选择单元被配置为选择所述2N个压缩结果或所述2N个乘法单元的2N个乘法结果,以输出到所述2N个第一移位单元。
3.根据权利要求2所述的点积计算装置,其中所述2N个第一选择单元还被配置为响应于与第一预定精度相关联的第一控制信号,选择所述2N个压缩结果,以及响应于与第二预定精度相关联的第二控制信号,选择所述2N个乘法结果。
4.根据权利要求1所述的点积计算装置,还包括4N个第二选择单元,与所述2N个第一移位单元、所述4N个乘法单元以及所述加法树单元对应耦接,所述4N个第二选择单元被配置为选择所述2N个第一移位结果或者所述4N个乘法结果,以输出到所述加法树单元。
5.根据权利要求4所述的点积计算装置,其中所述4N个第二选择单元还被配置为响应于与第三预定精度相关联的第三控制信号,选择所述4N个乘法结果,以及响应于与第一预定精度或第二预定精度相关联的第四控制信号,选择所述2N个第一移位结果。
6.根据权利要求1所述的点积计算装置,还包括指数处理单元,与所述2N个第一移位单元相耦接,所述指数处理单元被配置为基于输入的N个或2N个浮点数指数和,确定用于所述2N个第一移位单元的2N个移位值。
7.根据权利要求6所述的点积计算装置,其中所述指数处理单元还被配置为:
确定所述N个或2N个浮点数指数和中的最大值;以及
对于所述2N个第一移位单元中的每个第一移位单元,确定所述最大值与所述第一移位单元所对应的浮点数指数和之间的差,作为用于所述第一移位单元的移位值。
8.根据权利要求1所述的点积计算装置,还包括2N个第二移位单元,与所述4N个乘法单元中的2N个乘法单元和所述N个4:2压缩单元对应耦接,所述2N个第二移位单元中与相同压缩单元相耦接的每2个第二移位单元被配置为对所耦接2个乘法单元的2个乘法结果对应执行以下操作,以输出到所耦接的压缩单元:
向左移位所述预定输入位宽以及向右移位所述预定输入位宽。
9.根据权利要求8所述的点积计算装置,还包括N个符号位补偿单元,与所述N个4:2压缩单元、所述2N个第一移位单元和所述4N个乘法单元中的N个乘法单元对应耦接,所述N个乘法单元与执行向右移位所述预定输入位宽的N个第二移位单元对应耦接,所述N个符号位补偿单元被配置为基于输入的N个乘法符号结果和所述N个乘法单元的N个乘法结果,对所述2N个压缩结果进行符号位补偿,以输出到所述2N个第一移位单元。
10.根据权利要求9所述的点积计算装置,其中所述N个符号位补偿单元中的每个符号位补偿单元还被配置为:
如果确定所耦接压缩单元的2个压缩结果的最高位的值均为0并且所对应乘法符号结果为正,则按照第一预定补偿模式,对所述2个压缩结果中的第一压缩结果进行符号位补偿;
如果确定所耦接压缩单元的2个压缩结果的最高位的值均为1并且所对应乘法符号结果为负,则按照第二预定补偿模式,对所述2个压缩结果中的第一压缩结果进行符号位补偿;
如果确定所耦接压缩单元的2个压缩结果的最高位的值不同、所耦接压缩单元的2个压缩结果的最高位的值均为0并且所对应乘法符号结果为负、或者所耦接压缩单元的2个压缩结果的最高位的值均为1并且所对应乘法符号结果为正,则按照第三预定补偿模式,对所述2个压缩结果中的第一压缩结果进行符号位补偿;以及
对所述2个压缩结果中的第二压缩结果向左移位所述预定输入位宽并且在右侧补充所耦接乘法单元的乘法结果中从低到高所述预定输入位宽的部分结果。
11.根据权利要求1所述的点积计算装置,其中所述预定输入位宽包括8比特。
CN202110456687.XA 2021-04-27 2021-04-27 点积计算装置 Active CN112988112B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110456687.XA CN112988112B (zh) 2021-04-27 2021-04-27 点积计算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110456687.XA CN112988112B (zh) 2021-04-27 2021-04-27 点积计算装置

Publications (2)

Publication Number Publication Date
CN112988112A true CN112988112A (zh) 2021-06-18
CN112988112B CN112988112B (zh) 2021-08-10

Family

ID=76340266

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110456687.XA Active CN112988112B (zh) 2021-04-27 2021-04-27 点积计算装置

Country Status (1)

Country Link
CN (1) CN112988112B (zh)

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101122850A (zh) * 2007-09-21 2008-02-13 清华大学 基于二次Booth编码的大数乘法器
CN101692202A (zh) * 2009-09-27 2010-04-07 北京龙芯中科技术服务中心有限公司 一种64比特浮点乘加器及其浮点运算流水节拍处理方法
CN102520906A (zh) * 2011-12-13 2012-06-27 中国科学院自动化研究所 支持定浮点可重构的向量长度可配置的向量点积累加网络
CN102999312A (zh) * 2012-12-20 2013-03-27 西安电子科技大学 基16布斯乘法器的优化方法
CN103176767A (zh) * 2013-03-01 2013-06-26 浙江大学 一种低功耗高吞吐的浮点数乘累加单元的实现方法
CN108733348A (zh) * 2017-04-21 2018-11-02 上海寒武纪信息科技有限公司 融合向量乘法器和使用其进行运算的方法
US20190018651A1 (en) * 2017-07-11 2019-01-17 International Business Machines Corporation Tiny detection in a floating-point unit
CN110168493A (zh) * 2017-01-16 2019-08-23 国际商业机器公司 在128位宽的操作数上的融合乘加浮点运算
US20190272150A1 (en) * 2018-03-02 2019-09-05 National Tsing Hua University Fast vector multiplication and accumulation circuit
CN110221808A (zh) * 2019-06-03 2019-09-10 深圳芯英科技有限公司 向量乘加运算的预处理方法、乘加器及计算机可读介质
CN111258541A (zh) * 2018-11-30 2020-06-09 上海寒武纪信息科技有限公司 乘法器、数据处理方法、芯片及电子设备
CN112463112A (zh) * 2020-11-19 2021-03-09 上海壁仞智能科技有限公司 点积累加方法及装置
CN112668709A (zh) * 2020-12-30 2021-04-16 上海壁仞智能科技有限公司 计算装置以及用于数据重用的方法

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101122850A (zh) * 2007-09-21 2008-02-13 清华大学 基于二次Booth编码的大数乘法器
CN101692202A (zh) * 2009-09-27 2010-04-07 北京龙芯中科技术服务中心有限公司 一种64比特浮点乘加器及其浮点运算流水节拍处理方法
CN102520906A (zh) * 2011-12-13 2012-06-27 中国科学院自动化研究所 支持定浮点可重构的向量长度可配置的向量点积累加网络
CN102999312A (zh) * 2012-12-20 2013-03-27 西安电子科技大学 基16布斯乘法器的优化方法
CN103176767A (zh) * 2013-03-01 2013-06-26 浙江大学 一种低功耗高吞吐的浮点数乘累加单元的实现方法
CN110168493A (zh) * 2017-01-16 2019-08-23 国际商业机器公司 在128位宽的操作数上的融合乘加浮点运算
CN108733348A (zh) * 2017-04-21 2018-11-02 上海寒武纪信息科技有限公司 融合向量乘法器和使用其进行运算的方法
US20190018651A1 (en) * 2017-07-11 2019-01-17 International Business Machines Corporation Tiny detection in a floating-point unit
US20190272150A1 (en) * 2018-03-02 2019-09-05 National Tsing Hua University Fast vector multiplication and accumulation circuit
CN111258541A (zh) * 2018-11-30 2020-06-09 上海寒武纪信息科技有限公司 乘法器、数据处理方法、芯片及电子设备
CN110221808A (zh) * 2019-06-03 2019-09-10 深圳芯英科技有限公司 向量乘加运算的预处理方法、乘加器及计算机可读介质
CN112463112A (zh) * 2020-11-19 2021-03-09 上海壁仞智能科技有限公司 点积累加方法及装置
CN112668709A (zh) * 2020-12-30 2021-04-16 上海壁仞智能科技有限公司 计算装置以及用于数据重用的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
SONG ZHANG 等: "A Multiple-Precision Multiply and Accumulation Design with Multiply-Add Merged Strategy for AI Accelerating", 《ASPDAC "21: PROCEEDINGS OF THE 26TH ASIA AND SOUTH PACIFIC DESIGN AUTOMATION CONFERENCE》 *
车文博 等: "M_DSP中高性能浮点乘加器的设计与实现", 《计算机应用》 *

Also Published As

Publication number Publication date
CN112988112B (zh) 2021-08-10

Similar Documents

Publication Publication Date Title
US6813626B1 (en) Method and apparatus for performing fused instructions by determining exponent differences
US9367287B2 (en) Mixed precision fused multiply-add operator
US7080111B2 (en) Floating point multiply accumulator
US6697832B1 (en) Floating-point processor with improved intermediate result handling
US6779013B2 (en) Floating point overflow and sign detection
US8838664B2 (en) Methods and apparatus for compressing partial products during a fused multiply-and-accumulate (FMAC) operation on operands having a packed-single-precision format
US4866652A (en) Floating point unit using combined multiply and ALU functions
US11294627B2 (en) Floating point dot-product operator with correct rounding
US6988119B2 (en) Fast single precision floating point accumulator using base 32 system
US20100125621A1 (en) Arithmetic processing device and methods thereof
US20130282784A1 (en) Arithmetic processing device and methods thereof
KR101560340B1 (ko) 포화가 적용된 정수 곱셈 연산 및 곱셈-덧셈 연산
Seidel et al. On the design of fast IEEE floating-point adders
US20080098057A1 (en) Multiplication Apparatus
CN112988112B (zh) 点积计算装置
US9519459B2 (en) High efficiency computer floating point multiplier unit
US6697833B2 (en) Floating-point multiplier for de-normalized inputs
CN116974512A (zh) 浮点运算装置、矢量处理装置、处理器及电子设备
Lutz et al. Fused FP8 4-Way Dot Product With Scaling and FP32 Accumulation
EP3647939A1 (en) Arithmetic processing apparatus and controlling method therefor
US11586701B2 (en) Low-power adder circuit
US6021422A (en) Partitioning of binary quad word format multiply instruction on S/390 processor
US7599974B2 (en) Data processing apparatus and method for comparing floating point operands
US20220405052A1 (en) Process for Performing Floating Point Multiply-Accumulate Operations with Precision Based on Exponent Differences for Saving Power
Nguyen et al. A combined IEEE half and single precision floating point multipliers for deep learning

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
CP03 Change of name, title or address

Address after: Room 0106-508, 1st floor, No.26, shangdixin Road, Haidian District, Beijing 100085

Patentee after: Beijing Bilin Technology Development Co.,Ltd.

Country or region after: China

Patentee after: Shanghai Bi Ren Technology Co.,Ltd.

Address before: Room 0106-508, 1st floor, No.26, shangdixin Road, Haidian District, Beijing 100085

Patentee before: Beijing Bilin Technology Development Co.,Ltd.

Country or region before: China

Patentee before: Shanghai Bilin Intelligent Technology Co.,Ltd.

CP03 Change of name, title or address