CN117178253A - 一种浮点数计算电路以及浮点数计算方法 - Google Patents
一种浮点数计算电路以及浮点数计算方法 Download PDFInfo
- Publication number
- CN117178253A CN117178253A CN202180096895.1A CN202180096895A CN117178253A CN 117178253 A CN117178253 A CN 117178253A CN 202180096895 A CN202180096895 A CN 202180096895A CN 117178253 A CN117178253 A CN 117178253A
- Authority
- CN
- China
- Prior art keywords
- mantissa
- circuit
- floating point
- point number
- split
- 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
- 238000007667 floating Methods 0.000 title claims abstract description 272
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000004364 calculation method Methods 0.000 claims description 190
- 238000012545 processing Methods 0.000 claims description 65
- 230000015654 memory Effects 0.000 claims description 37
- 238000013461 design Methods 0.000 abstract description 14
- 241001442055 Vipera berus Species 0.000 description 84
- 238000010586 diagram Methods 0.000 description 42
- 238000013473 artificial intelligence Methods 0.000 description 13
- 238000013527 convolutional neural network Methods 0.000 description 9
- 238000010276 construction Methods 0.000 description 7
- 238000012549 training Methods 0.000 description 6
- 238000011160 research Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 241000258241 Mantis Species 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
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
一种浮点数计算电路、浮点数计算方法以及计算装置,浮点数计算电路中的计算电路可以选择输出多个第一运算结果中的部分数据得到多个第一加法数据和多个第二加法数据。计算电路通过选择第一运算结果中部分数据的方式将多个位数较高的第一运算结果拆分为位数较低的多个第一加法数据和多个第二加法数据,进而,通过位宽较小的加法器将位数较低的多个第一加法数据、多个第二加法数据和多个第一运算结果做和可以得到第一尾数与第二尾数的乘积。计算第一浮点数与第二浮点数的尾数部分的乘积时所采用的加法器的位宽小,硬件设计代价低,更利于技术推广。
Description
本申请实施例涉及计算机领域,进一步涉及人工智能(artificial intelligence,AI)技术在计算机领域中的应用,尤其是一种浮点数计算电路以及浮点数计算方法。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,AI基础理论等。
卷积神经网络(convolution neural network,CNN)目前被广泛应用于多种类型的图像处理应用中,此类应用在使用浮点数(floating point,FP)16数据对模型进行网络训练时,由于FP16数据精度不足,会导致网络训练不收敛或者收敛速度慢,所以需要使用更高精度的FP32数据来保证网络训练效果。此外,在超算应用中,需要使用更高精度的FP64数据来进行数值计算。
现有的数据计算方案中,可以采用较小位数的乘法器来计算位数较大的浮点数。例如,可以通过个用于计算FP32数据的乘法器来计算FP64类型的浮点数据。网络设备通过将FP64类型的浮点数据拆分为位数较小的浮点数后做乘法运算,再通过加法器将乘法运算后的结果相加得到FP64类型的浮点数据的乘积。该种传统的计算方式中,将乘法运算后的结果相加所需要的加法器的位数大,硬件设计代价高,不利于技术推广。
发明内容
本申请实施例提供了一种浮点数计算电路以及浮点数计算方法,该浮点数计算电路可以把位数较大的浮点数拆分为位数较小的浮点数,从而,该浮点数计算电路时序开销短,硬件设计代价低,合理的利用了乘法器的计算性能。
本申请第一方面提供了一种浮点数计算电路,所述浮点数计算电路用于计算第一浮点数和第二浮点数的乘积,所述第一浮点数包括第一指数和第一尾数,所述第二浮点数包括第二指数和第二尾数,所述浮点数计算电路包括:指数处理电路和计算电路;所述指数处理电路的输出端与所述计算电路的输入端电连接;所述指数处理电路,用于根据所述第一指数和所述第二指数获取第一移位数,所述第一移位数用于表示第一拆分尾数和第二拆分尾数之间乘积的移位数,所述第一拆分尾数由所述第一尾数拆分得到,所述第二拆分尾数由所述第二尾数拆分得到;所述计算电路,用于选择输出多个第一运算结果中的部分数据得到多个第一加法数据和多个第二加法数据,根据多个所述第一加法数据、多个所述第二 加法数据和多个所述第一运算结果获取所述第一尾数与所述第二尾数的乘积,所述第一运算结果用于表示所述第一拆分尾数和所述第二拆分尾数的乘积根据所述第一移位数进行移位后得到的数据。
本申请中,浮点数计算电路中的计算电路可以选择输出多个第一运算结果中的部分数据得到多个第一加法数据和多个第二加法数据。计算电路通过选择第一运算结果中部分数据的方式将多个位数较高的第一运算结果拆分为位数较低的多个第一加法数据和多个第二加法数据,进而,通过位宽较小的加法器将位数较低的多个第一加法数据、多个第二加法数据和多个第一运算结果做和可以得到第一尾数与第二尾数的乘积。计算第一浮点数与第二浮点数的尾数部分的乘积时所采用的加法器的位宽小,硬件设计代价低,更利于技术推广。
在第一方面一种可能的实现方式中,所述计算电路包括乘法电路、加法电路和第一选择电路;所述指数处理电路的输出端与所述乘法电路的输入端电连接;所述第一选择电路的输入端与所述乘法电路的输出端电连接,所述第一选择电路的输出端与所述加法电路的输入端电连接;所述第一选择电路,用于选择输出多个所述第一运算结果中的低位数据得到多个所述第一加法数据,选择输出多个所述第一运算结果中的高位数据得到多个所述第二加法数据;所述加法电路,用于对多个所述第一加法数据和多个所述第一运算结果相加得到低位加法结果和进位数据,对所述进位数据、多个所述第二加法数据和多个所述第一运算结果相加得到高位加法结果,将所述高位加法结果和所述低位加法结果累加后得到所述第一尾数与所述第二尾数的乘积。
该种可能的实现方式中,乘法电路输出多个第一运算结果后,第一选择电路可以选择输出多个第一运算结果中的低位数据得到多个第一加法数据,选择输出多个第一运算结果中的高位数据得到多个第二加法数据。第一选择电路可以将位数较大的第一运算结果拆分成位数较小的第一加法数据和第二加法数据。进而将第一加法数据、第二加法数据分别与对应的第一运算结果做和,得到低位加法结果和高位加法结果。由于低位加法结果和高位加法结果位宽较小,所以计算低位加法结果和高位加法结果所采用的加法器位宽较小,降低了计算电路的构建成本。
在第一方面一种可能的实现方式中,所述加法电路包括第一加法器和累加器;所述第一加法器的输入端与所述第一选择电路的输出端电连接,所述第一加法器的输出端与所述累加器的输入端电连接;所述第一加法器,用于在第一计算周期对多个所述第一加法数据和多个所述第一运算结果相加得到所述低位加法结果和所述进位数据,在第二计算周期对所述进位数据、多个所述第二加法数据和多个所述第一运算结果相加得到所述高位加法结果;所述累加器,用于将所述低位加法结果和所述高位加法结果累加后得到所述第一尾数与所述第二尾数的乘积。
该种可能的实现方式中,由于FP64类型的浮点数的mantissa部分长度为53bit。因此,A_mantissa*B_mantissa计算后得到的尾数部分的总长度数为106bit。如果想在一个计算单元(PE单元)内直接完成一对FP64类型的浮点数的尾数部分的计算,adder(第一加法器)需要扩位成支持长度为106bit的数据计算的加法器,括位后的adder的面积代价和时序代 价均过高。因此,可以通过第一选择电路选择将一对FP64的mantissa的乘法拆成两个部分(part1和part2),第一加法器在第一计算周期中计算part1部分得到低位加法结果,在第二周期中计算part2得到高位加法结果。累加器将两个计算周期得到的结果累加后便得到第一尾数和第二尾数的乘积。由于低位加法结果和高位加法结果位宽较小,所以计算低位加法结果和高位加法结果所采用的加法器位宽较小,降低了浮点数计算电路的构建成本。
在第一方面一种可能的实现方式中,所述浮点数计算电路还包括拆分电路;所述拆分电路的输出端与所述指数处理电路的输入端和所述乘法电路的输入端电连接;所述拆分电路,用于将所述第一尾数拆分为所述第一拆分尾数,所述第一拆分尾数包括第一高位尾数与第一低位尾数,将所述第二尾数拆分为所述第二拆分尾数,所述第二拆分尾数包括第二高位尾数与第二低位尾数,所述第一移位数用于指示各个高位尾数的最高位与各个低位尾数的最高位之间的移位差值。
该种可能的实现方式中,本申请提供的浮点数计算电路可以把第一浮点数位数较大的尾数部分拆分为位数较小的第一高位尾数与第一低位尾数,把第二浮点数位数较大的尾数部分拆分为位数较小的第二高位尾数与第二低位尾数,从而采用较小位数的乘法器来计算拆分后的各尾数部分的乘积,降低了硬件的设计成本,合理的利用了乘法器的计算性能。
在第一方面一种可能的实现方式中,所述第一高位尾数包括第三尾数,所述第一低位尾数包括第四尾数、第五尾数、第六尾数以及第七尾数,所述第二高位尾数包括第八尾数,所述第二低位尾数包括第九尾数、第十尾数,第十一尾数以及第十二尾数。
该种可能的实现方式中,提供了对于第一尾数和第二尾数的一种具体的拆分方式,将FP64类型的浮点数的尾数部分采用该种拆分方式进行拆分后,可以使用FP32类型的乘法器来进行计算,将FP128类型的浮点数的尾数部分采用该种拆分方式进行拆分后,可以使用FP64类型的乘法器来进行计算。该种拆分方式可以实现采用较小位数的乘法器来计算第一尾数和第二尾数的乘积。降低了浮点数计算电路的构建成本,更有利于技术推广。
在第一方面一种可能的实现方式中,所述浮点数计算电路还包括存储电路;所述拆分电路的输出端与所述存储电路的输入端电连接;所述指数处理电路的输入端与所述存储电路的第一输出端电连接;所述计算电路的输入端与所述存储电路的第二输出端电连接;所述存储电路,用于存储所述第一拆分尾数、所述第二拆分尾数、所述第一指数、所述第二指数、第三移位数和第四移位数,所述第三移位数用于表示所述第一拆分尾数的移位数,所述第四移位数用于表示所述第二拆分尾数的移位数。
该种可能的实现方式提供了一种浮点数计算电路中存储临时数据的一种具体的实现方式,提升了方案的可实现性。
在第一方面一种可能的实现方式中,所述指数处理电路包括第二加法器、第二选择电路以及第三加法器;所述第二加法器的输入端与所述存储电路的第一输出端电连接,所述第二加法器的输出端与所述第三加法器的第一输入端电连接;所述第三加法器的第二输入端与所述第二选择电路的输出端电连接,所述第三加法器的输出端与所述计算电路的第一输入端电连接;所述第二加法器,用于将所述第一指数、所述第二指数、所述第三移位数和所述第四移位数相加以得到多个第二运算结果;所述第二选择电路,用于选择多个所述 第二运算结果中的最大值;所述第三加法器,用于将多个所述第二运算结果中的最大值分别与各第二运算结果相减以得到所述第一移位数。
该种可能的实现方式提供了一种指数处理电路的具体的实现形式,提升了方案的可实现性。
在第一方面一种可能的实现方式中,所述乘法电路包括乘法器和移位寄存器;所述乘法器的输入端与所述存储电路的第二输出端电连接,所述乘法器的输出端与所述移位寄存器的第一输入端电连接;所述移位寄存器的第二输入端与所述第三加法器的输出端电连接;所述移位寄存器的输出端与所述第一加法器的输入端电连接;所述乘法器用于将所述第一拆分尾数以及所述第二拆分尾数相乘得到多个第三运算结果;所述移位寄存器用于根据多个所述第一移位数对多个所述第三运算结果做移位处理得到多个所述第一运算结果。
该种可能的实现方式提供了一种乘法电路的具体的实现形式,提升了方案的可实现性。
在第一方面一种可能的实现方式中,所述浮点数计算电路还包括内存控制器;所述内存控制器的输出端与所述拆分电路的输入端电连接;所述内存控制器,用于获取所述第一浮点数和所述第二浮点数,并且向所述拆分电路发送所述第一浮点数和所述第二浮点数。
该种可能的实现方式提供了一种能够获取第一浮点数和第二浮点数的硬件结构的一种具体的实现形式,提升了方案的可实现性。
在第一方面一种可能的实现方式中,所述第一浮点数还包括第一符号位,所述第二浮点数还包括第二符号位。
本申请第二方面提供了一种浮点数计算方法,用于计算第一浮点数和第二浮点数的乘积,所述第一浮点数包括第一指数和第一尾数,所述第二浮点数包括第二指数和第二尾数,所述方法包括:根据所述第一指数和所述第二指数获取第一移位数,所述第一移位数用于表示第一拆分尾数和第二拆分尾数之间乘积的移位数,所述第一拆分尾数由所述第一尾数拆分得到,所述第二拆分尾数由所述第二尾数拆分得到;选择输出多个第一运算结果中的部分数据得到多个第一加法数据和多个第二加法数据,根据多个所述第一加法数据、多个所述第二加法数据和多个所述第一运算结果获取所述第一尾数与所述第二尾数的乘积,所述第一运算结果用于表示所述第一拆分尾数和所述第二拆分尾数的乘积根据所述第一移位数进行移位后得到的数据。
本申请提供的浮点数计算方法中,可以选择输出多个第一运算结果中的部分数据得到多个第一加法数据和多个第二加法数据。通过选择第一运算结果中部分数据的方式将多个位数较高的第一运算结果拆分为位数较低的多个第一加法数据和多个第二加法数据,进而,通过位宽较小的加法器将位数较低的多个第一加法数据、多个第二加法数据和多个第一运算结果做和可以得到第一尾数与第二尾数的乘积。计算第一浮点数与第二浮点数的尾数部分的乘积时所采用的加法器的位宽小,硬件设计代价低,更利于技术推广。
本申请中,计算第一尾数和第二尾数的乘积时,可以选择输出多个第一运算结果中的部分数据得到多个第一加法数据和多个第二加法数据。通过选择第一运算结果中部分数据的方式将多个位数较高的第一运算结果拆分为位数较低的多个第一加法数据和多个第二加法数据,进而,可以通过位宽较小的加法器将位数较低的多个第一加法数据、多个第二加 法数据和多个第一运算结果做和可以得到第一尾数与第二尾数的乘积。计算第一浮点数与第二浮点数的尾数部分的乘积时所采用的加法器的位宽小,硬件设计代价低,更利于技术推广。
在第二方面一种可能的实现方式中,所述选择输出多个第一运算结果中的部分数据得到多个第一加法数据和多个第二加法数据,根据多个所述第一加法数据、多个所述第二加法数据和多个所述第一运算结果获取所述第一尾数与所述第二尾数的乘积,包括:选择输出多个所述第一运算结果中的低位数据得到多个所述第一加法数据,选择输出多个所述第一运算结果中的高位数据得到多个所述第二加法数据;对多个所述第一加法数据和多个所述第一运算结果相加得到低位加法结果和进位数据,对所述进位数据、多个所述第二加法数据和多个所述第一运算结果相加得到高位加法结果,将所述高位加法结果和所述低位加法结果累加后得到所述第一尾数与所述第二尾数的乘积。
该种可能的实现方式中,得到多个第一运算结果后,可以选择输出多个第一运算结果中的低位数据得到多个第一加法数据,选择输出多个第一运算结果中的高位数据得到多个第二加法数据。即将位数较大的第一运算结果拆分成位数较小的第一加法数据和第二加法数据。进而将第一加法数据、第二加法数据分别与对应的第一运算结果做和,得到低位加法结果和高位加法结果。由于低位加法结果和高位加法结果位宽较小,所以计算低位加法结果和高位加法结果所采用的加法器位宽较小,降低了计算电路的构建成本。
在第二方面一种可能的实现方式中,所述对多个所述第一加法数据和多个所述第一运算结果相加得到低位加法结果和进位数据,对所述进位数据、多个所述第二加法数据和多个所述第一运算结果相加得到高位加法结果,将所述高位加法结果和所述低位加法结果累加后得到所述第一尾数与所述第二尾数的乘积,包括:在第一计算周期对多个所述第一加法数据和多个所述第一运算结果相加得到所述低位加法结果和所述进位数据,在第二计算周期对所述进位数据、多个所述第二加法数据和多个所述第一运算结果相加得到所述高位加法结果;将所述低位加法结果和所述高位加法结果累加后得到所述第一尾数与所述第二尾数的乘积。
该种可能的实现方式中,若第一浮点数和第二浮点数都是FP64类型的浮点数。由于FP64类型的浮点数的mantissa部分长度为53bit。因此,A_mantissa*B_mantissa计算后得到的尾数部分的总长度数为106bit。如果想在一个计算单元(PE单元)内直接完成一对FP64类型的浮点数的尾数部分的计算,adder(第一加法器)需要扩位成支持长度为106bit的数据计算的加法器,括位后的adder的面积代价和时序代价均过高。因此,可以选择将一对FP64的mantissa的乘法拆成两个部分(part1和part2),在第一计算周期中计算part1部分得到低位加法结果,在第二周期中计算part2得到高位加法结果。然后,将两个计算周期得到的结果累加后便得到第一尾数和第二尾数的乘积。由于低位加法结果和高位加法结果位宽较小,所以计算低位加法结果和高位加法结果所采用的加法器位宽较小,降低了浮点数计算电路的构建成本。
在第二方面一种可能的实现方式中,所述方法还包括:将所述第一尾数拆分为所述第一拆分尾数,所述第一拆分尾数包括第一高位尾数与第一低位尾数,将所述第二尾数拆分 为所述第二拆分尾数,所述第二拆分尾数包括第二高位尾数与第二低位尾数,所述第一移位数用于指示各个高位尾数的最高位与各个低位尾数的最高位之间的移位差值。
该种可能的实现方式中,可以把第一浮点数位数较大的尾数部分拆分为位数较小的第一高位尾数与第一低位尾数,把第二浮点数位数较大的尾数部分拆分为位数较小的第二高位尾数与第二低位尾数,从而采用较小位数的乘法器来计算拆分后的各尾数部分的乘积,降低了硬件的设计成本,合理的利用了乘法器的计算性能。
在第二方面一种可能的实现方式中,所述第一高位尾数包括第三尾数,所述第一低位尾数包括第四尾数、第五尾数、第六尾数以及第七尾数,所述第二高位尾数包括第八尾数,所述第二低位尾数包括第九尾数、第十尾数,第十一尾数以及第十二尾数。
该种可能的实现方式中,提供了对于第一尾数和第二尾数的一种具体的拆分方式,将FP64类型的浮点数的尾数部分采用该种拆分方式进行拆分后,可以使用FP32类型的乘法器来进行计算,将FP128类型的浮点数的尾数部分采用该种拆分方式进行拆分后,可以使用FP64类型的乘法器来进行计算。该种拆分方式可以实现采用较小位数的乘法器来计算第一尾数和第二尾数的乘积。降低了浮点数计算电路的构建成本,更有利于技术推广。
在第二方面一种可能的实现方式中,所述方法还包括:存储所述第一拆分尾数、所述第二拆分尾数、所述第一指数、所述第二指数、第三移位数和第四移位数,所述第三移位数用于表示所述第一拆分尾数的移位数,所述第四移位数用于表示所述第二拆分尾数的移位数。
该种可能的实现方式提供了一种浮点数计算方法中存储临时数据的一种具体的实现方式,提升了方案的可实现性。
在第二方面一种可能的实现方式中,所述根据第一指数和第二指数获取第一移位数,包括:选择多个所述第二运算结果中的最大值;将多个所述第二运算结果中的最大值分别与各第二运算结果相减以得到所述第一移位数。
该种可能的实现方式提供了一种获取第一移位数的具体的实现形式,提升了方案的可实现性。
在第二方面一种可能的实现方式中,所述方法还包括:将所述第一拆分尾数以及所述第二拆分尾数相乘得到多个第三运算结果;根据多个所述第一移位数对多个所述第三运算结果做移位处理得到多个所述第一运算结果。
该种可能的实现方式提供了一种获取第一运算结果的具体的实现形式,提升了方案的可实现性。
在第二方面一种可能的实现方式中,所述方法还包括:获取所述第一浮点数和所述第二浮点数。
在第二方面一种可能的实现方式中,所述第一浮点数还包括第一符号位,所述第二浮点数还包括第二符号位。
本申请第三方面提供了一种浮点数计算电路,所述浮点数计算电路包括:指数处理电路和计算电路,所述计算电路包括第一乘法电路、第一选择器和加法电路;所述指数处理电路的输出端与所述第一乘法电路的输入端电连接;所述第一乘法电路的输出端与所述第 一选择器的输入端电连接;所述第一选择器的输出端与所述加法电路的输入端电连接。
本申请中,在浮点数计算电路中的计算电路计算两个浮点数的尾数部分的乘积的过程中,第一乘法电路会输出多个运算结果,第一选择器可以将多个运算结果中位数较大的运算结果拆分为位数较小的第一加法数据和第二加法数据,进而,加法电路中可以通过位宽较小的加法器将位数较低的多个第一加法数据、多个第二加法数据和多个第一运算结果做和以得到第一尾数与第二尾数的乘积。计算第一浮点数与第二浮点数的尾数部分的乘积时所采用的加法器的位宽小,硬件设计代价低,更利于技术推广。
在第三方面一种可能的实现方式中,所述浮点数计算电路用于计算第一浮点数和第二浮点数的乘积,所述第一浮点数包括第一指数、第一尾数和第一符号位,所述第二浮点数包括第二指数、第二尾数和第二符号位;所述指数处理电路的输入端用于接收所述第一指数和所述第二指数;所述计算电路的输入端用于接收所述第一尾数和所述第二尾数。
该种可能的实现方式中,说明了浮点数计算电路运算时输入的浮点数的具体格式,提升了方案的可实现性。
在第三方面一种可能的实现方式中,所述加法电路包括第一加法器和累加器;所述第一加法器的输入端与所述第一选择器的输出端电连接,所述第一加法器的输出端与所述累加器的输入端电连接。
该种可能的实现方式中,第一选择器将运算结果拆分为位数较低的第一加法数据和第二加法数据后,第一加法器可以根据第一加法数据和多个未拆分的运算结果得到低位加法结果,根据第二加法数据和多个拆分的运算结果得到高位加法结果。累加器对低位加法结果和高位加法结果做和可以得到第一尾数和第二尾数的乘积。由于低位加法结果和高位加法结果位宽较小,所以计算低位加法结果和高位加法结果所采用的第一加法器位宽较小,降低了计算电路的构建成本。
在第三方面一种可能的实现方式中,所述第一乘法电路包括第一乘法器和第一移位寄存器;所述第一移位寄存器的第一输入端与所述指数处理电路的输出端电连接,所述第一移位寄存器的第二输入端与所述第一乘法器的输出端电连接,所述第一移位寄存器的输出端与所述第一选择器的输入端电连接。
该种可能的实现方式中,第一乘法器可以计算拆分后的第一尾数与拆分后的第二尾数之间的乘积,第一移位寄存器可以根据指数处理电路输出的移位数对第一乘法器输出的结果进行移位,移位后输出运算结果。该种可能的实现方式提供了一种乘法电路的具体的实现方式,提升了方案的可实现性。
在第三方面一种可能的实现方式中,其特征在于,所述指数处理电路包括第二加法器、第二选择器以及第三加法器;所述第二加法器的输出端与所述第三加法器的第一输入端电连接;所述第三加法器的第二输入端与所述第二选择器的输出端电连接,所述第三加法器的输出端与所述第一移位寄存器的第一输入端电连接。
该种可能的实现方式提供了一种指数处理电路的具体的实现形式,提升了方案的可实现性。
在第三方面一种可能的实现方式中,所述计算电路还包括第二乘法电路,所述第二乘 法电路包括第二乘法器和第二移位寄存器;所述第二移位寄存器的第一输入端与所述指数处理电路的输出端电连接,所述第二移位寄存器的第二输入端与所述第二乘法器的输出端电连接,所述第二移位寄存器的输出端与所述第一加法器的输入端电连接。
该种可能的实现方式中,第二乘法电路中的第二乘法器对拆分后的第一尾数和拆分后的第二尾数做乘积,第二移位寄存器根据指数处理电路输出的移位数对第二乘法器输出的结果进行移位得到多个运算结果。第二移位寄存器直接将多个运算结果输入至第一加法器,以便第一加法器可以将第一乘法电路中输出的第一加法结果、第二加法结果与第二移位寄存器输出的多个运算结果做和得到第一尾数和第二尾数的乘积。
在第三方面一种可能的实现方式中,所述浮点数计算电路还包括内存控制器、第三选择器和寄存器;所述第三选择器的输入端与所述内存控制器的输出端电连接,所述第三选择器的输出端与所述寄存器的输入端电连接;所述寄存器的第一输出端与所述指数处理电路的输入端电连接,所述寄存器的第二输出端与所述计算电路的输入端电连接。
该种可能的方式中,内存控制器将内存处获取的第一浮点数和第二浮点数传输至第三选择器,第三选择器对第一尾数和第二尾数进行拆分之后输入至寄存器保存。该种可能的实现方式提升了方案的可实现性。
本申请实施例第三方面提供了一种计算装置,计算装置包括控制电路以及浮点数计算电路。所述浮点数计算电路在所述控制电路的控制下计算数据,所述浮点数计算电路为如上述第一方面或第一方面任意一种可能实现方式中所描述的浮点数计算电路,或者,所述浮点数计算电路为如上述第三方面或第三方面任意一种可能实现方式中所描述的浮点数计算电路。
图1为本申请提供的卷积神经网络的处理原理图;
图2为本申请实施例提供的FP32类型的浮点数的组成示意图;
图3为本申请实施例提供的浮点数计算电路的一结构示意图;
图4是本申请实施例提供的一种计算电路的一种结构示意图;
图5是本申请实施例提供的一种计算电路的另一种结构示意图;
图6是本申请实施例提供的一种计算电路的另一种结构示意图;
图7为本申请中提供的第一浮点数和第二浮点数的尾数部分的示意图;
图8为本申请中提供的一种计算电路的一种结构示意图;
图9为本申请中提供的一种计算电路的运算过程的一种示意图;
图10为本申请实施例提供的浮点数计算电路的一实施例示意图;
图11为本申请实施例提供的浮点数计算电路的另一实施例示意图;
图12为本申请实施例提供的浮点数计算电路的另一实施例示意图;
图13为本申请提供的一种拆分电路的一种结构示意图;
图14为本申请提供的一种第一尾数和第二尾数的结构示意图;
图15为本申请提供的一种存储电路的一种结构示意图;
图16为本申请提供的一种内存控制器与内存之间的连接关系示意图;
图17为本申请中提供的一种指数处理电路的一种结构示意图;
图18为本申请实施例提供的浮点数计算电路的另一实施例示意图;
图19为本申请实施例提供的浮点数计算电路的另一实施例示意图;
图20为本申请实施例提供的浮点数计算电路的另一实施例示意图;
图21为本申请实施例提供的浮点数计算电路的另一实施例示意图。
为了使本申请的目的、技术方案及优点更加清楚明白,下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。在本申请中出现的对步骤进行的命名或者编号,并不意味着必须按照命名或者编号所指示的时间/逻辑先后顺序执行方法流程中的步骤,已经命名或者编号的流程步骤可以根据要实现的技术目的变更执行次序,只要能达到相同或者相类似的技术效果即可。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,AI基础理论等。
图1为本申请提供的卷积神经网络的处理原理图。
卷积神经网络CNN在图像、语音识别等领域有广泛的应用前景。如图1所示,卷积神经网络需要对多个卷积核以及一张或者多张特征图进行卷积运算。具体的,对于每一个卷积核,将其从特征图的第一个像素开始,延行方向逐像素移动,当到达此行的终点时,在列方向下移一个像素,行方向的回到起点,并且重复行方向移动过程,直到遍历特征图的所有像素。在卷积核移动的过程中,将卷积核中的参数和特征图相中对应位置的数据作为卷积运算的两部分输入,进行卷积操作(两两相乘再将乘积逐个累加),得到卷积结果后输出该卷积结果。
卷积神经网络(convolution neural network,CNN)目前被广泛应用于多种类型的图像处理应用中,图像处理应用在使用浮点数(floating point,FP)16类型的数据对模型进行网络训练时,由于FP16类型的数据精度不足,会导致网络训练不收敛或者收敛速度慢,所以需要使用更高精度的FP32类型的数据来保证网络训练效果。此外,在某些应用中,需要使用更高精度的FP64类型的数据以及FP128类型的数据来进行模型训练。
需要说明的是,本发明中涉及的浮点数计算电路除了可以应用于人工智能领域外,还可以应用于数据信号处理领域,比如图像处理***,雷达***和通讯***。此电路和方法可以优化数字信号处理(digital signal processing,DSP)或其它数字设备的性能。比如应用于长期演进(long term evolution,LTE)、通用移动通信***(universal mobile telecommunications system,UMTS)、全球移动通信***(global system for mobile communications,GSM)等现行通讯***中的数字设备。
现有的数据计算方案中,可以采用较小位数的乘法器来计算位数较大的浮点数。例如,可以通过个用于计算FP32数据的乘法器来计算FP64类型的浮点数据。网络设备通过将FP64类型的浮点数据拆分为位数较小的浮点数后做乘法运算,再通过加法器将乘法运算后的结果相加得到FP64类型的浮点数据的乘积。该种传统的计算方式中,将乘法运算后的结果相加时所需要的加法器的位宽较大,硬件设计代价高,不利于技术推广。
针对现有的数据计算方案所存在的上述问题,本申请实施例提供了一种浮点数计算电路、浮点数计算方法以及计算装置。计算第一浮点数与第二浮点数的尾数部分的乘积时所采用的加法器的位宽小,硬件设计代价低,更利于技术推广。
在介绍本申请提供的浮点数计算电路、浮点数计算方法以及计算装置之前,先通过下面的示例来介绍浮点数的格式以及浮点数的计算方式。
目前有四种格式的浮点数较为常见,分别为FP16、FP32、FP64以及FP128。其中,每种浮点数都由三部分组成,分别是符号位(sign)、指数位(exp)和尾数位(mantissa)。一个浮点数的实际值等于sign*2
exp*mantissa。
图2为本申请实施例提供的FP32类型的浮点数的组成示意图。
如图2所示,FP32类型的浮点数有1bit的sign,8bit的exp和24bit的mantissa,显示存储的共计32bit。其中mantissa的最高位隐式存储(如果exp不为0,则hiden bit为1,否则hiden bit为0),三部分共计32bit。
在计算浮点数A*B时,指数部分的计算过程为A_exp+B_exp,尾数部分的计算过程为A_mantissa*B_mantissa。然后将新得到的exp和mantissa按照标准中的格式生成新的浮点数。
在计算浮点数A+B时,先求出A_exp和B_exp中较大的一个。假设,A_exp比B_exp大n。然后在mantissa相加时,就需要先将B_mantissa右移n个bit,然后再与A_mantissa相加,得到新的mantissa,再根据标准生成新的的浮点数。在计算多个浮点数一起相加时,会先求得其中最大的exp,然后根据最大的exp与各个浮点数的exp之间的差值,对mantissa做相应的移位,然后再将移位后的mantissa相加。
下面将结合本申请中的附图,对本申请提供的浮点数计算电路、浮点数计算方法以及 计算装置分别进行详细介绍,首先介绍本申请提供的浮点数计算电路。
图3是本申请实施例提供的一种浮点数计算电路的一结构示意图。
请参阅图3,本申请提供的浮点数计算电路中至少包括指数处理电路101和计算电路102。
其中,指数处理电路101的输出端与计算电路102的输入端电连接。
本申请中,浮点数计算电路用于计算第一浮点数和第二浮点数的乘积。其中,第一浮点数包括第一指数和第一尾数,第二浮点数包括第二指数和第二尾数。指数处理电路101和计算电路102可以根据第一浮点数和第二浮点数计算第一浮点数和第二浮点数尾数部分的乘积。下面将阐述这一计算过程。
本申请中,指数处理电路101可以根据第一指数和第二指数获取第一移位数。第一移位数用于表示第一拆分尾数和第二拆分尾数之间乘积的移位数,第一拆分尾数由第一尾数拆分得到,第二拆分尾数由第二尾数拆分得到。
本申请中,计算电路102可以选择输出多个第一运算结果中的部分数据得到多个第一加法数据和多个第二加法数据,根据多个第一加法数据、多个第二加法数据和多个第一运算结果获取第一尾数与第二尾数的乘积,第一运算结果用于表示第一拆分尾数和第二拆分尾数的乘积根据第一移位数进行移位后得到的数据。
本申请中,浮点数计算电路中的计算电路可以选择输出多个第一运算结果中的部分数据得到多个第一加法数据和多个第二加法数据。计算电路通过选择第一运算结果中部分数据的方式将多个位数较高的第一运算结果拆分为位数较低的多个第一加法数据和多个第二加法数据,进而,通过位宽较小的加法器将位数较低的多个第一加法数据、多个第二加法数据和多个第一运算结果做和可以得到第一尾数与第二尾数的乘积。计算第一浮点数与第二浮点数的尾数部分的乘积时所采用的加法器的位宽小,硬件设计代价低,更利于技术推广。
下面的示例将详细说明本申请中指数处理电路101和计算电路102计算浮点数尾数部分乘积的详细过程。
首先说明计算电路102的具体实现方式以及计算电路102的运算过程。
图4是本申请实施例提供的一种计算电路102的一种结构示意图。
请参阅图4,本申请中,可选的,计算电路102中可以包括乘法电路201、第一选择电路202和加法电路203。
本申请中,指数处理电路101的输出端与乘法电路201的输入端电连接。第一选择电路202的输入端与乘法电路201的输出端电连接,第一选择电路202的输出端与加法电路203的输入端电连接。
第一选择电路202可以选择输出多个第一运算结果中的低位数据得到多个第一加法数据,选择输出多个第一运算结果中的高位数据得到多个第二加法数据。
加法电路203可以对多个第一加法数据和多个第一运算结果相加得到低位加法结果和进位数据,对进位数据、多个第二加法数据和多个第一运算结果相加得到高位加法结果,将高位加法结果和低位加法结果累加后得到第一尾数与第二尾数的乘积。
本申请中,可选的,图4中展示的乘法电路201、第一选择电路202和加法电路203的数量仅做示例性说明,计算电路102中可以包括更多的乘法电路201,更多的加法电路203和/或更多的第一选择电路202,具体此处不做限定。
本申请中,加法电路203具有具体的实现方式,下面将以图5为例来说明本申请提供的加法电路203的一种具体的实现形式。
图5是本申请实施例提供的一种计算电路的另一种结构示意图。
可选的,加法电路203可以包括第一加法器301和累加器302。
其中,第一加法器301的输入端与第一选择电路202的输出端电连接,第一加法器301的输出端与累加器302的输入端电连接。
第一加法器301可以在第一计算周期对多个第一加法数据和多个第一运算结果相加得到低位加法结果和进位数据,在第二计算周期对进位数据、多个第二加法数据和多个第一运算结果相加得到高位加法结果。
累加器302可以将低位加法结果和高位加法结果累加后得到第一尾数与第二尾数的乘积。
本申请中,可选的,图5中展示的加法电路203中包括的第一加法器301和累加器302的数量仅做示例性说明。加法电路203中可以包括更多的第一加法器301和/或更多的累加器302,具体此处不做限定。
本申请中,乘法电路201具有具体的实现方式,下面将以图6为例来说明本申请提供的乘法电路201的一种具体的实现形式。
图6是本申请实施例提供的一种计算电路的另一种结构示意图。
请参阅图6,乘法电路201包括乘法器303和移位寄存器304;
乘法器303的输入端与指数处理电路101的输出端电连接,乘法器303的输出端与移位寄存器304的输入端电连接。
乘法器303可以将第一拆分尾数以及第二拆分尾数相乘得到多个第三运算结果。
移位寄存器304可以根据多个第一移位数对多个第三运算结果做移位处理得到多个第一运算结果。
下面以一个具体的计算示例来说明本申请中计算电路102的运算过程。
在介绍计算电路102的运算过程之前,首先介绍一下第一浮点数和第二浮点数的尾数部分的格式。
图7为本申请中提供的第一浮点数和第二浮点数的尾数部分的示意图。
示例性的,假设内存中存储有第一浮点数A和第二浮点数B,其中,第一浮点数A与第二浮点数B均为FP64类型的浮点数。在处理FP64类型的浮点数的计算时,如图7,计算电路可以将第一浮点数A的mantissa部分(第一尾数)拆分为a0、a1、a2、a3、a4五个部分。将第二浮点数B的mantissa部分(第二尾数)拆分为b0、b1、b2、b3、b4五个部分。其中,a0、a1、a2、a3、a4便是第一拆分尾数,b0、b1、b2、b3、b4便是第二拆分尾数。a1、a2、a3、a4、b1、b2、b3、b4的位数均为12bit,a0、b0的位数为5bit。
得到第一拆分尾数和第二拆分尾数后,计算电路102进行运算时,第一浮点数A的 mantissa部分与第二浮点数B的mantissa部分的乘法可以表示为公式1。
公式1:
A
mantissa*B
mantissa
=(a0<<48bit+a1<<36bit+a2<<24bit+a3<<12bit+a4)*
(a0<<48bit+a1<<36bit+a2<<24bit+a3<<12bit+a4)
=Part1[Low_12bit(a0*b4+a4*b0+a1*b3+a3*b1+a2*b2)<<48bit
+(a1*b4+b1*a4+a2*b3+a3*b2)<<32bit
+(a2*b4+a4*b2+a3*b3)<<24bit
+(a3*b4+a4*b3)<<12bit
+(a4*b4)]
+Part2[(a0*b0))96bit
+(a0*b1+a1*b0)<<84bit
+(a0*b2+a2*b0+a1*b1)<<72bit
+(a0*b3+a3*b0+a1*b2+a2*b1)<<60bit
+High_12bit(a0*b4+a4*b0+a1*b3+a3*b1+a2*b2)<<48bit]
本申请中,由于FP64类型的浮点数的mantissa部分长度为53bit。因此,A_mantissa*B_mantissa计算后得到的尾数部分的总长度数为106bit。如果想在一个计算单元(PE单元)内直接完成一对FP64类型的浮点数的尾数部分的计算,adder(第一加法器)需要扩位成支持长度为106bit的数据计算的加法器,括位后的adder的面积代价和时序代价均过高。因此,可以选择将一对FP64的mantissa的乘法拆成两个部分,在第一计算周期计算上述公式中的第一部分(part1),在第二计算周期计算第二部分(part2)。
下面结合附图以及上述公式1分别介绍乘法电路201、第一选择电路202和加法电路203的运算过程。
(1)乘法电路的运算过程。
图8为本申请中提供的一种计算电路的一种结构示意图。
首先,结合图8以及上述公式说明乘法电路的运算过程。
请参阅图8,本申请中,假设将计算电路102的硬件部分划分为多个计算模块。其中,每个计算模块中的多个乘法器分别计算a0*b4、a4*b0、a1*b3、a3*b1、a2*b2等第一拆分尾数和第二拆分尾数之间的乘积,上述a0*b4、a4*b0、a1*b3、a3*b1、a2*b2是为了举例说明,具体计算过程中,乘法器会将5个第一拆分尾数和5个第二拆分尾数两两之间的乘积全部计算出来,得到25个第三运算结果。
移位寄存器根据指数处理电路输出的多个第一移位数分别对25个第三运算结果进行移位后,便可以得到第一运算结果。上述公式中,示例性的,(a0*b4+a4*b0+a1* b3+a3*b1+a2*b2)<<48bit中,48bit便是下述第三运算结果a0*b4、a4*b0、a1*b3、a3*b1、a2*b2的第一移位数。多个移位寄存器便可以对多个第三运算结果根据第一移位数做移位处理。
上述示例中说明的第三运算结果以及对应的48bit移位数仅做示例性说明,实际计算过程中,移位寄存器可以根据其他第一移位数对更多个第三运算结果进行移位处理,第一移位数也可以是其他移位数,具体此处不做限定。
(2)第一选择电路以及加法电路的运算过程。
下面根据图8以及上述公式说明第一选择电路以及加法电路的运算过程。
本申请中,第一计算模块和第二计算模块中的第一选择电路接收到移位处理之后的a2*b2、a1*b3、a3*b1、a0*b4和a4*b0(第一运算结果)。由于a2*b2、a1*b3、a3*b1、a0*b4和a4*b0移位后的结果的长度为24bit,第一选择电路可以在第一计算周期输出低位的12bit(第一加法数据),通过多个52bit的加法器(第一加法器)将低位的12bit与移位处理后的a1*b4、a4*b1、a2*b3、a3*b2、a3*b3、a2*b4、a4*b2、a3*b4、a4*b3、a4*b4(第一运算结果)相加,得到低位加法结果和进位数据,其中进位数据是指多个加法结果计算后由于进位产生的数据。
同理可知,第一计算模块和第二计算模块中的第一选择电路接收到移位处理之后的a2*b2、a1*b3、a3*b1、a0*b4和a4*b0(第一运算结果)。由于a2*b2、a1*b3、a3*b1、a0*b4和a4*b0移位后的结果的长度为24bit,第一选择电路可以在第二计算周期输出高位的12bit(第二加法数据),通过多个52bit的加法器(第一加法器)将高位的12bit与移位处理后的a0*b0、a0*b1、a1*b0、a0*b2、a2*b0、a1*b1、a0*b3、a3*b0、a1*b2和a2*b1(第一运算结果)、进位数据相加,得到高位加法结果。
累加器将低位加法结果和高位加法结果累加得到第一尾数和第二尾数的乘积。
上述示例结合图8中的具体的硬件结构说明了计算电路102的运算过程,下面将结合图9,说明一下计算电路102分别在第一计算周期根据第一加法数据和第一运算结果得到低位加法结果的过程,以及,计算电路102在第二计算周期根据第二加法数据、进位数据和第一运算结果得到高位加法结果的过程。
图9为本申请中提供的一种计算电路的运算过程的一种示意图。
请参阅图9,图中PP1至PP25分别代表多个第一运算结果,其中,a2*b2、a1*b3、a3*b1、a0*b4和a4*b0分别对应图中的PP11至PP15。第一计算周期中计算PP11至PP15的低位尾数部分与其他第一运算结果的和,第二计算周期中计算进位数据PP00、PP11至PP15的高位尾数部分与其他第一运算结果的和。
本申请中,第一计算周期计算低比特位的15组部分的和,取PP1的低12比特位为最终106比特结果的[11:0]比特位,而PP1的高12比特作为加法树的低12比特位的输入。取PP11至PP15的低12比特位为输入48比特加法树中的高12比特位,PP2至PP10则按图所示,截取移位后的[59:12]比特位为加法树的输入,这里在第一计算周期计算低比特位的15组部分积累加得到52比特的结果,[47:0]的48比特位的结果是最终106比特结果的[59:12]比特位,而高位的4比特即[51:48]则作为进位数据。在第二计算周期中,取PP11 至PP15的高12比特位为输入48比特加法树中的低12比特位,取PP25的低12比特位为输入48比特加法树中的高12比特位,此处的PP25位宽仅为10比特,所以PP25的高12比特位即[23:12]可以舍去不计,PP16至PP24则按图所示,截取移位后的[59:12]比特位为加法树的输入,在加上第一计算周期的进位信号,即可得到52比特的结果。由于因为53bit*53bit最大也只能得到106比特的最终结果,所以第2个周期加法树计算的52比特结果中最高的6个比特位即[51:46]必定为0,而剩下的46比特位即为最终结果的[105:60]比特位。
本申请中,可选的,对第一计算周期因进位带来的高位4bit[51:48](进位数据PP0),可以选择增加额外的寄存器保存,此时加法树的比特位宽可以做到48bit。也可以完全用加法树覆盖进位,此时加法树的比特位宽需要52bit。具体此处不做限定。
图10为本申请实施例提供的浮点数计算电路的另一实施例示意图。
如图10所示,分别是part1、part2各部分在计算后得到的第一运算结果在加法树中的对应位置。根据图10可知,60bit的加法树能覆盖part1的计算。计算低位加法结果(Part1)的加法树需要52bit位宽,加法树可以完全覆盖Part1部分的4bit的进位。计算高位加法结果(Part2)的加法树需要48bit位宽。这样对每个Part,加法树最多只需要52bit就能够实现第一尾数和第二尾数之间的乘法运算。
图11为本申请实施例提供的浮点数计算电路的另一实施例示意图。
如图11所示,图中黑色部分分别是part1中各第一运算结果在加法树中对应的位置。其中,根据第一移位数移位后的a2*b2、a1*b3、a3*b1、a0*b4和a4*b0的低位12bit位于48bit-60bit位。移位后的a1*b4、a4*b1、a2*b3、a3*b2位于36bit-60bit。移位后的a3*b3、a2*b4、a4*b2位于24bit-48bit。移位后的a3*b4、a4*b3位于12bit-36bit。移位后的a4*b4位于0bit-24bit。
图12为本申请实施例提供的浮点数计算电路的另一实施例示意图。
如图12所示,图中黑色部分分别是part2中各第一运算结果在加法树中对应的位置。
其中,根据第一移位数移位后的a0*b4和a4*b0的高位12bit位于60bit-72bit位。根据第一移位数移位后的a2*b2、a1*b3、a3*b1、的高位12bit位于60bit-72bit位。根据第一移位数移位后的a0*b3、a3*b0位于60bit-77bit位。根据第一移位数移位后的a1*b2、a2*b1位于60bit-84bit位。根据第一移位数移位后的a0*b2、a2*b0位于72bit-89bit位。根据第一移位数移位后的a1*b1位于72bit-96bit位。根据第一移位数移位后的a0*b1、a1*b0位于84bit-101bit位。根据第一移位数移位后的a0*b0位于96bit-106bit位。
本申请中,上述图11和图12所示的示例中,注意到在Part1和Part2中,都重复计算了a2*b2,a1*b3,a3*b1,a0*b4,a4*b0。但是Part1是取低位的12bit,Part2是取高位的12bit,这可以通过在计算电路中增加第一选择电路来实现,固定移位的开销很小,对面积和功耗的增加也很小。而部分重复运算不增加面积,功耗影响也很小。
本申请中,可选的,浮点数计算电路还可以包括拆分电路。
图13为本申请提供的一种拆分电路的一种结构示意图。
请参阅图13,拆分电路的输出端与指数处理电路的输入端和乘法电路的输入端电连接。 可选的,拆分电路中可以包括第一选择器和寄存器,第一选择器的输出端和寄存器的输入端电连接。其中,第一选择器输入第一浮点数和第二浮点数,第一选择器将第一浮点数和第二浮点数拆分后得到的结果保存在对应的寄存器中。
图14为本申请提供的一种第一尾数和第二尾数的结构示意图。
如图14,具体的,拆分电路中的多个第一选择器可以将第一尾数拆分为第一拆分尾数,第一拆分尾数包括第一高位尾数与第一低位尾数,将第二尾数拆分为第二拆分尾数,第二拆分尾数包括第二高位尾数与第二低位尾数,第一移位数用于指示各个高位尾数的最高位与各个低位尾数的最高位之间的移位差值。
可选的,第一高位尾数包括第三尾数,第一低位尾数包括第四尾数、第五尾数、第六尾数以及第七尾数,第二高位尾数包括第八尾数,第二低位尾数包括第九尾数、第十尾数,第十一尾数以及第十二尾数。图13中的拆分电路输入第一浮点数和第二浮点数之后,拆分电路中的多个第一选择器可以将第一浮点数的第一尾数拆分为第三尾数、第四尾数、第五尾数、第六尾数以及第七尾数。第一选择器可以将第二浮点数的第二尾数拆分为第八尾数、第九尾数、第十尾数,第十一尾数以及第十二尾数。
下面以具体示例来说明拆分电路拆分浮点数的尾数部分的过程。
例如,若第一浮点数为FP64类型的浮点数。假设拆分电路可以将第一浮点数的尾数部分拆分为长度为5bit的第三尾数10001、长度为12bit的第四尾数100000000001、长度为12bit的第五尾数100000000011、长度为12bit的第六尾数100000000111以及长度为12bit的第七尾数100000001111。
本实施例中,第三尾数属于第一高位尾数,第四尾数、第五尾数、第六尾数、第七尾数属于第一低位尾数。第一移位数用于指示高位尾数的最高位与各个低位尾数的最高位之间的移位差值,即第一尾数的移位数为0,第四尾数的第一移位数为第四尾数的首位与第三尾数的首位之间的移位差值5位,与第三尾数的位数相同,所以第四尾数的第一移位数为右移5位。第五尾数的第一移位数为第五尾数的首位与第三尾数的首位之间的移位差值17位,与第三尾数和第四尾数的移位数之和相同,所以第五尾数的第一移位数为右移17位。第六尾数的第一移位数为第六尾数的首位与第三尾数的首位之间的移位差值29位,与第三尾数、第四尾数以及第五尾数的移位数之和相同,所以第六尾数的第一移位数为右移29位。第七尾数的第一移位数为第七尾数的首位与第三尾数的首位之间的移位差值41位,与第三尾数、第四尾数、第五尾数以及第六尾数的移位数之和相同,所以第七尾数的第一移位数为右移41位。
本实施例中,第一高位尾数与第二高位尾数还可以有其他不同的拆分方式,例如,第一位数长度为9bit,第二尾数、第三尾数、第四尾数与第五尾数均为11bit,具体此处不做限定。
本实施例中,第二高位尾数与第一高位尾数的拆分方式相类似,第二低位尾数与第一低位尾数的拆分方式相类似,具体此处不做赘述。
上述拆分方式仅用于举例说明,可选的,第一浮点数可以是FP32类型的浮点数,第一浮点数也可以是FP64类型的浮点数,第一浮点数还可以是FP128类型的浮点数,具体此处 不做限定。可选的,第一浮点数的尾数部分拆分时可以拆分为两个部分,也可以拆分为多个部分,具体此处不做限定。拆分后的各尾数部分的位数可以相等,拆分后的各尾数部分的位数也可以不相等,具体此处不做限定。
本申请中,可选的,浮点数计算电路还可以包括存储电路。
其中,拆分电路的输出端与存储电路的输入端电连接,指数处理电路的输入端与存储电路的第一输出端电连接。计算电路的输入端与存储电路的第二输出端电连接。
图15为本申请提供的一种存储电路的一种结构示意图。
请参阅图15,存储电路中包括多个寄存器,用于存储第一拆分尾数、第二拆分尾数、第一指数、第二指数、第三移位数和第四移位数,第三移位数用于表示第一拆分尾数的移位数,第四移位数用于表示第二拆分尾数的移位数。
可以理解的是,图15中存储电路中包括的寄存器的数量仅做示例性说明。可选的,存储电路中可以包括比图15中所示的更多的寄存器,存储电路中可以包括比图15所示更少的寄存器,具体此处不做限定。
本申请中,可选的,浮点数计算电路还可以包括内存控制器。
图16为本申请提供的一种内存控制器与内存之间的连接关系示意图。
如图16,内存控制器的输入端与内存的输出端连接,内存控制器的输出端与拆分电路的输入端电连接。
本申请中,内存中存储有第一浮点数以及第二浮点数,内存控制器可以获取第一浮点数以及第二浮点数,并且向拆分电路发送第一浮点数和第二浮点数。可选的,该内存可以是双倍数据速率(double data rate,DDR)内存,也可以是其他内存,具体此处不做限定。该内存控制器可以是DDR控制器,也可以是其他类型的内存控制器,具体此处不做限定。
本申请中,指数处理电路101具有具体的实现方式,指数处理电路101可以根据第一指数和第二指数获取第一移位数也有具体的计算方式,下面结合图17说明指数处理电路101的具体实现方式以及指数处理电路101的运算过程。
图17为本申请中提供的一种指数处理电路的一种结构示意图。
请参阅图17,本申请中,指数处理电路101至少包括第二加法器401、第二选择电路402以及第三加法器403。
其中,第二加法器401的输入端与存储电路的第一输出端电连接,第二加法器401的输出端与第三加法器403的第一输入端电连接。第三加法器403的第二输入端与第二选择电路的输出端电连接,第三加法器403的输出端与计算电路102的第一输入端电连接。
本申请中,第二加法器401可以将第一指数、第二指数、第三移位数和第四移位数相加以得到多个第二运算结果。第二选择电路402可以选择多个第二运算结果中的最大值。第三加法器403将多个第二运算结果中的最大值分别与各第二运算结果相减以得到第一移位数。
本申请还提供了一种浮点数计算方法,该浮点数计算方法的具体实现方式可以参照上述图3至图17所述的浮点数计算电路进行理解,具体此处不做赘述。
本申请还提供了另外一种浮点数计算电路,同理,该浮点数计算方法的具体实现方式 可以参照上述图3至图17所述的浮点数计算电路进行理解,具体此处不做赘述。
图18为本申请实施例提供的浮点数计算电路的另一实施例示意图。
步骤一:请参阅图18,第二浮点数B是滤波矩阵中的数据。DDR控制器(内存控制器)从DDR(内存)中读取多个第一浮点数A与第二浮点数B,通过高低位拆分逻辑(拆分电路)将第一浮点数A的mantissa部分拆分为MSB和LSB两个部分并且存入数据RAM(存储电路),图10中I、II、…X中包括的内容即为各第一浮点数A的mantissa拆分后得到的A_MSB与A_LSB,以及各A_MSB、A_LSB所对应的指数部分EXP,将第二浮点数B的mantissa部分拆分为MSB和LSB两个部分并且存入权重RAM(存储电路),图18中1、2、N中包括的内容即为各第二浮点数B的mantissa拆分后得到的B_MSB与B_LSB,以及各B_MSB、B_LSB所对应的指数部分EXP。
图19为本申请实施例提供的浮点数计算电路的另一实施例示意图。
步骤二:请参阅图19,权重RAM中拆分之后的mantissa预加载到卷积计算单元中,同时EXP(拆分后各尾数部分对应的指数部分)经过EXP offset(第二加法器)处理后,同样预加载到卷积计算单元中。
图20为本申请实施例提供的浮点数计算电路的另一实施例示意图。
步骤三:请参阅图20,从数据RAM中提取第一段mantissa数据(I部分),同样EXP部分也先经过exp offset处理后,放置到卷积计算单元中,与预加载的参数(1部分)进行计算并且获得结果。
图21为本申请实施例提供的浮点数计算电路的另一实施例示意图。
步骤四:请参阅图21,卷积处理单元1将第一段数据(I部分)转发给计算单元2,并且从数据RAM中获取第二段数据(II部分)。计算单元1在获取II部分数据之后、计算单元2在获取I部分数据之后完成运算生成结果。此后每个时钟,计算单元2~N将上一个时钟处理完毕的数据转发给下一个计算单元,计算单元1每次从数据RAM中获取新的数据。
步骤五:重复步骤四直到所有的数据完成运算,生成结果。
以上对本申请实施例所提供的浮点数计算电路以及浮点数计算方法进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (28)
- 一种浮点数计算电路,其特征在于,所述浮点数计算电路用于计算第一浮点数和第二浮点数的乘积,所述第一浮点数包括第一指数和第一尾数,所述第二浮点数包括第二指数和第二尾数,所述浮点数计算电路包括:指数处理电路和计算电路;所述指数处理电路的输出端与所述计算电路的输入端电连接;所述指数处理电路,用于根据所述第一指数和所述第二指数获取第一移位数,所述第一移位数用于表示第一拆分尾数和第二拆分尾数之间乘积的移位数,所述第一拆分尾数由所述第一尾数拆分得到,所述第二拆分尾数由所述第二尾数拆分得到;所述计算电路,用于选择输出多个第一运算结果中的部分数据得到多个第一加法数据和多个第二加法数据,根据多个所述第一加法数据、多个所述第二加法数据和多个所述第一运算结果获取所述第一尾数与所述第二尾数的乘积,所述第一运算结果用于表示所述第一拆分尾数和所述第二拆分尾数的乘积根据所述第一移位数进行移位后得到的数据。
- 根据权利要求1所述的浮点数计算电路,其特征在于,所述计算电路包括乘法电路、加法电路和第一选择电路;所述指数处理电路的输出端与所述乘法电路的输入端电连接;所述第一选择电路的输入端与所述乘法电路的输出端电连接,所述第一选择电路的输出端与所述加法电路的输入端电连接;所述第一选择电路,用于选择输出多个所述第一运算结果中的低位数据得到多个所述第一加法数据,选择输出多个所述第一运算结果中的高位数据得到多个所述第二加法数据;所述加法电路,用于对多个所述第一加法数据和多个所述第一运算结果相加得到低位加法结果和进位数据,对所述进位数据、多个所述第二加法数据和多个所述第一运算结果相加得到高位加法结果,将所述高位加法结果和所述低位加法结果累加后得到所述第一尾数与所述第二尾数的乘积。
- 根据权利要求2所述的浮点数计算电路,其特征在于,所述加法电路包括第一加法器和累加器;所述第一加法器的输入端与所述第一选择电路的输出端电连接,所述第一加法器的输出端与所述累加器的输入端电连接;所述第一加法器,用于在第一计算周期对多个所述第一加法数据和多个所述第一运算结果相加得到所述低位加法结果和所述进位数据,在第二计算周期对所述进位数据、多个所述第二加法数据和多个所述第一运算结果相加得到所述高位加法结果;所述累加器,用于将所述低位加法结果和所述高位加法结果累加后得到所述第一尾数与所述第二尾数的乘积。
- 根据权利要求2或3所述的浮点数计算电路,其特征在于,所述浮点数计算电路还包括拆分电路;所述拆分电路的输出端与所述指数处理电路的输入端和所述乘法电路的输入端电连接;所述拆分电路,用于将所述第一尾数拆分为所述第一拆分尾数,所述第一拆分尾数包括第一高位尾数与第一低位尾数,将所述第二尾数拆分为所述第二拆分尾数,所述第二拆 分尾数包括第二高位尾数与第二低位尾数,所述第一移位数用于指示各个高位尾数的最高位与各个低位尾数的最高位之间的移位差值。
- 根据权利要求4所述的浮点数计算电路,其特征在于,所述第一高位尾数包括第三尾数,所述第一低位尾数包括第四尾数、第五尾数、第六尾数以及第七尾数,所述第二高位尾数包括第八尾数,所述第二低位尾数包括第九尾数、第十尾数,第十一尾数以及第十二尾数。
- 根据权利要求1至5中任意一项所述的浮点数计算电路,其特征在于,所述浮点数计算电路还包括存储电路;所述拆分电路的输出端与所述存储电路的输入端电连接;所述指数处理电路的输入端与所述存储电路的第一输出端电连接;所述计算电路的输入端与所述存储电路的第二输出端电连接;所述存储电路,用于存储所述第一拆分尾数、所述第二拆分尾数、所述第一指数、所述第二指数、第三移位数和第四移位数,所述第三移位数用于表示所述第一拆分尾数的移位数,所述第四移位数用于表示所述第二拆分尾数的移位数。
- 根据权利要求6所述的浮点数计算电路,其特征在于,所述指数处理电路包括第二加法器、第二选择电路以及第三加法器;所述第二加法器的输入端与所述存储电路的第一输出端电连接,所述第二加法器的输出端与所述第三加法器的第一输入端电连接;所述第三加法器的第二输入端与所述第二选择电路的输出端电连接,所述第三加法器的输出端与所述计算电路的第一输入端电连接;所述第二加法器,用于将所述第一指数、所述第二指数、所述第三移位数和所述第四移位数相加以得到多个第二运算结果;所述第二选择电路,用于选择多个所述第二运算结果中的最大值;所述第三加法器,用于将多个所述第二运算结果中的最大值分别与各第二运算结果相减以得到所述第一移位数。
- 根据权利要求6或7中任意一项所述的浮点数计算电路,其特征在于,所述乘法电路包括乘法器和移位寄存器;所述乘法器的输入端与所述存储电路的第二输出端电连接,所述乘法器的输出端与所述移位寄存器的第一输入端电连接;所述移位寄存器的第二输入端与所述第三加法器的输出端电连接;所述移位寄存器的输出端与所述第一加法器的输入端电连接;所述乘法器用于将所述第一拆分尾数以及所述第二拆分尾数相乘得到多个第三运算结果;所述移位寄存器用于根据多个所述第一移位数对多个所述第三运算结果做移位处理得到多个所述第一运算结果。
- 根据权利要求6至8中任意一项所述的浮点数计算电路,其特征在于,所述浮点数计算电路还包括内存控制器;所述内存控制器的输出端与所述拆分电路的输入端电连接;所述内存控制器,用于获取所述第一浮点数和所述第二浮点数,并且向所述拆分电路发送所述第一浮点数和所述第二浮点数。
- 根据权利要求1至9中任意一项所述的浮点数计算电路,其特征在于,所述第一浮点数还包括第一符号位,所述第二浮点数还包括第二符号位。
- 一种浮点数计算方法,其特征在于,用于计算第一浮点数和第二浮点数的乘积,所述第一浮点数包括第一指数和第一尾数,所述第二浮点数包括第二指数和第二尾数,所述方法包括:根据所述第一指数和所述第二指数获取第一移位数,所述第一移位数用于表示第一拆分尾数和第二拆分尾数之间乘积的移位数,所述第一拆分尾数由所述第一尾数拆分得到,所述第二拆分尾数由所述第二尾数拆分得到;选择输出多个第一运算结果中的部分数据得到多个第一加法数据和多个第二加法数据,根据多个所述第一加法数据、多个所述第二加法数据和多个所述第一运算结果获取所述第一尾数与所述第二尾数的乘积,所述第一运算结果用于表示所述第一拆分尾数和所述第二拆分尾数的乘积根据所述第一移位数进行移位后得到的数据。
- 根据权利要求11所述的浮点数计算方法,其特征在于,所述选择输出多个第一运算结果中的部分数据得到多个第一加法数据和多个第二加法数据,根据多个所述第一加法数据、多个所述第二加法数据和多个所述第一运算结果获取所述第一尾数与所述第二尾数的乘积,包括:选择输出多个所述第一运算结果中的低位数据得到多个所述第一加法数据,选择输出多个所述第一运算结果中的高位数据得到多个所述第二加法数据;对多个所述第一加法数据和多个所述第一运算结果相加得到低位加法结果和进位数据,对所述进位数据、多个所述第二加法数据和多个所述第一运算结果相加得到高位加法结果,将所述高位加法结果和所述低位加法结果累加后得到所述第一尾数与所述第二尾数的乘积。
- 根据权利要求12所述的浮点数计算方法,其特征在于,所述对多个所述第一加法数据和多个所述第一运算结果相加得到低位加法结果和进位数据,对所述进位数据、多个所述第二加法数据和多个所述第一运算结果相加得到高位加法结果,将所述高位加法结果和所述低位加法结果累加后得到所述第一尾数与所述第二尾数的乘积,包括:在第一计算周期对多个所述第一加法数据和多个所述第一运算结果相加得到所述低位加法结果和所述进位数据,在第二计算周期对所述进位数据、多个所述第二加法数据和多个所述第一运算结果相加得到所述高位加法结果;将所述低位加法结果和所述高位加法结果累加后得到所述第一尾数与所述第二尾数的乘积。
- 根据权利要求12或13所述的浮点数计算方法,其特征在于,所述方法还包括:将所述第一尾数拆分为所述第一拆分尾数,所述第一拆分尾数包括第一高位尾数与第一低位尾数,将所述第二尾数拆分为所述第二拆分尾数,所述第二拆分尾数包括第二高位尾数与第二低位尾数,所述第一移位数用于指示各个高位尾数的最高位与各个低位尾数的 最高位之间的移位差值。
- 根据权利要求14所述的浮点数计算方法,其特征在于,所述第一高位尾数包括第三尾数,所述第一低位尾数包括第四尾数、第五尾数、第六尾数以及第七尾数,所述第二高位尾数包括第八尾数,所述第二低位尾数包括第九尾数、第十尾数,第十一尾数以及第十二尾数。
- 根据权利要求11至13中任意一项所述的浮点数计算方法,其特征在于,所述方法还包括:存储所述第一拆分尾数、所述第二拆分尾数、所述第一指数、所述第二指数、第三移位数和第四移位数,所述第三移位数用于表示所述第一拆分尾数的移位数,所述第四移位数用于表示所述第二拆分尾数的移位数。
- 根据权利要求16所述的浮点数计算方法,其特征在于,所述根据第一指数和第二指数获取第一移位数,包括:选择多个所述第二运算结果中的最大值;将多个所述第二运算结果中的最大值分别与各第二运算结果相减以得到所述第一移位数。
- 根据权利要求16或17中任意一项所述的浮点数计算方法,其特征在于,所述方法还包括:将所述第一拆分尾数以及所述第二拆分尾数相乘得到多个第三运算结果;根据多个所述第一移位数对多个所述第三运算结果做移位处理得到多个所述第一运算结果。
- 根据权利要求12至18中任意一项所述的浮点数计算方法,其特征在于,所述方法还包括:获取所述第一浮点数和所述第二浮点数。
- 根据权利要求11至19中任意一项所述的浮点数计算方法,其特征在于,所述第一浮点数还包括第一符号位,所述第二浮点数还包括第二符号位。
- 一种浮点数计算电路,其特征在于,所述浮点数计算电路包括:指数处理电路和计算电路,所述计算电路包括第一乘法电路、第一选择器和加法电路;所述指数处理电路的输出端与所述第一乘法电路的输入端电连接;所述第一乘法电路的输出端与所述第一选择器的输入端电连接;所述第一选择器的输出端与所述加法电路的输入端电连接。
- 根据权利要求21所述的浮点数计算电路,其特征在于,所述浮点数计算电路用于计算第一浮点数和第二浮点数的乘积,所述第一浮点数包括第一指数、第一尾数和第一符号位,所述第二浮点数包括第二指数、第二尾数和第二符号位;所述指数处理电路的输入端用于接收所述第一指数和所述第二指数;所述计算电路的输入端用于接收所述第一尾数和所述第二尾数。
- 根据权利要求22所述的浮点数计算电路,其特征在于,所述加法电路包括第一加法器和累加器;所述第一加法器的输入端与所述第一选择器的输出端电连接,所述第一加法器的输出端与所述累加器的输入端电连接。
- 根据权利要求22或23所述的浮点数计算电路,其特征在于,所述第一乘法电路包括第一乘法器和第一移位寄存器;所述第一移位寄存器的第一输入端与所述指数处理电路的输出端电连接,所述第一移位寄存器的第二输入端与所述第一乘法器的输出端电连接,所述第一移位寄存器的输出端与所述第一选择器的输入端电连接。
- 根据权利要求22至24中任意一项所述的浮点数计算电路,其特征在于,所述指数处理电路包括第二加法器、第二选择器以及第三加法器;所述第二加法器的输出端与所述第三加法器的第一输入端电连接;所述第三加法器的第二输入端与所述第二选择器的输出端电连接,所述第三加法器的输出端与所述第一移位寄存器的第一输入端电连接。
- 根据权利要求22至25中任意一项所述的浮点数计算电路,其特征在于,所述计算电路还包括第二乘法电路,所述第二乘法电路包括第二乘法器和第二移位寄存器;所述第二移位寄存器的第一输入端与所述指数处理电路的输出端电连接,所述第二移位寄存器的第二输入端与所述第二乘法器的输出端电连接,所述第二移位寄存器的输出端与所述第一加法器的输入端电连接。
- 根据权利要求22至25中任意一项所述的浮点数计算电路,其特征在于,所述浮点数计算电路还包括内存控制器、第三选择器和寄存器;所述第三选择器的输入端与所述内存控制器的输出端电连接,所述第三选择器的输出端与所述寄存器的输入端电连接;所述寄存器的第一输出端与所述指数处理电路的输入端电连接,所述寄存器的第二输出端与所述计算电路的输入端电连接。
- 一种计算装置,其特征在于,所述计算装置包括控制电路以及浮点数计算电路;所述浮点数计算电路在所述控制电路的控制下计算数据,所述浮点数计算电路为如权利要求1至10中任一项所述的浮点数计算电路,或者,所述浮点数计算电路为如权利要求21至27中任一项所述的浮点数计算电路。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2021/115811 WO2023028884A1 (zh) | 2021-08-31 | 2021-08-31 | 一种浮点数计算电路以及浮点数计算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117178253A true CN117178253A (zh) | 2023-12-05 |
Family
ID=85411809
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180096895.1A Pending CN117178253A (zh) | 2021-08-31 | 2021-08-31 | 一种浮点数计算电路以及浮点数计算方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117178253A (zh) |
WO (1) | WO2023028884A1 (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7188133B2 (en) * | 2002-06-20 | 2007-03-06 | Matsushita Electric Industrial Co., Ltd. | Floating point number storage method and floating point arithmetic device |
JP6410637B2 (ja) * | 2015-02-25 | 2018-10-24 | ルネサスエレクトロニクス株式会社 | 浮動小数点加算器、半導体装置及び浮動小数点加算器の制御方法 |
CN113138750A (zh) * | 2020-01-20 | 2021-07-20 | 华为技术有限公司 | 算数逻辑单元、浮点数乘法计算的方法及设备 |
-
2021
- 2021-08-31 WO PCT/CN2021/115811 patent/WO2023028884A1/zh unknown
- 2021-08-31 CN CN202180096895.1A patent/CN117178253A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2023028884A1 (zh) | 2023-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109146067B (zh) | 一种基于FPGA的Policy卷积神经网络加速器 | |
CN113077047B (zh) | 一种基于特征图稀疏性的卷积神经网络加速器 | |
CN111008003B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN110717583B (zh) | 卷积电路、处理器、芯片、板卡和电子设备 | |
CN110362293B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN109325590B (zh) | 用于实现计算精度可变的神经网络处理器的装置 | |
CN105426918A (zh) | 归一化相关图像模板匹配高效实现方法 | |
CN110554854B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN115238863A (zh) | 一种卷积神经网络卷积层的硬件加速方法、***及应用 | |
CN111160542A (zh) | 集成电路芯片装置及相关产品 | |
CN117178253A (zh) | 一种浮点数计算电路以及浮点数计算方法 | |
CN116167425B (zh) | 一种神经网络加速方法、装置、设备及介质 | |
CN111258544B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN212569855U (zh) | 一种激活函数的硬件实现装置 | |
US20230266941A1 (en) | Floating Point Number Calculation Circuit and Floating Point Number Calculation Method | |
CN111160543A (zh) | 集成电路芯片装置及相关产品 | |
CN110688087B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN111260070B (zh) | 运算方法、装置及相关产品 | |
CN111258641B (zh) | 运算方法、装置及相关产品 | |
CN111260046B (zh) | 运算方法、装置及相关产品 | |
CN210109789U (zh) | 数据处理器 | |
CN113504892A (zh) | 一种设计乘法器查找表的方法、***、设备及介质 | |
CN112230884B (zh) | 目标检测硬件加速器及加速方法 | |
CN116720554B (zh) | 一种基于fpga技术的多段线性拟合的神经元电路实现方法 | |
CN114237551B (zh) | 一种基于脉动阵列的多精度加速器及其数据处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |