CN114637488A - 人工智能运算电路 - Google Patents
人工智能运算电路 Download PDFInfo
- Publication number
- CN114637488A CN114637488A CN202011480407.0A CN202011480407A CN114637488A CN 114637488 A CN114637488 A CN 114637488A CN 202011480407 A CN202011480407 A CN 202011480407A CN 114637488 A CN114637488 A CN 114637488A
- Authority
- CN
- China
- Prior art keywords
- numerical data
- unit
- selection unit
- floating
- addition
- 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
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/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
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4873—Dividing
-
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
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)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供一种人工智能运算电路。人工智能运算电路可藉由调整电路组态,达到支持整数格式与浮点数格式的多种运算。整数乘法与浮点数尾数乘法共享乘法运算单元,整数比较与浮点数比较共享比较运算单元,整数加法与浮点数加法共享加法运算单元。
Description
技术领域
本发明是有关于一种混合精度的人工智能运算电路。
背景技术
用于执行人工智能运算的处理器常见采用Int8、BF16及TF32其中之一的数据格式。在计算的精度上,TF32最高,BF16次高,而Int8最低。在计算速度(或称算力)上,Int8最高,BF16次高,而TF32最低。也就是说,使用单一的数据格式的人工智能运算电路难以兼顾计算精度与计算速度。
发明内容
本发明实施例提供一种人工智能运算电路。人工智能运算电路包括多个运算电路。各运算电路包括一浮点数乘法模块、一浮点数加法模块及一储存模块。浮点数乘法模块包括一第一选择单单元、一第二选择单元及一乘法运算单元。该第一选择单元的一第一输入端用以接收一第一数值数据,该第一选择单元的一第二输入端用以接收该第一数值数据的多个尾数比特,该第二选择单元的一第一输入端用以接收一第二数值数据,该第二选择单元的一第二输入端用以接收该第二数值数据的多个尾数比特,该乘法运算单元耦接至该第一选择单元及该第二选择单元。浮点数加法模块包括一比较运算单元、一第三选择单元、一第四选择单元及一加法运算单元。该比较运算单元用以接收该第一数值数据及该第二数值数据,该第三选择单元的一第一输入端用以接收该第一数值数据,该第三选择单元的一第二输入端用以接收该第一数值数据的该些尾数比特,该第四选择单元的一第一输入端用以接收该第二数值数据,该第四选择单元的一第二输入端用以接收该第二数值数据的该些尾数比特,该加法运算单元耦接至该第一选择单元及该第二选择单元。储存模块耦接至该浮点数乘法模块及该浮点数加法模块。其中当该第一数值数据为一整数格式时,该第一选择单元、该第二选择单元、该第三选择单元及该第四选择单元选择该些第一输入端作为输出,当该第一数值数据为一浮点数格式时,该第一选择单元、该第二选择单元、该第三选择单元及该第四选择单元选择该些第二输入端作为输出。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
图1绘示根据本发明一实施例的混精度的人工智能运算电路的方块图。
图2绘示根据本发明一实施例的人工智能运算电路的电路方块图。
图3绘示根据本发明另一实施例的人工智能运算电路的电路方块图。
附图标记
10、20、30:人工智能运算电路
M1:浮点数乘法模块
M2:浮点数加法模块
M3:储存模块
OPU1:乘法运算单元
OPU2:比较运算单元
OPU3:加法运算单元
SLU1~SLU4、201~212:选择单元
251~263:运算单元
具体实施方式
下面结合附图对本发明的结构原理和工作原理作具体的描述:
为了更清楚的理解本案的技术内容,在此先针对二进制运算的数值格式进行说明。在Int8中,数值的格式为有符号的整数,格式中的右起第八个比特为符号比特代表正或负,第一个至第七个比特代表值,因此Int8可表示-128至127的整数。二进制的浮点数可表示为[(+/-)a×b^c],其中(+/-)为正负符号代表正值或负值,×为乘法运算,a为尾数,b为基数(即2),c为指数。在BF16中,右起第十六个比特(最高有效比特)为符号比特代表正或负,第八个至第十五个比特为指数比特,第一个至第七个比特为尾数比特,共十六个比特。在TF32中,右起第十九个比特(最高有效比特)为符号比特代表正或负,第十一个至第十八个比特为指数比特,第一至第十个比特为尾数比特,共十九个比特。
请参照图1,图1绘示根据本发明一实施例的混精度的人工智能运算电路的方块图。人工智能运算电路10可用以根据一第一数值数据D1与一第二数值数据D2执行多种数学运算,例如加法、减法、乘法、取最大/最小值等。在本实施例中,第一数值数据与第二数值数据的格式可为整数格式,例如Int8,或者可为浮点数格式,例如BF16、TF32。
人工智能运算电路10包括一浮点数乘法模块M1、一浮点数加法模块M2及一或多个储存模块M3。一般而言,一个人工智能处理器可包括多个人工智能运算电路10,以应付人工智能庞大的运算量。
浮点数乘法模块M1包括一乘法运算单元OPU1及二选择单元SLU1、SLU2。选择单元SLU1的一第一输入端用以接收第一数值数据D1,选择单元SLU1的一第二输入端用以接收增加一比特「1」为最高有效比特的第一数值数据的尾数比特D1_M(以下表示为[1^b,D1_M])。选择单元SLU2的一第一输入端用以接收第二数值数据D2,选择单元SLU2的一第二输入端用以接收增加一比特「1」为最高有效比特的第二数值数据的尾数比特D2_M(以下表示为[1^b,D2_M])。需要说明的是,在浮点数格式中,正规化后的浮点数的尾数的整数部分是「1」,为了节省一个比特的空间,尾数比特通常只包含小数点后的小数部分,而不包含小数点前的「1」,并于执行运算之前在尾数比特的最左边补上「1」当作最高有效比特。
当第一数值数据及第二数值数据为整数格式时,选择单元SLU1、SLU2会受控于一控制单元输出的一控制信号选择第一输入端进行输出;当第一数值数据及第二数值数据为浮点数格式时,选择单元SLU1、SLU2会受控于一控制单元输出的一控制信号选择第二输入端进行输出。详细来说,当第一数值数据及第二数值数据为整数格式,选择单元SLU1、SLU2的第二输入端会接收到经过取尾数处理的第一数值数据及第二数值数据,但由于第一数值数据及第二数值数据为整数格式,故选择单元SLU1、SLU2的第一输入端接收到经过取尾数处理的第一数值数据及第二数值数据会是错误的数据。然而,选择单元SLU1、SLU2的第一输入端接收到的这些错误会因控制单元控制选择单元SLU1、SLU2的第二输入端进行输出而不会被选择,反之亦然。乘法运算单元OPU1用以接收选择单元SLU1、SLU2的输出,并根据选择单元SLU1、SLU2的输出执行乘法运算。也就是说,当第一数值数据及第二数值数据为整数格式时,乘法运算单元OPU1执行的是根据第一数值数据与第二数值数据的乘法运算,并得到第一数值数据与第二数值数据的积;当第一数值数据及第二数值数据为浮点数格式时,乘法运算单元OPU1执行的是根据[1^b,第一数值数据的尾数比特]与[1^b,第二数值数据的尾数比特]的乘法运算,并得到[1^b,第一数值数据的尾数比特]与[1^b,第二数值数据的尾数比特]的积,也就是浮点数运算的一部分运算,尾数相乘。
进一步的,浮点数乘法模块M1更包括当第一数值数据与第二数值数据为浮点数格式时用以计算第一数值数据与第二数值数据的指数比特相加的加法运算单元(未绘出)及用以根据第一数值数据与第二数值数据的符号比特进行符号处理的异或(XOR)运算单元(未绘出)。此二运算单元的输出在第一数值数据与第二数值数据为整数格式时不会被选择(运算结果是不正确的)。整合乘法运算单元OPU1的输出、第一数值数据与第二数值数据的指数比特的和及符号处理的结果即可得到第一数值数据与第二数值数据的积。
浮点数加法模块M2包括一比较运算单元OPU2、一加法运算单元OPU3及多个选择单元SLU3、SLU4。比较运算单元OPU2可用以接收第一数值数据与第二数值数据,将两者进行比较以判断两者之间的大小关系。选择单元SLU3的一第一输入端用以接收第一数值数据,选择单元SLU3的一第二输入端用以接收第一数值数据与第二数值数据中较大者。选择单元SLU4的一第一输入端用以接收第二数值数据,选择单元SLU4的一第二输入端用以接收第一数值数据与第二数值数据中较小者。当第一数值数据与第二数值数据为整数格式时,选择单元SLU3、SLU4受控于控制单元的控制信号选择第一输入端进行输出;当第一数值数据与第二数值数据为浮点数格式时,选择单元SLU3、SLU4受控于控制单元的控制信号选择第二输入端进行输出。加法运算单元OPU3根据选择单元SLU3、SLU4的输出执行加法运算。详细而言,由于浮点数运算需要对齐小数点,故在执行加法运算之前,需要比较第一数值数据与第二数值数据之间的大小关系,而整数运算则不需要。也就是说,当第一数值数据及第二数值数据为整数格式时,加法运算单元OPU3执行的是根据第一数值数据与第二数值数据的加法运算,并得到第一数值数据与第二数值数据的和;当第一数值数据及第二数值数据为浮点数格式时,加法运算单元OPU3执行的是根据第一数值数据与第二数值数据的加法运算,并得到第一数值数据与第二数值数据相加的一初步运算结果。
进一步的,浮点数加法运算模块M2更包括一预测运算单元(未绘出)及一错误校正单元(未绘出)。在一实施例中预测运算单元是使用Designware LZA(leading zeroanticipator)来预测执行加法后的第一个0的位置。当第一数值数据与第二数值数据为浮点数格式时,预测运算单元会根据第一数值数据及第二数值数据与加法运算单元OPU3同步计算一和预测值,错误校正单元会将加法运算单元OPU3输出的初步运算结果与和预测值进行比较,以决定是否要对初步运算结果进行校正。此校正例如是将初步运算结果往左平移一个比特。也就是说,若无需校正,加法运算单元OPU3输出的初步运算结果即为第一数值数据与第二数值数据的和(浮点数);若需校正,则经过校正的初步运算结果即为第一数值数据与第二数值数据的和(浮点数)。
储存模块M3可包括多个触发器单元(未绘示)。储存模块M3可用以储存根据第一数值数据与第二数值数据的各种运算结果。
控制单元可包括在人工智能运算电路10之中,也可外设于人工智能运算电路10,本发明不加以限定。
在一实施例中,人工智能运算电路10更可执行积项和运算。例如,在第一轮运算中第一数值数据与第二数值数据输入至浮点数乘法模块M1,并将计算得到的第一结果储存于储存模块M3,在第二轮的运算中,新的第一数值数据与新的第二数值数据输入至浮点数乘法模块M1,并将计算得到的第二结果与储存于储存模块M3的第一结果输入至浮点数加法模块M2,并将计算得到的第三结果储存至储存模块M3,以此类推。如此一来,人工智能运算电路10就能将多组第一数值数据与第二数值数据的乘积加总得到积项和。值得一提的是,由于乘法运算的精度是无损而完整地被输入去进行累加,只有在最后一次累加完会进行一次进位处理误差(rounding error)。相较于将乘法与加法独立分开的做法,乘法运算后进行一次进位处理误差,加法运算后也要进行一次进位处理误差,总共两次进位处理误差,本实施例的做法最终的误差较小。
人工智能处理器要求较高的运算速度,在实作上一个人工智能处理器包括的人工智能运算电路10的数量通常很多,例如成千上万个。而乘法运算单元、加法运算单元与比较运算单元是整数运算与浮点数运算中基本、关键且占用相当大面积的的电路。藉由选择单元选择输入的方式来让整数运算与浮点数运算可共享相同的乘法运算单元、加法运算单元及比较运算单元可以节省大量的面积。
请参照图2,图2绘示的是根据本发明一实施例的人工智能运算电路的电路方块图。人工智能运算电路20显示了人工智能运算电路10的进一步细节,且图2以人工智能运算电路20被配置为用以执行积项和运算的电路组态进行说明,其中为了简化说明,图2中省略部分选择单元。本实施例是以整数格式为Int8,浮点数格式为BF16进行说明,亦即人工智能运算电路20为Int8与BF16混合精度的运算电路。另外,在此先针对图2中的文字提示进行说明。<X>代表的是该条路径总共传送的比特数为X个比特,例如<8>代表该条路径共传送八个比特。[Y]代表取该路径传送的数据中第Y比特共一个比特,例如[15]代表该路径传送的数据中取第15比特(最右边的比特为第0个比特即最低有效比特)。[A:B]代表取该路径传送的数据中从第B比特到第A比特共(A-B+1)个比特,例如[14:0]代表取该路径传送的数据中右起第0比特至第14比特共十五个比特。在路径上标示的Int8或BF16代表的是该路径会在对应的格式下被选择,例如标示Int8的路径代表该路径会在第一数值数据与第二数值数据的格式为整数格式(Int8)时被选择,标示BF16的路径代表该路径会在第一数值数据与第二数值数据的格式为浮点数格式(BF16)时被选择。
人工智能运算电路20包括一浮点数乘法模块M1、一浮点数加法模块M2及一储存模块M3。浮点数乘法模块M1包括多个选择单元201~205及多个运算单元251~255。选择单元201、202等同于图1中的选择单元SLU1、SLU2。运算单元251为一八比特乘法器,等同于图1的乘法运算单元OPU1。运算单元251耦接至选择单元201、202。运算单元252耦接至运算单元251。运算单元252是用以将浮点数的正规化后进行输出。如前文所述,浮点数运算中,正规化的浮点数表示法为1.xxx,即小数点前的整数部分为1,而运算单元251的输出可能会因乘法运算中有进位的情况而使得整数部分为11或10,例如是10.xxx或11.xxx。此时正规化即是将小数点往左移一位变成1.0xx或1.1xxx,才能符合正规化的浮点数表示法。因此,运算单元252取出运算单元251的输出中的第0比特至第14比特共十五个比特,并补一个0做为最高有效比特成为共十六个比特之后输出。选择单元203耦接至运算单元201、202。选择单元203受控于控制信号,当第一数值数据与第二数值数据为整数格式时,选择运算单元201的输出做为输出,当第一数值数据与第二数值数据为浮点数格式时,选择运算单元202的输出做为输出。藉由选择单元201~203及运算单元251~252可实现整数格式的乘法运算及浮点数格式乘法运算中的尾数相乘的部分。
运算单元253为一加法器,用以接收第一数值数据的指数比特D1_E、第二数值数据的指数位D2_E元及运算单元251的输出中第15比特(尾数相乘的进位值(carry in)),并据以执行加法运算。运算单元254为一减法器,耦接至运算单元253。运算单元254用以将运算单元253的输出减去127(十进制),以符合电机电子工程学会(Institute ofElectricaland Electronics Engineers,IEEE)制定的IEEE 754规范。选择单元204耦接至运算单元254。选择单元204受控于控制信号,当第一数值数据与第二数值数据为整数格式时不输出,当第一数值数据与第二数值数据为浮点数格式时,将运算单元254的输出进行输出。藉由选择单元204及运算单元253、254可以实现浮点数格式乘法运算中的指数相加。
运算单元255为一异或门(XOR),用以接收第一数值数据的符号比特D1_S及第二数值数据的符号比特D2_S,并据以执行异或运算。选择单元205耦接至运算单元255。选择单元205受控于控制信号,当第一数值数据与第二数值数据为整数格式时不输出,当第一数值数据与第二数值数据为浮点数格式时,将运算单元255的输出进行输出。藉由选择单元205及运算单元255可以实现浮点数格式乘法运算中的符号相乘。
当第一数值数据与第二数值数据为整数格式时,选择单元203的输出(第一数值数据与第二数值数据的积)会被输入并储存至储存模块M3。当第一数值数据与第二数值数据为浮点数格式时,选择单元203~205的输出(第一数值数据与第二数值数据的尾数相乘、指数相加及符号相乘的结果)会被输入并储存至储存模块M3。储存时,选择单元203~205的输出会被排列为符合浮点数格式的顺序。值得一提的是,藉由这种方式得到的浮点数格式的积的能够维持原始数据的精度。
浮点数加法模块M2包括多个选择单元206~211及多个运算单元256~263。
选择单元206耦接至储存模块M3。选择单元206可接收来自储存模块M3储存的选择单元203的输出。运算单元256相当于图1中的运算单元OPU2。运算单元256耦接至选择单元206及储存模块M3。在第一数值数据与第二数值数据为浮点数格式时,运算单元256会将第一数值数据与第二数值数据的积中除了符号比特的部分(以下简称V1)与储存于储存模块M3中的一积项和值的除了符号比特的部分(以下简称V2)进行比较,以得到V1与V2之间的大小关系。当V1大于V2,运算单元256输出1,若V1不大于V2,运算单元256输出0。此外,运算单元256在比较V1与V2的过程中也能得到第一数值数据与第二数值数据的积中指数与积项和值的指数之间的大小关系,并输出至运算单元257。选择单元207耦接至储存模块M3。当第一数值数据与第二数值数据为整数格式时,选择单元207用以接收来自储存模块M3的积项和值,当第一数值数据与第二数值数据为浮点数格式时,选择单元207用以接收来自储存模块M3的积项和值的尾数比特。选择单元208耦接至选择单元206、207及运算单元256。选择单元209耦接至选择单元206、207及运算单元256。当第一数值数据与第二数值数据为浮点数格式时,选择单元208、209接收来自选择单元206、207的输出,并受控于运算单元256的输出,当运算单元256输出1时,选择单元208选择选择单元206的输出进行输出,选择单元209选择选择单元207的输出进行输出,当运算单元256输出0时,选择单元208选择选择单元207的输出进行输出,选择单元209选择选择单元206的输出进行输出。运算单元257耦接至运算单元256。运算单元257根据运算单元256输出的第一数值数据与第二数值数据的积中指数与积项和值的指数之间的大小关系决定是否要将V1与V2的小数点进行对齐,并将决定传送至运算单元258。运算单元258耦接至运算单元257。运算单元258根据运算单元257输出的决定,当运算单元257输出的决定指示要将V1与V2的小数点进行对齐,运算单元258将V1与V2中的较小者向右平移一或多个比特,平移的比特数根据两者的指数比特的差异决定。运算单元259耦接至储存模块M3。运算单元259为一异或门,用以根据第一数值数据与第二数值数据的积的符号比特及积项和值的符号比特执行异或运算,即判断两者的是否为同符号。运算单元260耦接至运算单元259。运算单元260根据运算单元259输出的异或运算的结果决定是否要将V1与V2中的较小者做二补码(即反向后加1),当运算单元259输出的异或运算的结果为1(即第一数值数据与第二数值数据的积与积项和值不同号为一正一负),则运算单元260将V1与V2中的较小者做二补码,当运算单元259输出的异或运算的结果为0(即第一数值数据与第二数值数据的积与积项和值同号,同为正或同为负),则运算单元260不动作,即不将V1与V2中的较小者做二补码。运算单元261为一加法器,相当于图1中的运算单元OPU3。另外,由于图2绘示的是积项和运算,因此图1中的选择单元SLU3、SLU4被省略。运算单元261为一加法器,耦接至选择单元206-208、运算单元259(做为运算单元261的进位值)及运算单元260。当第一数值数据与第二数值数据为整数格式时,运算单元261的二个输入是来自选择单元206、207,当第一数值数据与第二数值数据为浮点数格式时,运算单元261的二个输入是来自选择单元208及运算单元260。运算单元262耦接至选择单元208及运算单元259-261。运算单元262为一浮点数加法加速电路。运算单元262根据选择单元208及运算单元259、260的输出与运算单元261同时执行运算。运算单元262(例如前文所述的使用Designware LZA)会预测选择单元208及运算单元260的输出相减后前导零(leading zero)的位置以得到一预测结果,并将预测结果传送给运算单元261,来减少浮点数加法及减法的临界路径(critical path)。运算单元261的输入会同时被输入至运算单元262,运算单元262会将预测结果与运算单元261的输出(实际加法运算的结果)进行比较以判断预测结果是否正确,并输出一校正指示及修正后的指数比特。运算单元263耦接至运算单元261、262。运算单元263根据来自运算单元262的校正指示决定是否对运算单元261的输出进行校正,当校正指示为指示进行校正时,运算单元263将运算单元261输出的结果向左平移一个比特。需要注意的是,运算单元263是取运算单元261的输出中的最低有效的二十三个比特进行输出。选择单元210耦接至运算单元261、263及储存模块M3,且受控于控制信号,当第一数值数据与第二数值数据为整数格式时选择运算单元261的输出输出至储存模块M3,当第一数值数据与第二数值数据为浮点数格式时选择运算单元263的输出输出至选择模块M3。选择单元211耦接至运算单元259及储存模块M3,选择单元212耦接至运算单元262及储存模块M3。选择单元211及212受控于控制信号,当第一数值数据与第二数值数据为浮点数格式时将运算单元259的输出及经运算单元262修正后的指数比特输出至储存模块M3。如此一来,便可以得到第一数值数据与第二数值数据的积与先前累加得到的积项和值的和。
在本实施例中,实际能执行的运算包括FP32格式的加法/减法/取最大值/取最小值、BF16格式的乘法/积项和、Int8格式的加法/减法/乘法/取最大值/取最小值/积项和以及Int16格式的加法/减法/取最大值/取最小值。此外,在另一实施例中,将运算单元261设为三十二比特加法器,则可以由上述实施例的支持Int16格式的加法/减法/取最大值/取最小值,进一步支持到Int24甚至Int32格式的加法/减法/取最大值/取最小值。也就是说,在该种类运算的比特数上限的允许下的数值数据格式皆可支持。
相较于传统的Synopsys Designware设计,在面积上,传统的SynopsysDesignware设计为100%,本实施例仅56%,节省了44%面积;在运算速度上,传统的Synopsys Designware设计为91%,本实施例为100%。此外,在运算种类上,传统的Synopsys Designware设计仅能执行FP32格式的加法与Int8格式的乘法。
请参照图3,图3绘示的是根据本发明另一实施例的人工智能运算电路的电路方块图。人工智能运算电路30类似于人工智能运算电路20,差别在于人工智能运算电路30的浮点数格式是支持TF32,因此在部分路径及运算单元的比特数上做了适应性修改。
在本实施例中,实际能执行的运算包括FP32格式的加法/减法/取最大值/取最小值、TF32格式的乘法/积项和、BF16格式的乘法/积项和、Int16格式的乘法/积项和、Int8格式的加法/减法/乘法/取最大值/取最小值/积项和以及Int16(或Int24,或Int32)格式的加法/减法/取最大值/取最小值。也就是说,在该种类运算的比特数上限的允许下的数值数据格式皆可支持。
相较于传统的Synopsys Designware设计,在面积上,传统的SynopsysDesignware设计为100%,本实施例仅68%,节省了32%面积;在运算速度上,传统的Synopsys Designware设计为91%,本实施例为100%。此外,在运算种类上,传统的Synopsys Designware设计仅能执行FP32格式的加法与Int8格式的乘法。
本发明提出的人工智能运算电路对应于不同的数值数据格式可切换为对应的电路组态,兼具高运算速度、高效能、高精确度及低面积的优点。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (9)
1.一种人工智能运算电路,其特征在于,包括:
多个运算电路,各该运算电路包括:
一浮点数乘法模块,包括一第一选择单元、一第二选择单元及一乘法运算单元,该第一选择单元的一第一输入端用以接收一第一数值数据,该第一选择单元的一第二输入端用以接收该第一数值数据的多个尾数比特,该第二选择单元的一第一输入端用以接收一第二数值数据,该第二选择单元的一第二输入端用以接收该第二数值数据的多个尾数比特,该乘法运算单元耦接至该第一选择单元及该第二选择单元;
一浮点数加法模块,包括一比较运算单元、一第三选择单元、一第四选择单元及一加法运算单元,该比较运算单元用以接收该第一数值数据及该第二数值数据,该第三选择单元的一第一输入端用以接收该第一数值数据,该第三选择单元的一第二输入端用以接收该第一数值数据的该些尾数比特,该第四选择单元的一第一输入端用以接收该第二数值数据,该第四选择单元的一第二输入端用以接收该第二数值数据的该些尾数比特,该加法运算单元耦接至该第三选择单元及该第四选择单元;以及
一储存模块,耦接至该浮点数乘法模块及该浮点数加法模块,
其中当该第一数值数据为一整数格式时,该第一选择单元、该第二选择单元、该第三选择单元及该第四选择单元选择该些第一输入端作为输出,当该第一数值数据为一浮点数格式时,该第一选择单元、该第二选择单元、该第三选择单元及该第四选择单元选择该些第二输入端作为输出。
2.如权利要求1所述的人工智能运算电路,其特征在于,其中该整数格式为Int8,该浮点数格式为BF16或TF32。
3.如权利要求1所述的人工智能运算电路,其特征在于,其中当该第一数值数据为该整数格式时,该乘法运算单元根据该第一数值数据及该第二数值数据执行整数乘法运算,当该第一数值数据为该浮点数格式时,根据该第一数值数据的该些尾数比特及该第二数值数据的该些尾数比特执行浮点数乘法运算。
4.如权利要求1所述的人工智能运算电路,其特征在于,其中该比较运算单元用以比较该第一数值数据及该第二数值数据之间的大小关系,以及当该第一数值数据及该第二数值数据为该浮点数格式时,比较该第一数值数据不包含一符号比特及该第二数值数据不包含一符号比特之间的大小关系。
5.如权利要求1所述的人工智能运算电路,其特征在于,其中当该第一数值数据为该整数格式时,该加法运算单元根据该第一数值数据及该第二数值数据执行整数加法运算,当该第一数值数据为该浮点数格式时,根据该第一数值数据的该些尾数比特及该第二数值数据的该些尾数比特执行浮点数加法运算。
6.如权利要求1所述的人工智能运算电路,其特征在于,其中该浮点数乘法模块更包括一加法运算单元,用以接收该第一数值数据的多个指数比特及该第二数值数据的多个指数比特,并根据该第一数值数据的该些指数比特及该第二数值数据的该些指数比特执行加法运算。
7.如权利要求1所述的人工智能运算电路,其特征在于,其中该浮点数乘法模块更包括一异或运算单元,用以接收该第一数值数据的一符号比特及该第二数值数据的一符号比特,并根据该第一数值数据的该符号比特及该第二数值数据的该符号比特执行异或运算。
8.如权利要求1所述的人工智能运算电路,其特征在于,其中该浮点数加法模块更包括一第五选择单元及一第六选择单元,该第五选择单元的一第一输入端用以接收来自该储存模块的该第一数值数据与该第二数值数据的一乘积,该第五选择单元的一第二输入端用以接收来自该储存模块的一积项和值,该第六选择单元的一第一输入端用以接收来自该储存模块的该第一数值数据与该第二数值数据的该乘积的多个尾数比特,该第六选择单元的一第二输入端用以接收来自该储存模块的该积项和值的多个尾数比特;
其中当该第一数值数据与该第二数值数据为该整数格式且该加法运算电路被配置为用以执行积项和运算时,该第五选择单元及该第六选择单元受控于一控制单元选择该些第一输入端的输入作为输出至该加法运算单元,当该第一数值数据与该第二数值数据为该浮点数格式且该加法运算电路被配置为用以执行积项和运算时,该第五选择单元及该第六选择单元受控于该控制单元选择该些第二输入端的输入作为输出至该加法运算单元。
9.如权利要求8所述的人工智能运算电路,其特征在于,其中当该第一数值数据与该第二数值数据为该整数格式且该加法运算电路被配置为用以执行积项和运算时,该加法运算单元根据该第一数值数据与该第二数值数据的该乘积及该积项和值执行整数加法运算,当该第一数值数据与该第二数值数据为该浮点数格式且该加法运算电路被配置为用以执行积项和运算时,该加法运算单元根据该第一数值数据与该第二数值数据的该乘积的该些尾数比特及该积项和值的该些尾数比特执行浮点数数加法运算。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011480407.0A CN114637488A (zh) | 2020-12-15 | 2020-12-15 | 人工智能运算电路 |
US17/543,492 US20220188074A1 (en) | 2020-12-15 | 2021-12-06 | Ai calculation circuit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011480407.0A CN114637488A (zh) | 2020-12-15 | 2020-12-15 | 人工智能运算电路 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114637488A true CN114637488A (zh) | 2022-06-17 |
Family
ID=81941422
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011480407.0A Pending CN114637488A (zh) | 2020-12-15 | 2020-12-15 | 人工智能运算电路 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220188074A1 (zh) |
CN (1) | CN114637488A (zh) |
-
2020
- 2020-12-15 CN CN202011480407.0A patent/CN114637488A/zh active Pending
-
2021
- 2021-12-06 US US17/543,492 patent/US20220188074A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220188074A1 (en) | 2022-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4080351A1 (en) | Arithmetic logic unit, and floating-point number multiplication calculation method and device | |
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 | |
US20210349692A1 (en) | Multiplier and multiplication method | |
US10338889B2 (en) | Apparatus and method for controlling rounding when performing a floating point operation | |
US6895423B2 (en) | Apparatus and method of performing product-sum operation | |
US20170293471A1 (en) | Arithmetic units and related converters | |
CN112241291A (zh) | 用于指数函数实施的浮点单元 | |
CN112130803A (zh) | 具有正确舍入的浮点点积运算器 | |
US5260889A (en) | Computation of sticky-bit in parallel with partial products in a floating point multiplier unit | |
KR20170138143A (ko) | 단일 곱셈-누산 방법 및 장치 | |
CN112835551B (zh) | 用于处理单元的数据处理方法、电子设备和计算机可读存储介质 | |
CN112527239B (zh) | 一种浮点数据处理方法及装置 | |
CN112711441A (zh) | 用于转换数据类型的转换器、芯片、电子设备及其方法 | |
US6990505B2 (en) | Method/apparatus for conversion of higher order bits of 64-bit integer to floating point using 53-bit adder hardware | |
CN113126954A (zh) | 浮点数乘法计算的方法、装置和算术逻辑单元 | |
CN113377334B (zh) | 一种浮点数据处理方法、装置及存储介质 | |
CN114637488A (zh) | 人工智能运算电路 | |
CN116974512A (zh) | 浮点运算装置、矢量处理装置、处理器及电子设备 | |
CN112711440A (zh) | 用于转换数据类型的转换器、芯片、电子设备及其方法 | |
EP3647939A1 (en) | Arithmetic processing apparatus and controlling method therefor | |
CN114371827A (zh) | 一种高性能浮点加法器的设计方法 | |
US20230289141A1 (en) | Operation unit, floating-point number calculation method and apparatus, chip, and computing device | |
CN112130804B (zh) | 具有正确舍入的混合精度浮点数的融合乘加运算器 | |
US11586701B2 (en) | Low-power adder circuit | |
JP3137131B2 (ja) | 浮動小数点乗算器及び乗算方法 |
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 |