CN112740171A - 乘法和累加电路 - Google Patents
乘法和累加电路 Download PDFInfo
- Publication number
- CN112740171A CN112740171A CN201980061815.1A CN201980061815A CN112740171A CN 112740171 A CN112740171 A CN 112740171A CN 201980061815 A CN201980061815 A CN 201980061815A CN 112740171 A CN112740171 A CN 112740171A
- Authority
- CN
- China
- Prior art keywords
- exponent
- circuit
- output
- mantissa
- point
- 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
Links
- 238000006243 chemical reaction Methods 0.000 claims abstract description 58
- 238000009825 accumulation Methods 0.000 claims abstract description 40
- 238000000034 method Methods 0.000 claims abstract description 40
- 238000013528 artificial neural network Methods 0.000 claims description 15
- 238000011084 recovery Methods 0.000 claims description 8
- 238000003491 array Methods 0.000 claims description 4
- 230000004913 activation Effects 0.000 description 42
- 238000001994 activation Methods 0.000 description 42
- 230000035508 accumulation Effects 0.000 description 30
- 230000008569 process Effects 0.000 description 11
- 238000007792 addition Methods 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 238000013139 quantization Methods 0.000 description 3
- 239000011541 reaction mixture Substances 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012544 monitoring process 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/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
-
- 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
- G06F7/49915—Mantissa overflow or underflow in handling floating-point numbers
-
- 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
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
Abstract
用于将浮点操作数相乘的电路和方法。指数加法器电路将第一指数和第二指数相加并产生输出指数。尾数乘法器电路将第一尾数和第二尾数相乘并产生输出尾数。第一转换电路将输出指数和输出尾数转换为定点数。累加器电路将累加寄存器的内容和定点数相加为累加值,并将累加值存储在累加寄存器中。
Description
技术领域
本公开总体上涉及乘法和累加(MAC)电路。
背景技术
神经网络是计算密集型应用。一些大型神经网络,例如VGG-16卷积神经网络(CNN),需要30Gflops才能对单个图像进行图像分类。计算的很大一部分用于乘法和累加运算。例如,乘法和累加运算用于计算点积和标量积。
硬件加速器已被用来减少计算时间。示例硬件加速器包括专用集成电路(ASIC),现场可编程门阵列(FPGA)和专用处理器,例如图形处理单元(GPU)。尽管硬件加速器提供的性能改进相当可观,但是功耗和数据带宽要求的增加也是相当大。权重和输入激活(inputactivation)通常被存储为32位单精度浮点值,并且硬件加速器对32位操作数执行MAC运算。
已经提出了许多用于减少神经网络的计算要求的方法。在一些方法中,用于表示权重和输入激活的位数减少了,这减少了计算和带宽需求。但是,这些方法可能需要层特定的体系结构和/或特定的训练过程。一些先前的方法在复杂的分类任务中也可能表现不佳。
发明内容
所公开的电路装置包括指数加法器电路,该指数加法器电路被配置为将第一指数和第二指数相加并产生输出指数。尾数乘法器电路被配置为将第一尾数和第二尾数相乘并产生输出尾数。第一转换电路耦接到指数加法器电路和尾数乘法器电路的输出端。转换电路被配置为将输出指数和输出尾数转换为定点数。该电路装置还包括累加寄存器和累加器电路。累加器电路耦接到转换电路和累加寄存器。累加器电路被配置为将累加寄存器的内容和定点数相加为累加值,并将累加值存储在累加寄存器中。
所公开的方法包括分别将第一共享指数和第二共享指数存储在第一和第二共享指数寄存器中。该方法将第一指数和第二指数相加并产生输出指数。该方法还将第一尾数和第二尾数相乘并产生输出尾数。将累加寄存器的内容和基于输出指数和输出尾数的值相加为累加值。累加值存储在累加寄存器中,并且基于第一共享指数、第二共享指数和累加值的指数,将累加值的指数更新为扩展指数。
通过考虑以下的详细描述和权利要求,将认识到其他特征。
附图简述
通过阅读以下详细说明并参考附图,电路和方法的各个方面和特征将变得明显,在附图中:
图1示出了MAC电路,其中,乘法器对浮点值进行运算,而累加器对定点值进行运算;
图2示出了对输入操作数进行运算的MAC电路,该输入操作数中已通过从浮点权重值和输入激活值中分解出共享指数而减小了位宽;
图3示出了目标可编程集成电路上的MAC电路的阵列或阵列的一部分的示例性实施方案,该目标可编程集成电路具有实现浮点乘法器和转换电路的可编程逻辑电路、实现部分累加的单指令多数据(SIMD)数字信号处理器(DSP)电路、以及实现加法器电路的另外的可编程逻辑电路;
图4示出了目标可编程集成电路上的MAC电路的阵列或阵列的一部分的示例性实施方案,该目标可编程集成电路具有实现浮点乘法器和转换电路的可编程逻辑电路、实现部分累加的单指令多数据(SIMD)数字信号处理器(DSP)电路、和实现加法器电路的另外的可编程逻辑电路;
图5示出了对输入操作数进行运算的MAC电路,该输入操作数中已通过从浮点权重值和输入激活值中分解出共享指数而减小了位宽;
图6示出了一种电路装置,其中一部分指数已从MAC电路中的浮点操作数中分解出来,并且将尾数相乘的电路被实现为执行若干个小位宽乘法的大位乘法器;
图7示出了通过对操作数进行量化来减小操作数的位宽并通过MAC电路执行乘法和累加运算的过程的流程图;和
图8示出了可以在其上实现所公开的电路和过程的可编程集成电路(IC)。
具体实施方式
在下面的描述中,阐述了许多具体细节以描述在此提出的具体示例。然而,对于本领域的技术人员明显的是,可以在不具有以下给出的所有具体细节的情况下实践一个或多个其他示例和/或这些示例的变型。在其他情况下,未详细描述众所周知的特征,以免使本文示例的描述不清楚。为了便于说明,在不同的图中可以使用相同的附图标记指代相同的单元或相同单元的其他实例。
所公开的方法执行低精度运算,而不需要对网络体系结构进行特殊训练或修改。通过诸如执行浮点乘法和定点加法的MAC电路之类的特征的组合和/或对MAC电路的浮点输入值的量化,可以实现小位宽计算。在一种减少MAC电路中操作数的位宽的方法中,使用浮点乘法执行乘法运算,并使用定点加法执行加法。在操作数的浮点表示中,指数以使得指数始终为正的一定量被偏移。例如,在浮点表示中,1位表示符号,NE=表示指数的位数,NM=表示尾数的位数,并且该指数被偏移2NE-1-1。这个格式指示一个隐藏位,使得每个浮点数的值等于(-1)S*(1.M*2E-bias),其中S是符号的值,E是指数的值,M是尾数的值。
在另一个特征中,通过对操作数进行量化来减小浮点操作数的位宽。例如,从可包括一组权重和输入激活的操作数中分解出(factor-out)共享指数。例如,为权重和输入激活产生共享指数可以将用于将表示操作数的位数减少到1个符号位、3个指数位和3个尾数位。由此可以将MAC电路中的乘法器减小为小位宽乘法器。可替换地,可以使用一个大位宽乘法器来一次执行若干个小位宽乘法。例如,乘法器可以通过现场可编程门阵列(FPGA)中的查找表廉价地实现。可以使用浮点值或定点运算来执行MAC电路内的累加。
图1示出了MAC电路100,其中,乘法器对浮点值进行运算,而累加器对定点值进行运算。为了克服与浮点加法器实现方案中的大量逻辑级别和流水线相关联的限制,在一种方法中,使用浮点乘法器执行乘法,将乘法器的输出转换为定点值,并通过使用定点加法执行累加,并可以选择将最终结果转换回所需的格式。
在示例性应用中,MAC电路100可以是在神经网络中使用的MAC电路的阵列(未示出)中的MAC电路的一个实例。在寄存器102中提供输入浮点权重值,并且在寄存器104中提供输入浮点输入激活值。权重值和输入激活值被输入到浮点乘法器电路106,浮点乘法器电路106包括XOR电路108、加法器电路110、和乘法器电路112。
每个浮点值的一位指示符号(“符号位”),一组位表示指数(“指数位”),并且另一组位表示尾数(“尾数位”)。权重操作数和输入激活操作数的符号位被输入到XOR电路108,指数位被输入到加法器电路110,并且尾数位被输入到乘法器电路112。
浮点到定点转换电路114输入来自XOR电路108的输出符号位,来自加法器电路110的结果指数,以及来自乘法器电路112的乘积。转换电路将由浮点乘法器输出的符号位、指数位和尾数位表示的浮点值转换为定点值。累加器电路116将来自转换电路114的定点值与存储在寄存器118中的累加值相加,然后用新的值更新累加寄存器。
在示例性应用中,一旦一组权重值和输入激活值已被相乘并累加,则定点到浮点转换电路120可被启用以从累加寄存器118读取结果并将该定点值转换为浮点值。例如,输出值可以是神经网络中下一层的输入值。
图2示出了对输入操作数进行运算的MAC电路200,该输入操作数中已通过从浮点权重值和输入激活值中分解出共享指数而减小了位宽。共享指数可以恢复到最终的累加值。
在示例性应用中,MAC电路200可以是在神经网络中使用的MAC电路的阵列(未示出)中的MAC电路的一个实例。在寄存器102中提供输入浮点权重值,并且在寄存器104中提供输入浮点输入激活值。每个输入权重值和输入激活值是原先的权重值和原先的输入激活值的量化版本,其中共享指数已被分解出。权重值的共享指数可以存储在寄存器202中,输入激活值的共享指数可以存储在寄存器204中。权重操作数和输入激活操作数的符号位被输入到XOR电路108,指数位输入到加法器电路110,以及尾数位输入到乘法器电路112。
浮点累加或定点累加都可以用于累加来自XOR电路108、加法器电路110和乘法器电路112的浮点结果。示例性MAC电路200执行定点累加,并且包括浮点到定点转换电路114以将浮点值转换为定点值。注意,涉及到浮点累加的实现方案在图5中示出。
累加器电路116将来自转换电路114的定点值与存储在寄存器118中的累加值相加,然后用新的值更新累加寄存器。
一旦一组权重值和输入激活值已被相乘并累加,则定点至浮点转换电路120就可以启用,以从累加寄存器118读取结果并将定点值转换为浮点值。指数恢复电路206输入来自转换电路120的浮点结果值,并恢复结果值的指数以包括来自共享指数寄存器202和204的共享指数。例如,来自指数恢复电路206的输出值可以是神经网络中下一层的输入值。
图3示出了目标可编程集成电路上的MAC电路300的阵列或阵列的一部分的示例性实施方案,该目标可编程集成电路具有实现浮点乘法器和转换电路的可编程逻辑电路、单指令多数据(SIMD)数字信号处理器(DSP)电路、以及实现加法器电路和累加的另外的可编程逻辑电路。
浮点乘法电路106,转换电路306、308、310、312、314、316、318和320,SIMD DSP电路302和304,以及加法器电路324、326和328可以实现MAC电路的阵列或阵列的一部分。SIMDDSP电路302可配置为对不同大小的操作数执行各种算术功能。SIMD DSP电路的示例实现方案是在Inc.的现场可编程门阵列(FPGA)中找到的DSP48E1片。
在图3的示例性实施方案中,每个SIMD DSP电路302和304被配置为四路12位加法器。SIMD DSP电路302累加来自浮点到定点转换电路306、308、310和312的定点操作数。SIMDDSP电路304累加来自浮点到定点转换电路314、316、318的定点操作数。从而SIMD DSP电路并行执行多个MAC的累加功能。示例性的XILINX SIMD电路也可以在双路24位模式下实现加法器。
在示例性配置中,SIMD DSP电路302将转换器306和308提供的值相加,并且并行地将转换器310和312提供的值相加,从而并行地产生两个输出值。同样,SIMD DSP电路304将转换器314和316提供的值相加,并且并行地将转换器318和320提供的值相加,从而并行地产生两个输出值。来自SIMD DSP电路302的两个输出值被输入到加法器电路324,其产生一个值,并且来自SIMD DSP电路304的两个输出值被输入到加法器电路326,其产生一个值。上述加法器电路输出的值被输入到加法器电路328,其产生由转换器306、308、310、312、314、316、318和320输出的值的最终总和。
图4示出了目标可编程集成电路上的MAC电路400的阵列或阵列的一部分的示例性实施方案,该目标可编程集成电路具有实现浮点乘法器和转换电路的可编程逻辑电路、实现部分累加的单指令多数据(SIMD)数字信号处理器(DSP)电路、和实现加法器电路的其他可编程逻辑电路。图3的加法器电路324和326由被配置为双路24位加法器的SIMD DSP电路402代替。
在示例性配置中,SIMD DSP电路302将转换器306和308提供的值相加,并且并行地将转换器310和312提供的值相加,从而并行地产生两个输出值。同样,SIMD DSP电路304将转换器314和316提供的值相加,并且并行地将转换器318和320提供的值相加,从而并行地产生两个输出值。来自SIMD DSP电路302的两个输出值和来自SIMD DSP电路304的两个输出值被输入到SIMD DSP电路402。SIMD DSP电路402将由SIMD DSP电路302提供的两个值相加,并且并行地将由SIMD DSP电路304提供的值相加,从而并行地产生两个输出值。由SIMD DSP电路402输出的值被输入到加法器电路328,加法器电路328产生由转换器306、308、310、312、314、316、318和320输出的值的最终总和。
图5示出了对输入操作数进行运算的MAC电路500,输入操作数已被通过从浮点权重值和输入激活值中分解出共享指数而减小了位宽。共享指数可以恢复到最终的累加值。
在示例性应用中,MAC电路500可以是在神经网络中使用的MAC电路的阵列(未示出)中的MAC电路的一个实例。在寄存器102中提供输入浮点权重值,并且在寄存器104中提供输入浮点输入激活值。每个输入权重值和输入激活值是原先的权重值和原先的输入激活值的量化版本,其中共享指数已被分解出。权重值的共享指数可以存储在寄存器202中,输入激活值的共享指数可以存储在寄存器204中。权重操作数和输入激活操作数的符号位被输入到XOR电路108,指数位被输入到加法器电路110,以及尾数位被输入到乘法器电路112。
累加器电路502对来自XOR电路108、加法器电路110、和乘法器电路112的浮点值以及被存储在寄存器504中的累加值进行浮点累加,然后用新的值更新累加寄存器。
一旦一组权重值和输入激活值已被相乘并累加,则可以使得指数恢复电路206被启用以从累加寄存器504输入浮点结果值,并恢复结果值的指数以包括来自共享指数寄存器202和204的共享指数。例如,来自指数恢复电路206的输出值可以是神经网络中下一层的输入值。
图6示出了电路装置600,其中指数的一部分已从MAC电路中的浮点操作数中被分解出来,并且进行尾数相乘的电路被实现为执行若干个低位宽乘法的大位乘法器。存储电路602存储多个浮点被乘数(操作数),例如权重,而存储电路604存储多个浮点乘数(操作数),例如输入激活。例如,存储电路可以是寄存器组或随机存取存储器(RAM)。
操作数格式化电路606被配置为输入多个被乘数的尾数并将该尾数组合成单个被乘数,其可以被称为多被乘数操作数。多被乘数操作数存储在寄存器608中。操作数格式化电路还被配置为输入多个乘数的尾数,并将这些乘数组合为单个乘数,其可以被称为多乘数操作数。多乘数操作数存储在寄存器610中。
示例性的多被乘数操作数和多乘数操作数分别在寄存器608和610中示出。多被乘数操作数和多乘数操作数各自包括两个尾数,每个尾数被表示为“1.zzz”。该符号表示4位值,其中插入了前导位值1,并且zzz表示尾数的位值,该尾数位于二进制点(binary point)之后并且由操作数格式器电路606提取。寄存器608中的尾数由框612和614指示,寄存器610中的尾数由虚线框616和618表示。插入位值0用于在尾数之间进行填充,以允许从乘法器电路620的输出中提取乘积。
乘法器电路620被配置为将寄存器608中的多被乘数操作数与寄存器610中的多乘数操作数相乘,并将结果值存储在寄存器622中。由于多被乘数操作数具有两个尾数,并且多乘数操作数具有两个尾数,来自乘法器电路620的输出包括四个乘积,其可以被称为“尾数乘积”。权重可以表示为wi,而输入激活可以表示为xi。权重的尾数可以分别为wi(m),输入激活的尾数可以表示为xi(m)。由框618和616所指示的权重尾数可以分别为w1(m)和w2(m)。由框614和612所指示的输入激活尾数可以分别为x1(m)和x2(m)。乘法器电路产生以下的尾数乘积:
w1(m)*x1(m)=mm.mmmmmm
x1(m)*w2(m)=nn.nnnnnn
x2(m)*w1(m)=pp.pppppp
w2(m)*x2(m)=qq.qqqqqq
它们在寄存器622中示出。每个尾数乘积的二进制点跟随两个最高有效位,并且为了说明的目的被包括在其中。
尽管示出了四个尾数乘积,但是可以认识到,有用的乘积取决于应用。例如,在某些应用中,少于全部四个乘积可能是有用的。
对于每个有用的尾数乘积,提供电路624的实例以处理浮点操作数的指数,执行累加,并将共享指数的值恢复到累加值。因此,如果通过乘法器电路620产生四个尾数乘积并且所有四个尾数乘积在该应用中都是有用的,则提供电路624的四个实例。
电路624的每个实例包括加法器电路626,该加法器电路626输入与产生尾数乘积的尾数相关联的浮点操作数的指数。浮点操作数的指数被表示为wi(e)和xj(e)。因此,对于由wi(m)*xj(m)产生的尾数乘积,由操作数格式化电路606提取并被输入到加法器电路实例的指数为wi(e)和xj(e)。加法器电路626的输出(相加的指数)被输入到左移位器电路628,其将寄存器622提供的尾数乘积之一左移由相加的指数所指示的位数。将位值0放置到左移位器电路的输出的前面,如级联电路630所示。附加位是从级联电路630输出的值中的最高有效位。
操作数格式化器电路606还路由与从其产生尾数乘积的尾数相关联的浮点操作数的符号位。浮点操作数的符号位被表示为wi(s)和xj(s)。因此,对于由wi(m)*xj(m)产生的的尾数乘积,由操作数格式化电路606提取并输入到加法器电路实例的符号位是wi(s)和xj(s)。符号位被输入到XOR电路632。复制电路634复制由XOR电路632输出的该一位的值,并输出n位的值,其中n是级联电路630的输出的位宽。来自复制电路634的n位的值和来自级联电路的n位的值被输入到XOR电路636,XOR电路636输出wi*xj的浮点积的定点表示。
累加器电路638将来自XOR电路636的输出与保持在累加寄存器640中的值相加,并且将从XOR电路632输出的位作为进位位输入到累加器638。当符号位的乘积为0(XOR电路632的输出)时,进位为0,并且XOR电路636输出零向量,到累加器的输入实际上与级联电路630的输出相同,并且累加器电路执行加法。当符号位的乘积为1(XOR电路632的输出)时,累加器电路执行减法。XOR电路636和来自XOR电路632的进位通过翻转串联电路630的输出并将进位(+1)作为输入提供给累加器电路,从而能够实现2的补码减法。累加器电路将结果存储回累加寄存器中。一旦完成所有期望的乘法和累加,定点到浮点转换电路642就将累加的定点值结果转换为浮点值,该浮点值被存储在寄存器644中。
加法器电路646将量化的权重的共享指数与量化的输入激活的共享指数相加,并且该结果值由加法器电路648加到寄存器644中的指数中。恢复的指数连同来自寄存器644中的符号位和尾数一起被存储在寄存器650中。
图7示出了通过对操作数进行量化来减小操作数的位宽,并且通过MAC电路执行乘法和累加运算的过程的流程图。权重和输入激活是在以下讨论中其位宽被减小的操作数。
在框702,该过程确定一组权重(诸如在神经网络的一层中使用的一组权重)的最大绝对值wmax。wmax,的绝对值将确定将在数值表示中使用的最大指数(以2为底)。在框704处,该过程确定一组输入激活(诸如在神经网络的一层中使用的一组输入激活)的最大绝对值xmax。例如,通过使用一小部分训练数据集或合成图像作为输入来注册给定层的激活后,即可找到输入激活的最大绝对值。xmax的绝对值将确定将在数值表示中使用的最大指数(以2为底)。
在框706,该过程为a选择一个值,该值是将为每个权重和输入激活的指数分配的位数。α的值确定权重和输入激活的范围,并被锚定到由wmax和xmax限定的最大指数。例如,如果wmax=-0.6,则最大指数将为-1。因此,能被表示的2的最大幂是2-1=0.5。如果α=2,则2的幂的22=4个不同的绝对值可以用以下量化值表示:2-4、2-3、2-2和2-1。一旦知道最小的指数,该值就可以用作该层的共享指数。对于每个权重,仅需要对全指数和共享指数的差进行编码,并且对于每个输入激活,仅需要对全指数和共享指数的差进行编码。
在框708,该过程选择β,β是用于表示权重和输入激活的尾数的位数。位数决定了每个可表示的2的幂的比例因子。换句话说,β确定量化的权重和输入激活的精度。例如,2位的尾数将能够表示比例因子1、1.25、1.5和1.75。像在标准浮点表示法中一样,比例因子的值为隐式前导值加上以尾数表示的值(其对应于全分数无符号的定点数)。
注意,用于α、β和共享指数的值,对于权重与对于输入激活,可能是不同的。
在框710和712,未量化的权重和输入激活被转换为量化值。将权重和输入激活映射到可表示为量化值的最接近的值。如果绝对值略低于可表示的最小非零绝对值,则可以将该值映射为零值(可以通过研究以下提供的算法来查看此规则的细节)。如果权重或输入激活超过可表示的最大绝对值,则可以将该值映射到该最大值。注意,与标准浮点表示相反,所公开的量化方法避免了许多特殊情况的表示,例如非数字、无穷大和次正规数(sub-normal number)。支持的唯一例外是值0,它可以用以下两种方式之一表示:1)作为特殊情况,当所有指数位和尾数位均为0时表示该值,与符号位无关;或2)使用额外的零位,结合可变长度编码,其可用于压缩稀疏层。
下面的示例1中显示的算法将进一步描述用于转换给定层的权重的过程:
例1
例1的算法可以通过将xmax替换为wmax而被修改为转换输入激活。
在框714,存储量化的权重的共享指数和量化的输入激活的共享指数,从而可以将由乘法和累加产生的最终值恢复到适当的大小。在框716,MAC电路使用量化的操作数执行乘法和累加运算,并且在框718,更新结果的指数,例如,如图2、5和6的电路所示和所述。
图8示出了其上可以实现所公开的电路和过程的可编程集成电路(IC)800。可编程IC也可以被称为片上系统(SOC),其包括现场可编程门阵列逻辑(FPGA)以及其他可编程资源。FPGA逻辑可以包括在阵列中的几种不同类型的可编程逻辑块。例如,图8示出了可编程IC 800,其包括大量不同的可编程块,这些可编程块包括多千兆位收发器(MGT)801、可配置逻辑块(CLB)802、随机存取存储器块(BRAM)803、输入/输出块(IOB)804、配置和时钟逻辑(CONFIG/CLOCKS)805、数字信号处理块(DSP)806、专用输入/输出块(I/O)807(例如,时钟端口)、以及其他可编程逻辑808,例如数字时钟管理器、模拟-数字转换器、系统监视逻辑等。一些具有FPGA逻辑的可编程IC还包括专用处理器块(PROC)810以及内部和外部重新配置端口(未示出)。
在一些FPGA逻辑中,每个可编程块包括可编程互连单元(INT)811,其具有到每个相邻块中的对应互连单元和来自每个相邻块中的对应互连单元的标准化连接。因此,可编程互连单元合在一起实现了用于所示FPGA逻辑的可编程互连结构。可编程互连单元INT811还包括去往和来自同一块内的可编程逻辑单元的连接,如图8顶部包括的示例所示。
例如,CLB 802可以包括可被编程以实现用户逻辑的可配置逻辑单元CLE 812,以及单个可编程互连单元INT 811。BRAM 803除了包括一个或多个可编程互连单元以外,还可以包括BRAM逻辑单元(BRL)813。通常,在块中所包括的互连单元的数量取决于块的高度。所示的BRAM块具有与五个CLB相同的高度,但是也可以使用其他数量(例如四个)。除了适当数量的可编程互连单元之外,DSP块806还可以包括DSP逻辑单元(DSPL)814。除了可编程互连单元INT 811的一个实例之外,IOB 804还可以包括例如输入/输出逻辑单元(IOL)815的两个实例。本领域技术人员将清楚,连接至例如I/O逻辑单元815的实际的I/O焊盘通过使用层叠在各个所示逻辑块上方的金属来制造,并且通常不限于输入/输出逻辑单元815的区域。
靠近管芯中心的柱状区域(在图8中以阴影示出)用于配置、时钟和其他控制逻辑。从该列延伸的水平区域809用于在可编程IC的整个宽度上分配时钟和配置信号。注意,对“列”和“水平”区域的引用是相对于以纵向方向查看图形。
一些利用图8所示的架构的可编程IC包括附加的逻辑块,这些逻辑块破坏了构成可编程IC很大一部分的规则柱状结构。附加逻辑块可以是可编程块和/或专用逻辑。例如,图8中所示的处理器块PROC 810跨越几列CLB和BRAM。
注意,图8仅旨在示出示例性可编程IC架构。列中的逻辑块的数量、列的相对宽度、列的数量和顺序、列中包括的逻辑块的类型、逻辑块的相对大小以及图8的顶部所包括的互连/逻辑实现方案都仅是示例性的。例如,在实际的可编程IC中,无论CLB出现在何处,通常都包括一个以上的相邻列CLB,以促进用户逻辑的有效实现。
所公开的电路装置还可以包括:第二转换电路,其被配置为将来自累加寄存器的定点输出转换为浮点输出;共享指数寄存器,其被配置为存储第一共享指数和第二共享指数;以及指数恢复电路,其被配置为基于第一共享指数、第二共享指数和浮点输出的指数将浮点输出的指数更新为扩展指数。
所公开的电路装置还可以包括被耦接到累加寄存器的输出端的第二转换电路。第二转换电路可以被配置为将来自累加寄存器的定点值转换为浮点值。
所公开的电路装置还可以包括:指数加法器电路的多个实例、尾数乘法器电路的多个实例、以及第一转换电路的多个实例。累加器电路可以耦接到第一转换电路的多个实例,并且可以包括单指令多数据加法器电路,单指令多数据加法器电路被配置为将来自多个第一转换电路中的第一对第一转换电路的第一对操作数进行相加,并且同时将来自多个转换电路中的第二对转换电路的第二对操作数进行相加。
所公开的电路装置还可以包括神经网络。该神经网络可以包括乘法和累加(MAC)电路阵列,并且每个MAC电路可以包括指数加法器电路、尾数乘法器电路、第一转换电路、累加寄存器和累加器电路的各自实例。
所公开的电路装置还可以包括操作数格式化电路,其被配置为将两个或更多个浮点被乘数组合成多被乘数操作数,并且将两个或更多个浮点乘数组合成多乘数操作数。尾数乘法器电路可以被配置为将多被乘数操作数与多乘数操作数相乘,并输出具有四个或更多尾数乘积的值。所公开的电路装置还可以包括指数加法器电路的四个或更多个实例,且每一实例可被配置为将两个或更多个浮点被乘数之一的指数与两个或更多个浮点乘数之一的指数相加,并产生输出指数。所公开的电路装置还可以包括第一转换电路的四个或更多个实例,所述第一转换电路的四个或更多个实例分别耦接到指数加法器电路的实例的输出,以及分别耦接到尾数乘法器电路的实例。第一转换电路的每个实例可以被配置为将输出指数和一个尾数乘积转换为定点数。所公开的电路装置还可以包括累加寄存器的四个或更多个实例以及累加器电路的四个或更多个实例。累加器电路的每个实例可以被配置为将累加器寄存器的一个实例的内容和定点数相加为累加值,并将该累加值存储在累加寄存器的一个实例中。所公开的电路装置还可以包括第二转换电路的四个或更多个实例。第二转换电路的每个实例可以被配置为将来自累加寄存器的实例之一的定点输出转换为浮点输出。所公开的电路装置还可以包括指数恢复电路的四个或更多个实例。指数恢复电路的每个实例可以被配置为基于第一共享指数,第二共享指数和浮点输出的指数,将来自第一转换电路的一个实例的浮点数输出的指数更新为扩展指数。
所公开的电路装置还可以包括其中第一共享指数是两个或更多个浮点被乘数的共享指数的电路。
所公开的电路装置还可以包括其中第二共享指数是两个或更多个浮点乘数的共享指数的电路。
所公开的电路装置还可以包括被配置为将第一共享指数和第二共享指数相加的共享指数加法器电路。
所公开的电路装置还可以包括被配置为将第一共享指数和第二共享指数相加的共享指数加法器电路。
所公开的电路装置还可以包括其中神经网络包括乘法和累加(MAC)电路阵列的电路,并且每个MAC电路包括指数加法器电路、尾数乘法器电路、累加寄存器、累加器电路、第一和第二共享指数寄存器和指数恢复电路的各自实例。
所公开的方法还可以包括由操作数格式化电路将两个或两个以上浮点被乘数组合成多被乘数操作数;由操作数格式化电路将两个或更多个浮点乘数组合成多乘数操作数。乘法可以包括将多被乘数操作数乘以多乘数操作数,并输出具有四个或更多尾数乘积的值。所公开的方法还可以包括:由指数加法器电路的四个或更多实例的每个实例将两个或更多个浮点被乘数之一的指数和两个或更多个浮点乘数之一的指数相加,以及产生输出指数。所公开的方法还可以包括:由第一转换电路的四个或更多个实例的每个实例,将输出指数和一个尾数乘积转换成定点数,并且由累加器电路的四个或更多个实例,将累加器寄存器的四个或更多实例之一的内容与定点数相加成累加值,并且将该累加值存储在累加寄存器的一个实例中。所公开的方法还可以包括:由第二转换电路的四个或更多个实例,将来自累加寄存器的一个实例的定点输出转换为浮点输出,以及由指数恢复电路的四个或更多个实例,基于第一共享指数、第二共享指数和浮点输出的指数将来自第二转换电路的一个实例的浮点输出的指数更新为扩展指数。
所公开的方法还可以包括第一共享指数是两个或更多个浮点被乘数的共享指数。
所公开的方法还可以包括第二共享指数是两个或更多个浮点乘数的共享指数。
所公开的方法还可以包括由共享指数加法器电路将第一共享指数和第二共享指数相加。
所公开的方法还可以包括由共享指数加法器电路将第一共享指数和第二共享指数相加。
所公开的方法还可以包括由指数恢复电路的每个实例将浮点输出的指数与共享指数加法器电路的输出相加。
所公开的方法还可以包括由第一转换电路将输出指数和输出尾数转换为定点值,其中,定点值是基于输出指数和输出尾数的值,以及由第二转换电路将来自累加寄存器的定点值转换为浮点值。
尽管在某些情况下可能在各个附图中描述了多个方面和多个特征,但是应当理解,也可以将一个附图中的特征与另一附图中的特征进行组合,即使这种组合未明确示出或未明确描述为组合。
所述电路和方法被认为适用于用于执行乘法和累加运算的各种系统。通过考虑说明书,其他方面和特征对于本领域技术人员也将是明显的。所述电路和方法可以被实现为:专用集成电路(ASIC)或可编程逻辑设备上的逻辑。说明书和附图仅被认为是示例,本发明的真实范围由所附权利要求指示。
Claims (12)
1.一种电路装置,其特征在于,所述电路装置包括:
指数加法器电路,其被配置为将第一指数和第二指数相加并产生输出指数;
尾数乘法器电路,其被配置为将第一尾数和第二尾数相乘并产生输出尾数;
第一转换电路,其耦接到所述指数加法器电路和所述尾数乘法器电路的输出端,所述第一转换电路被配置为将所述输出指数和所述输出尾数转换为定点数;
累加寄存器;和
累加器电路,其耦接到所述转换电路和所述累加寄存器,所述累加器电路被配置为将所述累加寄存器的内容和所述定点数相加为累加值,并将所述累加值存储在所述累加寄存器中。
2.根据权利要求1所述的电路装置,其特征在于,所述电路装置还包括:
第二转换电路,其被配置为将来自所述累加寄存器的定点输出转换为浮点输出;
共享指数寄存器,其被配置为存储第一共享指数和第二共享指数;和
指数恢复电路,其被配置为基于所述第一共享指数、所述第二共享指数和所述浮点输出的指数将所述浮点输出的指数更新为扩展指数。
3.根据权利要求1或2所述的电路装置,其特征在于,所述电路装置还包括第二转换电路,所述第二转换电路耦接到所述累加寄存器的输出端,所述第二转换电路被配置为将来自所述累加寄存器的定点值转换为浮点值。
4.根据权利要求1-3中的任一项所述的电路装置,其特征在于,所述电路装置还包括:
所述指数加法器电路的多个实例;
所述尾数乘法器电路的多个实例;
所述第一转换电路的多个实例;并且
其中,所述累加器电路耦接到所述第一转换电路的多个实例,并且包括单指令多数据加法器电路,所述单指令多数据加法器电路被配置为将来自多个第一转换电路中的第一对第一转换电路的第一对操作数相加,同时并行地将来自所述多个第一转换电路中的第二对第一转换电路的第二对操作数相加。
5.根据权利要求1-4中的任一项所述的电路装置,其特征在于,所述电路装置还包括神经网络,所述神经网络包括乘法和累加MAC电路的阵列,其中每个MAC电路包括所述指数加法器电路、所述尾数乘法器电路、所述第一转换电路、所述累加寄存器、和所述累加器电路的各自实例。
6.一种方法,其特征在于,所述方法包括:
将第一共享指数和第二共享指数分别存储在第一共享指数寄存器和第二共享指数寄存器中;
将第一指数和第二指数相加并产生输出指数;
将第一尾数与第二尾数相乘并产生输出尾数;
将累加寄存器的内容和基于所述输出指数和所述输出尾数的值相加为累加值;
将所述累加值存储在所述累加寄存器中;和
基于所述第一共享指数、所述第二共享指数和所述累加值的指数,将所述累加值的指数更新为扩展指数。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
由操作数格式化电路将两个或更多个浮点被乘数组合成多被乘数操作数;
由所述操作数格式化电路将两个或更多个浮点乘数组合成多乘数操作数;
其中,所述相乘包括将所述多被乘数操作数与所述多乘数操作数相乘,并输出具有四个或更多个尾数乘积的值;
通过指数加法器电路的四个或更多个实例中的每个实例,将所述两个或更多个浮点被乘数中的一个浮点被乘数的指数和所述两个或更多个浮点乘数中一个浮点乘数的指数相加,并产生输出指数;
通过第一转换电路的四个或更多个实例中的每个实例,将所述输出指数以及所述尾数乘积中的一个尾数乘积转换成定点数;
通过累加器电路的四个或更多个实例,将累加器寄存器的四个或更多个实例中的一个实例的内容和所述定点数相加为累加值,并将所述累加值存储在所述累加寄存器的实例中的一个实例中;
通过第二转换电路的四个或更多个实例,将来自所述累加寄存器的实例中的一个实例的定点输出转换为浮点输出;和
通过指数恢复电路的四个或更多个实例,基于所述第一共享指数、所述第二共享指数和所述浮点输出的指数,将来自所述第二转换电路实例中的一个实例的所述浮点输出的指数更新为扩展指数。
8.根据权利要求7所述的方法,其特征在于,所述第一共享指数是所述两个或更多个浮点被乘数的共享指数。
9.根据权利要求8所述的方法,其特征在于,所述第二共享指数是所述两个或更多个浮点乘数的共享指数。
10.根据权利要求6-9中的任一项所述的方法,其特征在于,所述方法还包括:通过共享指数加法器电路将所述第一共享指数和所述第二共享指数相加。
11.根据权利要求6-10中的任一项所述的方法,其特征在于,所述方法还包括:通过所述指数恢复电路的每个实例将所述浮点输出的指数和所述共享指数加法器电路的输出相加。
12.根据权利要求6-11中的任一项所述的方法,其特征在于,所述方法还包括:
通过第一转换电路将所述输出指数和输出尾数转换为定点值,其中,所述定点值是基于所述输出指数和所述输出尾数的值;和
通过第二转换电路将来自所述累加寄存器的定点值转换为浮点值。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/136,041 | 2018-09-19 | ||
US16/136,041 US10747502B2 (en) | 2018-09-19 | 2018-09-19 | Multiply and accumulate circuit |
PCT/US2019/049760 WO2020060769A1 (en) | 2018-09-19 | 2019-09-05 | Multiply and accumulate circuit |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112740171A true CN112740171A (zh) | 2021-04-30 |
CN112740171B CN112740171B (zh) | 2024-03-08 |
Family
ID=67998738
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980061815.1A Active CN112740171B (zh) | 2018-09-19 | 2019-09-05 | 乘法和累加电路 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10747502B2 (zh) |
EP (1) | EP3853713A1 (zh) |
JP (1) | JP7476175B2 (zh) |
KR (1) | KR20210057158A (zh) |
CN (1) | CN112740171B (zh) |
WO (1) | WO2020060769A1 (zh) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2580171B (en) * | 2018-12-21 | 2021-02-17 | Imagination Tech Ltd | Methods and systems for selecting quantisation parameters for deep neural networks using back-propagation |
US11562247B2 (en) | 2019-01-24 | 2023-01-24 | Microsoft Technology Licensing, Llc | Neural network activation compression with non-uniform mantissas |
FR3097992B1 (fr) * | 2019-06-25 | 2021-06-25 | Kalray | Opérateur d’addition et multiplication fusionnées pour nombres à virgule flottante de précision mixte réalisant un arrondi correct |
FR3097993B1 (fr) * | 2019-06-25 | 2021-10-22 | Kalray | Opérateur de produit scalaire de nombres à virgule flottante réalisant un arrondi correct |
US11615301B2 (en) * | 2019-09-03 | 2023-03-28 | Microsoft Technology Licensing, Llc | Lossless exponent and lossy mantissa weight compression for training deep neural networks |
US11704052B2 (en) | 2020-01-07 | 2023-07-18 | SK Hynix Inc. | Processing-in-memory (PIM) systems |
US20220229633A1 (en) | 2020-01-07 | 2022-07-21 | SK Hynix Inc. | Multiplication and accumulation(mac) operator and processing-in-memory (pim) device including the mac operator |
US11829760B2 (en) | 2020-01-07 | 2023-11-28 | SK Hynix Inc. | Processing-in-memory device and processing-in-memory system including the same |
US11635911B2 (en) | 2020-01-07 | 2023-04-25 | SK Hynix Inc. | Processing-in-memory (PIM) system and operating methods of the PIM system |
US11663000B2 (en) * | 2020-01-07 | 2023-05-30 | SK Hynix Inc. | Multiplication and accumulation(MAC) operator and processing-in-memory (PIM) device including the MAC operator |
US11385837B2 (en) | 2020-01-07 | 2022-07-12 | SK Hynix Inc. | Memory system |
US11847451B2 (en) | 2020-01-07 | 2023-12-19 | SK Hynix Inc. | Processing-in-memory (PIM) device for implementing a quantization scheme |
US11983508B2 (en) | 2020-01-07 | 2024-05-14 | SK Hynix Inc. | Processing-in-memory (PIM) system and operating methods of the PIM system |
US11720354B2 (en) | 2020-01-07 | 2023-08-08 | SK Hynix Inc. | Processing-in-memory (PIM) system and operating methods of the PIM system |
US11908541B2 (en) | 2020-01-07 | 2024-02-20 | SK Hynix Inc. | Processing-in-memory (PIM) systems |
US11500629B2 (en) | 2020-01-07 | 2022-11-15 | SK Hynix Inc. | Processing-in-memory (PIM) system including multiplying-and-accumulating (MAC) circuit |
TW202141290A (zh) | 2020-01-07 | 2021-11-01 | 韓商愛思開海力士有限公司 | 記憶體中處理(pim)系統和pim系統的操作方法 |
US11275562B2 (en) * | 2020-02-19 | 2022-03-15 | Micron Technology, Inc. | Bit string accumulation |
KR20210154502A (ko) * | 2020-06-12 | 2021-12-21 | 삼성전자주식회사 | 부동 소수점 연산을 수행하는 뉴럴 네트워크 장치 및 그의 동작 방법 |
CN111767025B (zh) * | 2020-08-04 | 2023-11-21 | 腾讯科技(深圳)有限公司 | 包括乘累加器的芯片、终端及浮点运算的控制方法 |
CN112558918B (zh) * | 2020-12-11 | 2022-05-27 | 北京百度网讯科技有限公司 | 用于神经网络的乘加运算方法和装置 |
WO2022178339A1 (en) * | 2021-02-21 | 2022-08-25 | Redpine Signals Inc | Floating point dot product multiplier-accumulator |
CN113138748B (zh) * | 2021-04-09 | 2023-08-29 | 广东工业大学 | 一种基于FPGA的支持8bit和16bit数据的可配置的CNN乘法累加器 |
US20210326116A1 (en) * | 2021-06-25 | 2021-10-21 | Intel Corporation | High precision decomposable dsp entity |
CN113778523B (zh) * | 2021-09-14 | 2024-04-09 | 北京升哲科技有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
WO2023068489A1 (ko) * | 2021-10-18 | 2023-04-27 | 삼성전자 주식회사 | 상이한 데이터 타입들을 지원하는 npu를 포함하는 전자 장치 및 그 제어 방법 |
CN114237550B (zh) * | 2021-11-10 | 2023-10-13 | 电子科技大学 | 一种基于Wallace树的多输入移位求和累加器 |
US20220113940A1 (en) * | 2021-12-22 | 2022-04-14 | Martin Langhammer | Systems and Methods for Structured Mixed-Precision in a Specialized Processing Block |
KR102635978B1 (ko) * | 2023-06-27 | 2024-02-13 | 주식회사 하이퍼엑셀 | 생성형 거대 언어 모델의 연산 가속을 위해 메모리대역폭 사용을 극대화하기 위한 혼합정밀도 mac 트리 구조 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4991131A (en) * | 1987-10-06 | 1991-02-05 | Industrial Technology Research Institute | Multiplication and accumulation device |
US5247471A (en) * | 1991-12-13 | 1993-09-21 | International Business Machines Corporation | Radix aligner for floating point addition and subtraction |
JPH11212768A (ja) * | 1998-01-23 | 1999-08-06 | Sanyo Electric Co Ltd | 対数値算出回路 |
US20090154334A1 (en) * | 2007-12-14 | 2009-06-18 | Electronics And Telecommunications Research Institute | Qr decomposition apparatus and method for mimo system |
CN102520906A (zh) * | 2011-12-13 | 2012-06-27 | 中国科学院自动化研究所 | 支持定浮点可重构的向量长度可配置的向量点积累加网络 |
CN105607889A (zh) * | 2015-10-29 | 2016-05-25 | 中国人民解放军国防科学技术大学 | Gpdsp共享乘法器结构的定点浮点运算部件 |
US9575725B1 (en) * | 2014-03-18 | 2017-02-21 | Altera Corporation | Specialized processing block with embedded pipelined accumulator circuitry |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3144015A1 (de) * | 1981-11-05 | 1983-05-26 | Ulrich Prof. Dr. 7500 Karlsruhe Kulisch | "schaltungsanordnung und verfahren zur bildung von skalarprodukten und summen von gleitkommazahlen mit maximaler genauigkeit" |
US4615013A (en) * | 1983-08-02 | 1986-09-30 | The Singer Company | Method and apparatus for texture generation |
JP2007079696A (ja) | 2005-09-12 | 2007-03-29 | Hitachi Kokusai Electric Inc | 浮動小数点数のベクトル演算方法 |
GB201607713D0 (en) | 2016-05-03 | 2016-06-15 | Imagination Tech Ltd | Convolutional neural network |
-
2018
- 2018-09-19 US US16/136,041 patent/US10747502B2/en active Active
-
2019
- 2019-09-05 CN CN201980061815.1A patent/CN112740171B/zh active Active
- 2019-09-05 JP JP2021514561A patent/JP7476175B2/ja active Active
- 2019-09-05 EP EP19772928.8A patent/EP3853713A1/en active Pending
- 2019-09-05 KR KR1020217011052A patent/KR20210057158A/ko not_active Application Discontinuation
- 2019-09-05 WO PCT/US2019/049760 patent/WO2020060769A1/en unknown
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4991131A (en) * | 1987-10-06 | 1991-02-05 | Industrial Technology Research Institute | Multiplication and accumulation device |
US5247471A (en) * | 1991-12-13 | 1993-09-21 | International Business Machines Corporation | Radix aligner for floating point addition and subtraction |
JPH11212768A (ja) * | 1998-01-23 | 1999-08-06 | Sanyo Electric Co Ltd | 対数値算出回路 |
US20090154334A1 (en) * | 2007-12-14 | 2009-06-18 | Electronics And Telecommunications Research Institute | Qr decomposition apparatus and method for mimo system |
CN102520906A (zh) * | 2011-12-13 | 2012-06-27 | 中国科学院自动化研究所 | 支持定浮点可重构的向量长度可配置的向量点积累加网络 |
US9575725B1 (en) * | 2014-03-18 | 2017-02-21 | Altera Corporation | Specialized processing block with embedded pipelined accumulator circuitry |
CN105607889A (zh) * | 2015-10-29 | 2016-05-25 | 中国人民解放军国防科学技术大学 | Gpdsp共享乘法器结构的定点浮点运算部件 |
Also Published As
Publication number | Publication date |
---|---|
US10747502B2 (en) | 2020-08-18 |
WO2020060769A1 (en) | 2020-03-26 |
EP3853713A1 (en) | 2021-07-28 |
JP2021536076A (ja) | 2021-12-23 |
CN112740171B (zh) | 2024-03-08 |
JP7476175B2 (ja) | 2024-04-30 |
US20200089472A1 (en) | 2020-03-19 |
KR20210057158A (ko) | 2021-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112740171B (zh) | 乘法和累加电路 | |
US6697832B1 (en) | Floating-point processor with improved intermediate result handling | |
US8463835B1 (en) | Circuit for and method of providing a floating-point adder | |
KR102153791B1 (ko) | 인공 신경망을 위한 디지털 뉴런, 인공 뉴런 및 이를 포함하는 추론 엔진 | |
US11106431B2 (en) | Apparatus and method of fast floating-point adder tree for neural networks | |
CN114341892A (zh) | 具有用于高效参数更新的降低精度参数分量的机器学习硬件 | |
Jain et al. | Design and development of efficient reversible floating point arithmetic unit | |
Mehta et al. | Implementation of single precision floating point multiplier using karatsuba algorithm | |
TW202109281A (zh) | 帶正負號多字乘法器 | |
Havaldar et al. | Design of Vedic IEEE 754 floating point multiplier | |
CN111492369B (zh) | 人工神经网络中移位权重的残差量化 | |
Verma et al. | Synthesis of floating-point addition clusters on FPGAs using carry-save arithmetic | |
CN114860193A (zh) | 一种用于计算Power函数的硬件运算电路及数据处理方法 | |
Nezhad et al. | High-speed multiplier design using multi-operand multipliers | |
Prasanna et al. | An Efficient Fused Floating-Point Dot Product Unit Using Vedic Mathematics | |
Anuhya et al. | ASIC implementation of efficient floating point multiplier | |
EP4231134A1 (en) | Method and system for calculating dot products | |
Saini et al. | Efficient implementation of pipelined double precision floating point unit on FPGA | |
Essam et al. | Design and Implementation of Low Power Posit Arithmetic Unit for Efficient Hardware Accelerators | |
Balasaraswathi et al. | IMPLEMENTATION OF FLOATING POINT FFT PROCESSOR WITH SINGLE PRECISION FOR REDUCTION IN POWER | |
Nair et al. | An asynchronous double precision floating point multiplier | |
CN116974517A (zh) | 浮点数处理方法、装置、计算机设备和处理器 | |
WO2023060287A1 (en) | Floating-point logarithmic number system scaling system for machine learning | |
Al-Khateeb | Design of an ALU for RNS Using CMOS Technology | |
Mahima et al. | Reconfigurable Rounding based Approximate Multiplier for Floating Point Numbers |
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 |