CN109739555B - 包括乘累加模块的芯片、终端及控制方法 - Google Patents

包括乘累加模块的芯片、终端及控制方法 Download PDF

Info

Publication number
CN109739555B
CN109739555B CN201910008593.9A CN201910008593A CN109739555B CN 109739555 B CN109739555 B CN 109739555B CN 201910008593 A CN201910008593 A CN 201910008593A CN 109739555 B CN109739555 B CN 109739555B
Authority
CN
China
Prior art keywords
operand
output
sub
unit
adder
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910008593.9A
Other languages
English (en)
Other versions
CN109739555A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910008593.9A priority Critical patent/CN109739555B/zh
Publication of CN109739555A publication Critical patent/CN109739555A/zh
Priority to PCT/CN2019/126829 priority patent/WO2020140766A1/zh
Priority to US17/362,374 priority patent/US20210326118A1/en
Application granted granted Critical
Publication of CN109739555B publication Critical patent/CN109739555B/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/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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/4824Methods 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 using signed-digit representation
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/556Logarithmic or exponential functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本申请公开了一种包括乘累加模块的芯片、终端及控制方法,涉及芯片领域。上述芯片包括乘累加模块,乘累加模块包括定点通用单元、浮点专用单元和输出选择单元;定点通用单元和浮点专用单元分别与输出选择单元连接;定点通用单元还与浮点专用单元连接,定点通用单元与浮点专用单元共用一组乘法器。通过在芯片的乘累加模块中,将定点运算和浮点运算集成在一个电路上,使该乘累加模块在一个电路中实现定点运算,同时能够实现浮点运算;定点运算单元与浮点运算单元的乘法器的共用,减少了使用的器件总数,从而减少了定点运算单元与浮点运算单元在芯片上的占用面积、以及运算时的功耗。

Description

包括乘累加模块的芯片、终端及控制方法
技术领域
本申请涉及芯片领域,特别涉及一种包括乘累加模块的芯片、终端及控制方法。
背景技术
乘累加模块是芯片上的一种基本计算模块,广泛应用于诸如中央处理器(CentralProcessing Unit,CPU)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、专用集成电路(Application Specific Intergrated Circuits,ASIC)、图形处理器(Graphics Processing Unit,GPU)或其他人工智能(Artificial Intelligence,AI)芯片之类的芯片上。
以用于神经网络模型计算的芯片为例,该芯片上同时存在两种乘累加模块:用于定点运算(也称整数运算)的第一种乘累加模块,和,用于浮点运算的第二种乘累加模块。当需要定点运算时,调用第一种乘累加模块进行运算;当需要浮点运算时,调用第二种乘累加模块进行运算。
由于需要在芯片上同时实现两种乘累加模块,导致该芯片的芯片面积和功耗较大。
发明内容
本申请实施例提供了一种包括乘累加模块的芯片、终端及控制方法,可以解决。所述技术方案如下:
根据本申请的一个方面,提供了一种包括乘累加模块的芯片,上述芯片中包括乘累加模块;该乘累加模块包括:用于输入乘法数的第一输入端和第二输入端、用于输入加法数的上级输入端、用于选择定点计算模式或浮点计算模式的模式选择端和模块输出端;
乘累加模块还包括:定点通用单元、浮点专用单元和输出选择单元;
定点通用单元与第一输入端、第二输入端、上级输入端和模式选择端分别相连,定点通用单元的定点输出端分别与输出选择单元以及浮点专用单元相连;
浮点专用单元与第一输入端、第二输入端、上级输入端、定点输出端和模式选择端分别相连,浮点专用单元的浮点输出端与输出选择单元相连;
输出选择单元,用于根据模式选择端输入的选择信号设置计算模式,在计算模式为定点计算模式时,将定点输出端与模块输出导通;在计算模式为浮点计算模式时,将浮点输出端与模块输出端导通。
根据本申请的另一方面,提供了一种终端,该终端包括如上述方面所述的芯片。
根据本申请的另一方面,提供了一种控制方法,该方法应用于如上述方面所述的芯片中,该方法包括:
接收第一控制信号;
根据第一控制信号,控制芯片中的乘累加模块处于对应的计算模式;计算模式包括定点计算模式和浮点计算模式;
当计算模式处于定点计算模式时,将第一操作数A与第二操作数B相乘,之后与上级乘累加模块的计算结果第三操作数C累加,得到并输出定点运算结果;
当计算模式处于浮点计算模式时,将第一操作数A与第二操作数B进行浮点运算中的乘法部分的计算得到第一中间结果,将第一操作数A、第二操作数B、第三操作数C和第一中间结果进行浮点运算中的加法部分运算后,输出浮点运算结果。
本申请实施例提供的技术方案带来的有益效果至少包括:
通过在乘累加模块中设置定点通用单元和浮点专用单元,该浮点专用单元与定点通用单元的定点输出端相连,由定点通用单元来完成定点计算模式下的乘累加计算,由定点通用单元和浮点专用单元协同完成浮点计算模式下的乘累加计算,实现了同一个乘累加模块能够同时实现定点乘累加运算和浮点乘累加两种运算,由于定点运算单元与浮点运算单元集成在一个电路中,部分器件共用,减少了使用的器件总数,从而减少了定点运算单元与浮点运算单元在芯片上的占用面积、以及减少了芯片在乘累加运算时的功耗。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是相关技术提供的定点整形计算与浮点计算的计算精度的对比图;
图2是相关技术提供的输入位宽16bit的乘累加模块的结构示意图;
图3是相关技术提供的输入位宽8bit的乘累加模块的结构示意图;
图4是本申请一个示例性实施例提供的芯片中乘累加模块的结构示意图;
图5是本申请一个示例性实施例提供的乘累加模块中定点通用单元的结构示意图;
图6是本申请一个示例性实施例提供的乘累加模块中浮点专用单元的结构示意图;
图7是本申请另一个示例性实施例提供的芯片中乘累加模块的结构示意图;
图8是本申请一个示例性实施例提供的应用环境的结构示意图;
图9是本申请一个示例性实施例提供的控制方法的流程图;
图10是本申请另一个示例性实施例提供的控制方法的流程图;
图11是本申请另一个示例性实施例提供的控制方法的流程图;
图12是本申请另一个示例性实施例提供的控制方法的流程图;
图13是本申请另一个示例性实施例提供的控制方法的流程图;
图14是本申请一个示例性实施例提供的电子设备的结构示意图;
图15是本申请一个示例性实施例提供的服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
首先对本申请涉及的若干个名词进行简介:
乘累加运算(Multiply Accumulate,MAC):将第一操作数A和第二操作数B相乘后,将乘积与第三操作数Cin相加的运算,也即Cout=A*B+Cin
乘累加模块:在数字信号处理器或一些微处理器中,用于实现乘累加运算的硬件电路单元,也称为“乘数累加器”。
定点数(fixed-point number):计算机中采用的一种数的表示方法,约定机器中所有数据的小数点位置是固定不变的。在计算机中通常采用两种简单的约定:将小数点的位置固定在数据的最高位之前,或者是固定在最低位之后。一般常称前者为定点小数,后者为定点整数。本申请实施例中,以定点数为定点整数为例来进行说明。当数据小于定点数能表示的最小值时,计算机将它们作0处理,称为下溢;大于定点数能表示的最大值时,计算机将无法表示,称为上溢,上溢和下溢统称为溢出。
浮点数(floating-point number):计算机中采用的另一种数的标识方法,与科学计数法相似,任意一个二进制数N,总可以写成:
N=2E*M;
式中M成为浮点数N的小数部分(也称尾数mantissa),是一个纯小数;E为浮点数N的指数部分(也称阶码exponent),是一个整数。这种表示方法相当于数的小数点位置随比例因子的不同,而在一定范围内可以自由浮动,所以称为浮点标识法。
浮点乘运算:对于第一浮点数NA=2E a*Ma,第二浮点数NB=2E b*Mb,两个浮点数的乘积如下:
NA*NB=2(Ea+Eb)*(Ma*Mb)。
乘累加模块作为基本的计算单元,在CPU、GPU和AI芯片中应用广泛。以AI领域为例,随着人脸识别、图像分类等新兴技术的发展,对乘累加模块的计算精度和速度要求越来越高。从图1中可以看出,32位浮点FP32的动态范围远大于32整形Int32的动态范围,16位浮点FP16的动态范围远大于16位整形Int16的动态范围,可以得出结论:动态范围越大,计算精度越高。因此,在乘累加模块中加入浮点计算模式成为提高计算精度的一种技术方案。
在相关技术中,芯片中同时设置有两种乘累加模块,分别用于支持定点计算模式和浮点计算模式。也即需要设计两套独立硬件结构,一套乘累加模块用于支持定点计算模式,另一套乘累加模块用于支持浮点计算模式,以达到提高乘累加模块的计算精度;这就存在一个问题,两套独立硬件结构在芯片上会占用更大的面积,消耗更多的能耗。
如果还需要同时支持高位宽和低位宽的定点计算模式,比如高位宽则还要独立的一套硬件结构支持低位宽的定点计算模式。
示意性的,图2示出了一种相关技术中用于定点计算模式的乘累加模块的电路结构,该乘累加模块支持位宽16bit的2个操作数之间的乘法运算,该电路中包括了4个乘法器a-d和4个加法器a-d,每个乘法器支持8bit的乘法运算。图2中的11为第一操作数1的第15比特至第8比特,12为第一操作数的第7比特至第0比特;21为第二操作数21的第15比特至第8比特,22为第二操作数22的第7比特至第0比特。
在相关技术中,如若乘累加模块需要支持比16bit更低位宽的定点计算模式,则需要增加两组如图3所示的电路结构,两组电路结构均支持位宽8bit的2个操作数之间的乘法运算,两组电路结构中共包括2个乘法器e-f和2个加法器e-f;而浮点计算模式对应的电路结构中包括4个乘法器和6个加法器。
如果一个乘累加模块既需要支持位宽16bit的2个操作数之间的整数乘法运算,以及支持位宽8bit的2个操作数之间的整数乘法运算,还需要支持位宽16bit的2个操作数之间的浮点乘法计算,则需要10个乘法器和12个加法器。也即,相关技术中的硬件资源需求如表1所示:
表1
乘累加模块配置 乘法器 加法器
16比特整数乘累加模块 4 4
8比特整数乘累加模块 2 2
16比特浮点乘累加模块 4 6
16/8比特的整数乘累加模块 6 6
16/8比特的整数乘累加模块+浮点乘累加模块 10 12
在相关技术中,用于定点计算的乘累加模块和用于浮点计算的乘累加模块是两个互相独立的硬件电路,总体所需要的乘法器和加法器的个数较多,需要占用芯片较大的面积,功耗也很大。以具有多个乘累加模块的AI芯片为例,这些因素直接会制约AI芯片的可制造性、良品率、散热和性能。也即,一方面硬件结构面积更大导致芯片面积更大,芯片面积更大导致成本变高、可制造性变差且良品率变低;另一方面,硬件结构面积更大导致功耗变大,功耗变大会导致散热变多,太高的温度会影响芯片的整体性能。
为了解决芯片上乘累加模块的占用面积以及功耗更大的问题,本申请实施例提供了在同一个乘累加模块中兼容定点乘累加计算和浮点乘累加的技术方案。请参考如下实施例。
图4是本申请的一个示例性实施例提供的芯片中的乘累加模块100的结构示意图,乘累加模块100包括:用于输入乘法数的第一输入端A和第二输入端B、用于输入加法数的上级输入端C_in、用于选择定点计算模式或浮点计算模式的模式选择端mode和模块输出端C_OUT。
乘累加模块100还包括定点通用单元120、浮点专用单元140和输出选择单元160。
定点通用单元120与第一输入端A、第二输入端B、上级输入端C和模式选择端mode分别相连;定点通用单元120的定点输出端分别与输出选择单元160以及浮点专用单元140相连。
浮点专用单元140与第一输入端A、第二输入端B、上级输入端C、定点通用单元120的定点输出端和模式选择端mode分别相连;浮点专用单元140的浮点输出端与输出选择单元160相连。
输出选择单元160与模式选择端mode相连;输出选择单元160用于根据模式选择端mode输入的选择信号设置计算模式。
可选的,计算模式包括定点计算模式和浮点计算模式。
在计算模式为定点计算模式时,定点通用单元120用于将第一输入端A输入的第一操作数A和第二输入端B输入的第二操作数B相乘后与上级输入端C_in输入的第三操作数C累加,从定点输出端输出定点运算结果;
输出选择单元160将定点通用单元120的定点输出端与模块输出端C_OUT导通,从模块输出端C_OUT输出定点运算结果。
在计算模式为浮点计算模式时,定点通用单元120用于对第一输入端输入的第一操作数A和第二输入端输入的第二操作数B进行浮点乘累加运算中的乘法部分计算,从定点通用单元120的定点输出端输出第一中间结果,该第一中间结果输入浮点专用单元140;浮点专用单元140用于将第一输入端输入的第一操作数A、第二输入端输入的操作数B、上级输入端输入的第三操作数C和定点通用单元120的定点输出端输入的第一中间结果进行浮点乘累加运算中的加法部分运算后,从浮点输出端输出浮点运算结果。
输出选择端160将浮点专用单元140的浮点输出端与模块输出端C_OUT导通,从模块输出端C_OUT输出浮点运算结果。
综上所述,本实施例提供的芯片,通过在乘累加模块中设置定点通用单元和浮点专用单元,该浮点专用单元与定点通用单元的定点输出端相连,由定点通用单元来完成定点计算模式下的乘累加计算,由定点通用单元和浮点专用单元协同完成浮点计算模式下的乘累加计算,实现了同一个乘累加模块能够同时实现定点乘累加运算和浮点乘累加两种运算,由于定点运算单元与浮点运算单元集成在一个电路中,部分器件共用,减少了使用的器件总数,从而减少了定点运算单元与浮点运算单元在芯片上的占用面积、以及减少了芯片在乘累加运算时的功耗。
图5示出了本申请的一个示例性实施例提供的定点通用单元120的结构示意图。该定点通用单元120包括:第一乘法器1、第二乘法器2、第三乘法器3和第四乘法器4、加法器1、加法器2、加法器3和定点结果选择单元215。
其中,第一输入端A分为第一子输入端A1和第一子输入端A2,第二输入端B分为第二子输入端B1和第二子输入端B2。上级输入端C分为上级子输入端C1和上级子输入端C2。
第一乘法器1的输入端分别与第一子输入端A1、第二子输入端B1相连;第二乘法器2的输入端分别与第一子输入端A2、第二子输入端B1相连;第三乘法器3的输入端分别与第一子输入端A1、第二子输入端B2相连;第四乘法器4的输入端分别与第一子输入端A2、第二子输入端B2相连。
加法器1的输入端分别与第一乘法器1的输出端、第二乘法器2的输出端相连;加法器2的输入端分别与第三乘法器3的输出端、第四乘法器4的输出端相连;加法器3的输入端分别与加法器1的输出端、加法器4的输出端、上级子输入端C1相连;加法器4的输入端分别与加法器1的输出端、加法器2的输出端、上级子输入端C2、第一输入端A、第二输入端B相连。
定点结果选择单元215的输入端与加法器3的输出端、加法器4的输出端分别相连。
在一个示意性的例子中,第一操作数A、第二操作数B和第三操作数C均为16比特位宽的操作数,第一子输入端A1用于输入第一操作数A的前半部分[15:8],也即第15比特至第8比特,第15比特为最左位置的比特,第0比特为最右位置的比特;第一子输入端A2用于输入第一操作数A的后半部分[7:0]。第二子输入端B1用于输入第二操作数B的前半部分[15:8],第二子输入端B2用于输入第二操作数B的后半部分[7:0]。上级子输入端C1用于输入第三操作数C的前半部分[15:8],上级子输入端C2用于输入第三操作数C的后半部分[7:0]。
在定点计算模式下,上述定点通用单元120用于计算第一操作数A和第二操作数B之间的乘积后,与第三操作数C相加得到。
图6示出了本申请的一个示例性实施例提供的浮点专用单元140的结构示意图,浮点专用单元140包括第一加法器A、第二加法器B、第三加法器C、移位单元205、搜索单元206和浮点结果输出单元207。
第一加法器A的输入端与定点通用单元120的输出端、上级输入端C分别相连,第二加法器B的第三输入端D与定点通用单元120的定点输出端、上级输入端C、移位单元205的输出端分别相连,第三加法器C的输入端与定点通用单元120的输出端、搜索单元206的输出端分别相连。
移位单元205的输入端与第一加法器A的输出端、第二加法器B的输出端分别相连,搜索单元206的输入端与第二加法器B的输出端、第三加法器C的输出端分别相连,浮点结果输出单元207与第二加法器B的输出端、搜索单元206的输出端分别相连。
在计算模式为浮点计算模式时,从第一输入端A输入第一乘法数
Figure BDA0001936383920000081
至乘累加模块,从第二输入端B输入第二乘法数/>
Figure BDA0001936383920000082
至乘累加模块,从上级输入端C输入第一加法数/>
Figure BDA0001936383920000083
至乘累加模块,由浮点专用单元140进行浮点运算,计算公式如下:
E=E1+E2+offset,该公式为指数部分的计算公式;
M=S1M1*S2M2+S3M3,该公式为小数部分的计算公式;
Figure BDA0001936383920000084
该公式为浮点结果的计算公式;
其中,E1是第一乘法数的指数部分,E2是第二乘法数的指数部分,E3是第一加法数的指数部分;S1是第一乘法数的符号位,S2是第二乘法数的符号位,S3是第一加法数的符号位;M1是第一乘法数的小数部分,M2是第二乘法数的小数部分,M3是第一加法数的小数部分;offset是由计算得到的小数结果产生进位导致的指数的相对偏移值。
还需要说明的是,在一些实施例中,如果第一/第二/第三操作数的整数部分是固定值,在表示第一/第二/第三操作数时可以将第一/第二/第三操作数的整数部分去掉,那么在进行浮点计算之前还需要将第一/第二/第三操作数的整数部分添加到数值的比特位的最高位,与小数部分M拼接在一起,得到原始的第一/第二/第三操作数。
在一些事实例中,如果第一/第二/第三操作数的指数部分是经过编码后的数值,需要将第一/第二/第三操作数的指数部分的编码后的数值进行解码,解码得到的数值是原始的指数部分。
示意性的,编码方程式为E(实际)=E(编码)-BIAS进行解码,其中,BIAS=15;当输入的第一操作数的经过编码后的指数部分E(编码)为16时,根据编码方程进行解码,得到第一操作数的指数部分E(实际)为1。
在一些实施例中,当第一/第二/第三操作数的小数部分包括整数(包括0)时,则对第一/第二/第三操作数的小数部分M的计算过程中,在小数部分M之前补一位整数位。
示意性的,当指数部分数值是0的时候,相应的实际数值S*2E*(0.M)中小数部分包括整数部分0;当指数部分数值非0的时候,相应的实际数值S*2E*(1.M)中小数部分包括整数部分1;在上述两种情况下,则在对小数部分0.M和/或1.M进行计算时,需要在小数部分M之前补一位整数位,再进行运算。
上述运算过程由浮点专用单元140的相应的计算单元执行,对应的计算执行过程如下:
在计算模式为浮点计算模式时,定点通用单元120用于将第一操作数
Figure BDA0001936383920000091
的小数部分S1M1和第二操作数/>
Figure BDA0001936383920000092
的小数部分S2M2相乘,得到第一中间结果S1M1*S2M2,从定点输出端输出第一中间结果S1M1*S2M2;其中,小数部分携带有符号位;还用于将第一操作数
Figure BDA0001936383920000093
的指数部分E1与第二操作数/>
Figure BDA0001936383920000094
的指数部分E2相加,得到第一指数和E1+E2
第一加法器A用于将第一指数和E1+E2与第三操作数
Figure BDA0001936383920000095
的指数部分E3的负值相加,得到第二指数和E1+E2-E3
移位单元用于根据第二指数和E1+E2-E3得到移位对象和移位位数,移位对象是第一中间结果S1M1*S2M2或者第三操作数
Figure BDA0001936383920000101
的小数部分S3M3。当移位对象为第一中间结果S1M1*S2M2时,根据移位位数对第一中间结果S1M1*S2M2移位得到移位后的第一中间结果;当移位对象为第三操作数/>
Figure BDA0001936383920000102
的小数部分S3M3时,根据移位位数对第三操作数/>
Figure BDA0001936383920000103
的小数部分S3M3移位得到移位后的第三操作数/>
Figure BDA0001936383920000104
的小数部分;
第二加法器B用于当移位对象为第一中间结果S1M1*S2M2时,将移位后的第一中间结果S1M1*S2M2与第三操作数
Figure BDA0001936383920000105
的小数部分S3M3相加;或者,当移位对象为第三操作数
Figure BDA0001936383920000106
的小数部分S3M3时,将第一中间结果S1M1*S2M2与移位后的第三操作数/>
Figure BDA0001936383920000107
的小数部分相加,得到小数和;
搜索单元用于根据小数和得到小数结果S1M1*S2M2+S3M3、以及计算得到指数的相对偏移值offset,并从第三加法器C得到浮点结果的指数结果E1+E2+offset;
第三加法器C用于将指数的相对偏移值offset与第一指数和相加E1+E2,得到浮点结果的指数结果E1+E2+offset;
浮点结果输出单元207用于根据小数和的符号位确定浮点结果的符号位;将浮点结果的符号位、小数结果S1M1*S2M2+S3M3和指数结果E1+E2+offset拼接在一起,产生浮点运算结果。
需要说明的是,在一些实施例中,通过定点通用单元120计算第一中间结果时,请参考图5,将第一操作数
Figure BDA0001936383920000108
的小数部分S1M1和第二操作数/>
Figure BDA0001936383920000109
的小数部分S2M2分别通过第一输入端A和第二输入端B输入第一乘法器1,或者第二乘法器2,或者第三乘法器3,或者乘法器4,通过第一乘法器1,或者第二乘法器2,或者第三乘法器3,或者乘法器4计算第一操作数/>
Figure BDA00019363839200001015
的小数部分S1M1和第二操作数/>
Figure BDA00019363839200001010
的小数部分S2M2的乘积,通过定点结果选择单元选择输出第一中间结果至浮点专用单元140。
在一些实施例中,浮点计算模式通过定点通用单元120中的加法器4计算第一操作数
Figure BDA00019363839200001011
和第二操作数/>
Figure BDA00019363839200001012
的指数部分的第一指数和,请参考图5,将第一操作数
Figure BDA00019363839200001013
的指数部分E1和第二操作数/>
Figure BDA00019363839200001014
的指数部分E2分别通过第一输入端A和第二输入端B输入加法器4,通过加法器4计算得到第一指数和E1+E2
综上所述,本实施例提供的芯片,通过在乘累加模块中设置定点通用单元和浮点专用单元,该浮点专用单元与定点通用单元的定点输出端相连,由定点通用单元来完成定点计算模式下的乘累加计算,由定点通用单元和浮点专用单元协同完成浮点计算模式下的乘累加计算,实现了同一个乘累加模块能够同时实现定点乘累加运算和浮点乘累加两种运算,由于定点运算单元与浮点运算单元集成在一个电路中,部分器件共用,减少了使用的器件总数,从而减少了定点运算单元与浮点运算单元在芯片上的占用面积、以及减少了芯片在乘累加运算时的功耗。
上述图4至图6实施例提供了一种同时支持定点运算和浮点运算的乘累加模块。在可选实施例中,上述定点通用单元还被设计为支持可伸缩设计的定点通用单元。
定点通用单元的可伸缩体现在:同一个乘累加运算模块既能支持两个高位宽(比如16bit)的整数乘法运算,同时也能兼容多组更低位宽(比如8bit、4bit、2bit)的整数乘法运算。
在该实施例中,同一个乘累加模块能够同时支持两个特性:
第一,支持可伸缩的定点运算;
第二,同时支持定点运算和浮点运算。
采用这种设计,提供一个高复用度的硬件电路单元,把可伸缩的定点运算和浮点运算中所需要的各种乘法操作和加法操作尽可能地复用为通用计算单元,以便最大限度地提高结构复用率,节省硬件面积。
设第一操作数A和第二操作数B是乘累加模块的输入,它的输入数据位宽为2N,N=1,2,3...。输入的拆分模式为m,m=2,4,8,16。那么分组的个数k由以下方程式得到:
k=2N/m;
以N=4,m=2为例子说明,当DSP_MODE=0支持两个16bit的乘累加运算,DSP_MODE=1拆分成两组8bit的乘累加运算,DSP_MODE=2支持两个16bit的浮点乘累加运算。
表2示出了该例子中的三种计算模式下的输入信号和输出信号的结构图。该三种计算模式包括:第一定点计算模式(8bit整数乘累加运算)、第二定点计算模式(16bit整数乘累加运算)、浮点计算模式(16bit浮点乘累加运算)。
表2
Figure BDA0001936383920000121
需要说明的是,上述仅以16bit和8bit来举例说明。在不同实施例中,还可以采用128bit、64bit、32bit、16bit、8bit、4bit和2bit等其他比特数的可能性设计。
在支持可伸缩定点运算时,上述乘累加模块100还包括数据重组器180,第一输入端A和第二输入端B通过数据重组器180与定点通用单元120相连。该数据重组器180用于对第一输入端A和第二输入端B的数据进行重组和/或拆分。
可选的,定点计算模式包括第一定点计算模式和第二定点计算模式。第一定点计算模式为低位宽k的定点计算模式,第二定点计算模式为高位宽2N的定点计算模式,m为2N的约数。
数据重组器180用于在计算模式为第一定点计算模式时,请参考图7,将来自第一输入端A的第一操作数A和来自第二输入端B的第二操作数B分别重组为m组第一子操作数A和第二子操作数B,第一/第二子操作数的比特位宽k=第一/第二操作数的第一比特位宽2N/m;在计算模式为第二定点计算模式时,将第一操作数A和第二操作数B拆分为k组第四子操作数D和第五子操作数E,第四/第五子操作数的比特位宽k=第四/第五操作的第二比特位宽2N/m;其中,所述第二比特位宽/所述第一比特位宽=2M,m、k、N为正整数,M是小于N的任意正整数。
定点通用单元120还用于在计算模式为第一定点计算模式时,将k组第一子操作数A和第二子操作数B相乘后与上级输入端C输入的k个第三子操作数C分别累加,从定点输出端输出定点运算结果;
定点通用单元120还用于在计算模式为第二定点计算模式时,将k组第四子操作数D和第五子操作数E相乘后与上级输入端C输入的k个第三子操作数C分别累加,从定点输出端输出定点运算结果。
在计算模式为第一定点计算模式时,可将第一操作数A和第二操作数B组合为第一子操作数A1和第二子操作数B1、第一子操作数A2和第二子操作数B2,然后将第一子操作数A1/A2和第二子操作数B1/B2相乘,与第三子操作数C1/C2相分别累加,从定点输出端输出上述运算的结果;
在计算模式为第二定点计算模式时,可以将第一操作数A和第二操作数B拆分为第四子操作数D1和第五子操作数E1、第四子操作数D2和第五子操作数E2,然后将第四子操作数D1/D2和第五子操作数E1/E2相乘,与第三子操作数C1/C2相分别累加,从定点输出端输出上述运算的结果。
图7示出了本申请一个示意性实施例提供的乘累加模块的结构框图。具体的,定点通用单元120包括乘法器子单元240、加法器子单元260和定点结果选择单元215;
乘法器子单元240的输入端与数据重组器180相连,加法器子单元260的输入端与乘法器子单元240的输出端和上级输入端C分别相连,定点结果选择单元215的输入端与加法器子单元260的输出端相连,定点结果选择单元215的输出端与输出选择单元160相连。
浮点专用单元140包括浮点加法器子单元220、移位单元205、搜索单元206和浮点结果输出单元207;
浮点加法器子单元220的输入端与数据重组器180、上级输入端C、加法器子单元260的输出端、移位单元205和搜索单元206分别相连,移位单元205的输入端与浮点加法器子单元220的输出端相连,搜索单元206的输入端与浮点加法器子单元220的输出端相连,浮点结果输出单元207与输入端与浮点加法器子单元220的输出端相连,浮点结果输出单元207的输出端与输出选择单元160相连。
可选的,数据重组器180包括k组重组输出端,k组重组输出端中的第i组重组输出端包括第一重组输出端Ai和第二重组输出端Bi
定点通用单元包括
Figure BDA0001936383920000141
个乘法器和/>
Figure BDA0001936383920000142
个加法器,h为第二比特位宽的最小取值,h、X为正整数;/>
Figure BDA0001936383920000143
个乘法器中的第j个乘法器的第一输入端与第f组重组输出端中的第一重组输出端Af相连,所述第j个乘法器的第二输入端与第t组重组输出端中的第二重组输出端Bt相连,其中,f=j-(t-1)*m,t=ceil(j/m),ceil为向上取整,i、j为正整数,且i小于或等于m。
可选的,第j个乘法器,用于将第一操作数A的第f组子操作数Af/Df与第二操作数B的第t组子操作数Bt/Et相乘。
示意性的,数据重组器180包括2组重组输出端,2组重组输出端中包括第一组重组输出端的第一重组输出端A1和第二重组输出端B1、第二组重组输出端的第一重组输出端A2和第二重组输出端B2;此时,定点通用单元120包括4个乘法器和4个加法器,如图7,乘法器子单元240包括第一乘法器1、第二乘法器2、第三乘法器3和第四乘法器4,加法器子单元260包括第四加法器1、第五加法器2、第六加法器3和第七加法器4。
在一些实施例中,定点通用单元120的结构如图7所示,上级输入端包括第一输入端C1和第二输入端C2
第一乘法器1的输入端与第一重组单元输出端A1、第二重组输出端B1分别相连,第二乘法器2的输入端与第一重组输出端A2、第二重组输出端B1分别相连,第三乘法器3的输入端与第一重组输出端A1、第二重组输出端B2分别相连,第四乘法器4的输入端与第一重组输出端A2、第二重组输出端B2分别相连;
第四加法器1的输入端与第一乘法器1的输出端、第二乘法器2的输出端、分别相连,第五加法器2的输入端与第三乘法器3的输出端、第四乘法器4的输出端分别相连;第六加法器3的输入端与第四加法器1的输出端、第五加法器4的输出端、第一输入端C1分别相连;加法器4的输入端与加法器1的输出端、加法器2的输出端、第二输入端C2、第一输入端A、第二输入端分别相连;
定点结果选择单元的输入端与加法器3的输出端、加法器4的输出端分别相连。
可选的,上级输入端C输入的第三操作数C包括第三子操作数C1和第三子操作数C2
在一些实施例中,第一乘法器1,用于将第一重组输出端A1输出的数据与第二重组输出端B1输出的数据相乘,得到第一乘积;第二乘法器2,用于将第一重组输出端A2输出的数据与第二重组输出端B1输出的数据相乘,得到第二乘积;第三乘法器3,用于将第一重组输出端A1输出的数据与第二重组输出端B2输出的数据相乘,得到第三乘积;第四乘法器4,用于将第一重组输出端A2输出的数据与第二重组输出端B2输出的数据相乘,得到第四乘积;
第四加法器1,用于将第一乘积、第二乘积累加,得到第一加法和;第五加法器2,用于将第三乘积和第四乘积相加,得到第二加法和;第六加法器3,用于将第一加法和、第三子操作数C1、加法器4的进位值累加,得到第三加法和;加法器4,用于将第一加法和、第二加法和、第三子操作数C2累加,得到第四加法和;
定点结果选择单元215,用于将第三加法和与第四加法和拼接在一起,得到定点运算结果。
在一些实施例中,第一乘法器1,用于将第一重组输出端A1输出的数据与第二重组输出端B1输出的数据相乘,得到第一乘积;第四乘法器4,用于将第一重组输出端A2输出的数据与第二重组输出端B2输出的数据相乘,得到第四乘积;
第四加法器3,用于将第一乘积和第三子操作数C1累加,得到第五加法和;第七加法器4,用于将第四乘积和第三子操作数C2累加,得到第六加法和;
定点结果选择单元215,用于将第五加法和与第六加法和拼接在一起得到定点输出结果。
综上所述,本实施例提供的包括乘累加模块的芯片通过在乘累加模块中设置定点通用单元和浮点专用单元,该浮点专用单元与定点通用单元的定点输出端相连,由定点通用单元来完成定点计算模式下的乘累加计算,由定点通用单元和浮点专用单元协同完成浮点计算模式下的乘累加计算,实现了同一个乘累加模块能够同时实现定点乘累加运算和浮点乘累加两种运算,由于定点运算单元与浮点运算单元集成在一个电路中,部分器件共用,减少了使用的器件总数,从而减少了定点运算单元与浮点运算单元在芯片上的占用面积、以及减少了芯片在乘累加运算时的功耗。
具体的,上述乘累加模块中使用了4个乘法器和7个加法器,与相关技术方案中的实现上述两种定点计算模式与一种浮点计算模式时,使用10个乘法器和12个加法器比较,减少了5个加法器和6个乘法器。
在一些实施例中,上述任一乘累加模块可以应用于神经网络芯片中,如图8所示,是一个示例性实施例提供的包括神经网络模型的芯片结构示意图。该芯片包括若干个脉动阵列,每个脉动阵列包括X*Y个所述乘累加模块;
对于同一个所述脉动阵列,所述第i行第j列的乘累加模块的模块输出端,与所述第i+1行第j列的乘累加模块的上级输入端相连;
或者,
对于同一个所述脉动阵列,所述第i行第j列的乘累加模块的模块输出端,与所述第i行第j+1列的乘累加模块的上级输入端相连。
其中,脉动阵列中至少一个脉动阵列的第i行第j列的乘累加模块的输入端与应用层相连,至少一个脉动阵列的第p行第q列的乘累加模块的输出端与应用层相连;至少一个脉动阵列的第p行第q列的乘累加模块的输出端是定点结果或者浮点结果的输出端,i、j、p、q为正整数。
示意性的,芯片上包括一个16*16的脉动阵列,其中,脉动阵列的第3行第2列乘累加模块的上级输入端与脉动阵列的第2行第2列乘累加模块的模块输出端相连;可选的,脉动阵列的第3行第2列乘累加模块的上级输入端还可以与脉动阵列的第3行第1列乘累加模块的模块输出端相连。
如图8,芯片上包括该神经网络模型上包括了接口单元a、片上数据存储阵列b、预处理引擎c、卷积/矩阵运算引擎d、片上指令存储h、执行单元g、控制单元f和其他引擎e。其中,卷积/矩阵运算引擎d由N层乘累加模块组成网状构成,每一层中包括至少一个乘累加模块,N为正整数。
该神经网络芯片的片上数据存储阵列b的输入端与接口单元a、预处理引擎c、卷积/矩阵运算引擎d和其他引擎e相连,输出端与预处理引擎c、卷积/矩阵运算引擎d和其他引擎e;预处理引擎c、卷积/矩阵运算引擎d和其他引擎e的输入端分别与控制单元f相连;控制单元f的输入端与执行单元g的输出端相连;执行单元g的输入端与片上指令存储h的输出端相连;片上指令存储h的输入端与接口单元a的输出端相连。
接口单元a,用于数据的输入;片上数据存储阵列b,用于中间结果的暂存;预处理引擎c,用于数据的预处理;卷积/矩阵运算引擎d,用于数据的运算;片上指令存储h,用于指令的存储;执行单元g,用于加载并执行指令;控制单元f,用于控制引擎对数据的处理;其他引擎e,用于执行其他操作。
可选的,上述乘累加模块集成在芯片上,上述芯片是CPU、GPU、FPGA、ASIC或其他AI芯片中的任意一种。
图9是本申请的一个示例性实施例提供的控制方法的流程图,该方法应用于上述图4至图8所示的任一芯片中,上述芯片中包括乘累加模块,该方法包括:
步骤301,接收第一控制信号。
乘累加模块包括模式选择端,该模式选择端用于选择定点计算模式或浮点计算模式。乘累加模块通过模式选择端接收第一控制信号,第一控制信号包括计算模式信息。比如,第一控制信号用二位二进制数表示,用“00”表示定点计算模式,“10”表示浮点计算模式。
步骤302,根据第一控制信号,控制芯片中的乘累加模块处于对应的计算模式。
乘累加模块包括定点通用单元和浮点专用单元;乘累加模块根据第一控制信号中的计算模式信息,将定点通用单元或浮点专用单元的电路导通。
当定点通用单元的电路导通时,乘累加模块处于定点计算模式;当浮点专用单元的电路导通时,乘累加模块处于浮点计算模式。
当乘累加模块处于定点计算模式时,执行步骤303;当乘累加模块处于浮点计算模式时,执行步骤305。
比如,用二进制的“00”表示定点计算模式,二进制的“10”表示浮点计算模式;当第一控制信号是“00”时,定点计算模式在乘累加模块中对应的电路导通,执行步骤303;当第一控制信号是“10”时,浮点计算模式在乘累加模块中对应的电路导通,执行步骤305。
步骤303,当计算模式处于定点计算模式时,将第一操作数A与第二操作数B相乘。
乘累加模块包括输入乘法数的第一输入端和第二输入端、输入加法数的上级输入端。当计算模式处于定点计算模式时,乘累加模块通过乘法器将从第一输入端输入的第一操作数A和从第二输入端输入的第二操作数B相乘。
步骤304,与上级乘累加模块的计算结果第三操作数C累加,得到并输出定点运算结果。
乘累加模块通过加法器将上述第一操作数A与第二操作数B的乘积与从上级输入端输入的第三操作数C累加,得到定点运算的结果;定点运算结果为最终的运算结果,输出定点运算结果。
步骤305,当计算模式处于浮点计算模式时,将第一操作数A与第二操作数B进行浮点运算中的乘法部分的计算得到第一中间结果。
浮点专用单元与定点通用单元共用乘法器,当计算模式处于浮点计算模式时,乘累加模块通过定点通用单元中的乘法器将第一操作数A与第二操作数B中的小数部分相乘,计算得到第一中间结果。
步骤306,将第一操作数A、第二操作数B、第三操作数C和第一中间结果进行浮点运算中的加法部分的运算后,输出浮点运算结果。
乘累加模块通过浮点专用单元中的加法器将第一操作数A、第二操作数B、第三操作数C的指数部分进行加法运算,并对第三操作数C的小数部分和第一中间结果进行加法运算;乘累加模块浮点结果输出单元将指数部分和小数部分的加法运算的结果合并在一起得到并输出浮点运算结果。
综上所述,本实施例提供的控制方法,通过接收第一控制信号;根据第一控制信号,控制芯片中的乘累加模块处于对应的计算模式;当乘累加模块的计算模式处于定点计算模式时,进行定点运算,当乘累加模块的计算模式处于浮点计算模式时,进行浮点运算。该方法在一个电路中实现了定点运算与浮点运算的兼容,由于定点运算单元与浮点运算单元集成在一个电路中,乘法器共用,减少了使用的器件总数,从而减少了定点运算单元与浮点运算单元在芯片上的占用面积、以及运算时的功耗。
当乘累加模式的计算模式为浮点计算模式时,从第一输入端A输入第一乘法数
Figure BDA0001936383920000191
至乘累加模块,从第二输入端B输入第二乘法数/>
Figure BDA0001936383920000192
至乘累加模块,从上级输入端C输入第一加法数/>
Figure BDA0001936383920000193
至乘累加模块,由浮点专用单元140进行浮点运算,计算公式如下:
E=E1+E2+offset,该公式为指数部分的计算公式;
M=S1M1*S2M2+S3M3,该公式为小数部分的计算公式;
Figure BDA0001936383920000194
该公式为浮点结果的计算公式;
其中,E1是第一乘法数的指数部分,E2是第二乘法数的指数部分,E3是第一加法数的指数部分;S1是第一乘法数的符号位,S2是第二乘法数的符号位,S3是第一加法数的符号位;M1是第一乘法数的小数部分,M2是第二乘法数的小数部分,M3是第一加法数的小数部分;offset是由计算得到的小数结果产生进位导致的指数的相对偏移值。具体的,请参考图10,将图9中的步骤305至步骤306替换为步骤3061至步骤3069,对计算模式为浮点计算模式时进行详细说明,步骤如下:
步骤3061,将第一操作数A的小数部分和第二操作数B的小数部分相乘,得到第一中间结果。
对应的,第一操作数A是第一乘法数
Figure BDA0001936383920000195
第二操作数B是第二乘法数
Figure BDA0001936383920000196
第三操作数C是第一加法数/>
Figure BDA0001936383920000197
浮点专用单元与定点通用单元共用乘法器,乘累加模块通过定点通用单元的乘法器将第一操作数
Figure BDA0001936383920000198
的小数部分S1M1和第二操作数/>
Figure BDA0001936383920000199
的小数部分S2M2相乘,得到第一中间结果S1M1*S2M2
步骤3062,将第一操作数A的指数部分与第二操作数B的指数部分相加,得到第一指数和。
乘累加模块还通过定点通用单元中的加法器将第一操作数
Figure BDA00019363839200001910
的指数部分E1与第二操作数/>
Figure BDA00019363839200001911
的指数部分E2相加,得到第一指数和E1+E2
步骤3063,将第一指数和与第三操作数C的指数部分的负值相加,得到第二指数和。
乘累加模块通过浮点专用单元中的加法器将第一指数和E1+E2与第一加法数
Figure BDA00019363839200001912
的指数部分的负值-E3相加,得到第二指数和E1+E2-E3
步骤3064,根据第二指数和得到移位对象和移位位数,移位对象是第一中间结果或者第三操作数C的小数部分。
乘累加模块通过移位单元对第二指数和E1+E2-E3进行数据处理,得到移位对象和移位对象的移位位数。
步骤3065,根据移位位数对第一中间结果移位得到移位后的第一中间结果,或者,根据移位位数对第三操作数C的小数部分移位得到移位后的第三操作数C的小数部分。
当移位对象为第一中间结果S1M1*S2M2时,根据移位位数对第一中间结果S1M1*S2M2移位得到移位后的第一中间结果;当移位对象为第三操作数
Figure BDA0001936383920000201
的小数部分S3M3时,根据移位位数对第三操作数/>
Figure BDA0001936383920000202
的小数部分S3M3移位得到移位后的第三操作数/>
Figure BDA0001936383920000203
的小数部分。
步骤3066,将移位后的第一中间结果与第三操作数C的小数部分相加,或者,将第一中间结果与移位后的第三操作数C的小数部分相加,得到小数和。
当移位对象为第一中间结果S1M1*S2M2时,将移位后的第一中间结果S1M1*S2M2与第三操作数
Figure BDA0001936383920000204
的小数部分S3M3相加;或者,当移位对象为第三操作数/>
Figure BDA0001936383920000205
的小数部分S3M3时,将第一中间结果S1M1*S2M2与移位后的第三操作数/>
Figure BDA0001936383920000206
的小数部分相加,得到小数和。
步骤3067,根据小数和得到小数结果、浮点结果的符号位以及计算得到指数的相对偏移值。
根据小数和得到小数结果S1M1*S2M2+S3M3、以及计算得到指数的相对偏移值offset。
乘累加模块通过搜索单元对小数和进行数据处理,得到小数结果和指数的相对偏移值offset;通过浮点结果输出单元获取小数和的符号位作为浮点结果的符号位。
步骤3068,将所述相对偏移值与所述第一指数和相加,得到浮点结果的指数结果。
乘累加模块通过加法器将指数的相对偏移值offset与第一指数和相加E1+E2,得到浮点结果的指数结果,并通过搜索单元将上述相加的结果更新到指数结果中,得到最终的浮点结果的指数结果E1+E2+offset。
步骤3069,将浮点结果的符号位、小数结果和指数结果拼接在一起得到浮点结果。
乘累加模块通过浮点结果输出单元将浮点结果的符号位、小数结果和指数结果拼接在一起得到浮点结果。
综上所述,本实施例提供的控制方法,通过接收第一控制信号;根据第一控制信号,控制芯片中的乘累加模块处于对应的计算模式;当乘累加模块的计算模式处于定点计算模式时,进行定点运算,当乘累加模块的计算模式处于浮点计算模式时,进行浮点运算。该方法在一个电路中实现了定点运算与浮点运算的兼容,由于定点运算单元与浮点运算单元集成在一个电路中,乘法器共用,减少了使用的器件总数,从而减少了定点运算单元与浮点运算单元在芯片上的占用面积、以及运算时的功耗。
当乘累加单元的计算模式是定点计算模式时,定点计算模式包括第一定点计算模式和第二定点计算模式,请参考图11,是对定点计算模式包括第一定点计算模式和第二定点计算模式的乘累加模块进行说明,并以第一定点计算模式为8比特位宽的定点计算模式,第二定点计算模式为16比特位宽的定点计算模式为例:
步骤401,接收第一控制信号。
乘累加模块包括模式选择端,该模式选择端用于选择乘累加模块的计算模式为第一定点计算模式、第二定点计算模式或浮点计算模式。乘累加模块通过模式选择端接收第一控制信号,第一控制信号包括计算模式信息。比如,第一控制信号用二位二进制数表示,用“00”表示第一定点计算模式,“01”表示第二定点计算模式,“10”表示浮点计算模式。
步骤402,根据第一控制信号,控制芯片中的乘累加模块处于对应的计算模式。
乘累加模块包括定点通用单元和浮点专用单元;乘累加模块根据第一控制信号中的计算模式信息,将定点通用单元或浮点专用单元的电路导通。
当定点通用单元的电路导通时,乘累加模块处于定点计算模式;当浮点专用单元的电路导通时,乘累加模块处于浮点计算模式。
示意性的,当模式选择端接收到的电信号为“00”,乘累加模块置于第一定点计算模式;当模式选择端接收到的电信号为“01”,乘累加模块置于第二定点计算模式;当模式选择端接收到的电信号为“10”,乘累加模块置于浮点计算模式。
需要说明的是,乘累加模块的计算模式的选择是依据电子设备的应用层的程序运行的需求决定的。
步骤403,当计算模式处于浮点计算模式时,将第一操作数A与第二操作数B进行浮点运算中的乘法部分的计算得到第一中间结果。
请参考图9中步骤305,在此不再加以赘述。
步骤404,将第一操作数A、第二操作数B、第三操作数C和第一中间结果进行浮点运算中的加法部分的运算后,输出浮点运算结果。
请参考图9中步骤306,在此不再加以赘述。
步骤405,在计算模式为第一定点计算模式时,将m组第一子操作数A和第二子操作数B相乘。
在计算模式为第一定点计算模式时,乘累加模块中的数据重组器将来自第一输入端的第一操作数A和来自第二输入端的第二操作数B分别重组为m组第一子操作数A和第二子操作数B,第一/第二子操作数的比特位宽k=第一/第二操作数的第一比特位宽2N/m;通过乘法器将m组第一子操作数A和第二子操作数B相乘,m、N为正整数。
需要说明的是,第一定点模式下的第一比特位宽小于定点计算模式能够计算的操作数的最大比特位宽;最大比特位宽是第二比特位宽,第二比特位宽/第一比特位宽=2M,M是小于N的任意正整数。
步骤406,与上级输入端输入的m个第三子操作数C分别累加,从定点输出端输出定点运算结果。
乘累加模块通过加法器将上述m组第一子操作数A和第二子操作数B相乘的结果与上级输入端输入的m个第三子操作数C分别累加,最终得到定点运算结果,并通过定点结果选择单元输出定点运算结果。
示意性的,当m为2时,第三操作数C包括第三子操作数C1和第三子操作数C2;当计算模式为第一定点计算模式时,第一操作数A重组后包括第一子操作数A1和第一子操作数A2,第二操作数B重组后包括第二子操作数B1和第二子操作数B2;步骤405至步骤406的运算过程具体如下:
乘累加模块通过第一乘法器1将第一子操作数A1和第二子操作数B1相乘,得到第一乘积;通过第四乘法器4将第一子操作数A2和第二子操作数B2相乘,得到第四乘积;通过第四加法器1将第一乘积和第三子操作数C1累加,得到第五加法和;通过第七加法器4将第四乘积和第三子操作数C2累加,得到第六加法和;通过定点结果选择单元将第五加法和与第六加法和拼接在一起得到定点运算结果,并输出定点运算结果。
比如,如图12所示的数据流,第二定点计算模式的操作数的数据位宽为16bit,m为2,则第一定点计算模式的操作数的数据位宽为8bit。在第一输入端和第二输入端输入8bit的操作数1和8bit的操作数2,上级输入端输入48bit的数据3;数据1通过数据重组器重组后,将2个数据1拼接成为一个16bit的数据11,上述数11的高8位和低8位均为数据1,同理,数据2拼接成为一个16bit的数据22,数据22的高8位和低8位均为数据2;数据5则拆分为高24位和低24位;
乘法器1将数据11的高8位和数据22的高8位相乘,得到位宽16bit的第一乘积“数据1*数据2”;乘法器4将数据11的低8位和数据22的低8位相乘,得到位宽16bit的第二乘积“数据1*数据2”;
加法器1将第一乘积与数据5的高24位累加,得到24bit的第五加法和“(数据1*数据2)+数据5的高24位”;加法器3将第四乘积与数据5的低24位累加,得到24bit的第六加法和“(数据1*数据2)+数据5的低24位”;
定点选择单元将第五加法和与第六加法和分别拼接至高24位与低24位,得到48bit的定点运算结果,并输出上述定点运算结果。
上述过程的数据流表示如下:
SIZE=16;操作数位宽为16bit;
SUB_PART_SIZE=8;子操作数位宽为8bit;
SUB_PART_NUMBER=SIZE/SUB_PART_SIZE;组数为操作数位宽为16bit/子操作数位宽为8bit,分为2组;
SUB_PART_H=RANGE(SIZE_PART_NUMBER*SUB_PART_SIZE-1,SUB_PA RT_SIZE);高8位为[15:8];
SUB_PART_L=RANGE(SUB_PART_SIZE-1,0);低8位为[7:0];
A1=unpack(A,SUB_PART_H);A1为高8位;
A0=unpack(A,SUB_PART_L);A0为低8位;
B1=unpack(B,SUB_PART_H);B1为高8位;
B0=unpack(B,SUB_PART_L);B0为低8位;
C1=C_IN_H;C1为高24位;
C0=C_IN_L;C0为低24位;
C_OUT_H=A1*B1+C_IN_H;C_OUT_H为高24位的计算结果;
C_OUT_L=A0*B0+C_IN_L;C_OUT_L为低24位的计算结果。
步骤407,在计算模式为第二定点计算模式时,将m组第四子操作数D和第五子操作数E相乘。
在计算模式为第二定点计算模式时,乘累加模块中的数据重组器将第一操作数A和第二操作数B拆分为m组第四子操作数D和第五子操作数E,第四/第五子操作数的比特位宽k=第四/第五操作数的第二比特位宽2N/m;通过乘法器将m组第四子操作数D和第五子操作数E相乘。
步骤408,与上级输入端输入的m个第三子操作数C分别累加,从定点输出端输出定点运算结果。
乘累加模块通过加法器将上述m组第四子操作数D和第五子操作数E相乘的结果与上级输入端输入的m个第三子操作数C分别累加,最终得到定点运算结果,并通过定点结果选择单元输出定点运算结果。
示意性的,当m为2时,第三操作数C包括第三子操作数C1和第三子操作数C2;当计算模式为第二定点计算模式时,第一操作数A拆分后包括第四子操作数D1和第四子操作数D2,第二操作数B拆分后包括第五子操作数E1和第五子操作数E2;步骤407至步骤408的运算过程具体如下:
乘累加模块通过第一乘法器1将第四子操作数D1和第五子操作数E1相乘,得到第一乘积;通过第二乘法器2将第四子操作数D2和第五子操作数E1相乘,得到第二乘积;通过第三乘法器3将第四子操作数D1和第五子操作数E2相乘,得到第三乘积;通过第四乘法器4将第四子操作数D2和第五子操作数E2相乘,得到第四乘积;
通过第四加法器1将第一乘积、第二乘积累加,得到第一加法和;通过第五加法器2将第三乘积和第四乘积相加,得到第二加法和;通过第六加法器3将第一加法和、第二加法和、第三子操作数C1、加法器4的进位值累加,得到第三加法和;通过第七加法器4将第一加法和、第二加法和、第三子操作数C2累加,得到第四加法和;通过定点结果选择单元将第三加法和与第四加法和拼接在一起,得到定点运算结果。
比如,如图13所示的数据流,第二定点计算模式的操作数的数据位宽为16bit,m为2;在第一输入端和第二输入端输入16bit的操作数3和16bit的操作数4,上级输入端输入48bit的数据3;数据1通过数据重组器拆分后,将数据1拆分为一个8bit的数据31和一个8bit的数据32,上述数据31为数据3的高8位、数据32为数据3的低8位,同理,数据4拆分为一个8bit的数据41和一个8bit的数据42,上述数据41为数据4的高8位、数据42为数据4的低8位;数据5则拆分为高24位和低24位;
乘法器1将数据31和数据41相乘,得到位宽16bit的第一乘积“数据31*数据41”;乘法器2将数据32和数据41相乘,得到位宽16bit的第二乘积“数据32*数据41”;乘法器3将数据31和数据42相乘,得到位宽16bit的第三乘积“数据31*数据42”;乘法器4将数据32和数据42相乘,得到位宽16bit的第四乘积“数据32*数据42”;
加法器1将第一乘积“数据31*数据41”、第二乘积“数据32*数据41”累加,得到位宽24bit的第一加法和“数据31*数据41+数据32*数据41”;加法器2将第三乘积“数据31*数据42”和第四乘积“数据32*数据42”相加,得到位宽16bit的第二加法和“数据31*数据42+数据32*数据42”;加法器3将第一加法和的高8位、数据5的高24位以及加法器4的进位值累加,得到位宽24bit的第三加法和,加法器4将第一加法和的低16位、第二加法和、数据5的低24位累加,得到位宽24bit第四加法和“(数据31*数据42+数据32*数据42)+(数据31*数据41+数据32*数据41)+数据5的低24位”,将位宽24bit的第三加法和通过定点结果选择单元拼接在一起输出位宽48bit的定点运算结果。
上述过程的数据流表示如下:
SIZE=16;操作数位宽为16bit;
SUB_PART_SIZE=8;子操作数位宽为8bit;
SUB_PART_NUMBER=SIZE/SUB_PART_SIZE;组数为操作数位宽为16bit/子操作数位宽为8bit,分为2组;
SUB_PART_H=RANGE(SIZE_PART_NUMBER*SUB_PART_SIZE-1,SUB_PA RT_SIZE);高8位为[15:8];
SUB_PART_L=RANGE(SUB_PART_SIZE-1,0);低8位为[7:0];
A1=unpack(A,SUB_PART_H);A1为高8位;
A0=unpack(A,SUB_PART_L);A0为低8位;
B1=unpack(B,SUB_PART_H);B1为高8位;
B0=unpack(B,SUB_PART_L);B0为低8位;
C1=C_IN_H;C1为高24位;
C0=C_IN_L;C0为低24位;
ADD1=shift(A1*B1,SUB_PART)+A0B1;第一乘积与第二乘积的第一加法和;
ADD2=shift(A1*B0,SUB_PART)+A0B0;第三乘积与第四乘积的第二加法和;
ADD3=C_IN_L+ADD2+ADD1_L;第一加法和、第二加法和与上级加法数的低24位的第四加法和;
ADD4=carry(ADD3)+ADD1_H+C_IN_H;第一加法和、上级加法数的高24位、第三加法和的进位值的第三加法和;
C_OUT_H=ADD4;第三加法和为高24位的计算结果;
C_OUT_L=ADD3.第四加法和为低24位的计算结果。
综上所述,本实施例提供的控制方法,通过接收第一控制信号;根据第一控制信号,控制芯片中的乘累加模块处于对应的计算模式;当乘累加模块的计算模式处于定点计算模式时,进行定点运算,当乘累加模块的计算模式处于浮点计算模式时,进行浮点运算。该方法在一个电路中实现了定点运算与浮点运算的兼容,由于定点运算单元与浮点运算单元集成在一个电路中,乘法器共用,减少了使用的器件总数,从而减少了定点运算单元与浮点运算单元在芯片上的占用面积、以及运算时的功耗。
本实施例提供的控制方法,还通过在一个电路中支持两个高位宽的整数乘法运算的同时,兼容多组更低位宽的整数乘法运算,减少了同时支持不同位宽的整数乘法运算时电路中使用的器件的总数,减少了定点运算单元在芯片上的占用面积、以及运算时的功耗。
请参考图14,其示出了本申请一个实施例提供的电子设备的结构示意图。该电子设备用于实施上述实施例中提供的控制方法。可选的,电子设备包括智能手机、服务器、物联网(Internet of Things,IoT)设备、云服务器、端侧设备中的至少一种,具体来讲:
电子设备500可以包括RF(Radio Frequency,射频)电路510、包括有一个或一个以上计算机可读存储介质的存储器520、输入单元530、显示单元540、传感器550、音频电路560、WiFi(wireless fidelity,无线保真)模块570、包括有一个或者一个以上处理核心的处理器580、以及电源590等部件。本领域技术人员可以理解,图14中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路510可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器580处理;另外,将涉及上行的数据发送给基站。通常,RF电路510包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路510还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(CodeDivision Multiple Access,码分多址)、WCDMA(Wideband Code Division MultipleAccess,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(ShortMessaging Service,短消息服务)等。
存储器520可用于存储软件程序以及模块,处理器580通过运行存储在存储器520的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器520可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备500的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器520还可以包括存储器控制器,以提供处理器580和输入单元530对存储器520的访问。
输入单元530可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元530可包括图像输入设备531以及其他输入设备532。图像输入设备531可以是摄像头,也可以是光电扫描设备。除了图像输入设备531,输入单元530还可以包括其他输入设备532。具体地,其他输入设备532可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元540可用于显示由用户输入的信息或提供给用户的信息以及电子设备500的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元540可包括显示面板541,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板541。
电子设备500还可包括至少一种传感器550,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板541的亮度,接近传感器可在电子设备500移动到耳边时,关闭显示面板541和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于电子设备500还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路560、扬声器561,传声器562可提供用户与电子设备500之间的音频接口。音频电路560可将接收到的音频数据转换后的电信号,传输到扬声器561,由扬声器561转换为声音信号输出;另一方面,传声器562将收集的声音信号转换为电信号,由音频电路560接收后转换为音频数据,再将音频数据输出处理器580处理后,经RF电路510以发送给比如另一电子设备,或者将音频数据输出至存储器520以便进一步处理。音频电路560还可能包括耳塞插孔,以提供外设耳机与电子设备500的通信。
WiFi属于短距离无线传输技术,电子设备500通过WiFi模块570可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图14示出了WiFi模块570,但是可以理解的是,其并不属于电子设备500的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器580是电子设备500的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器520内的软件程序和/或模块,以及调用存储在存储器520内的数据,执行电子设备500的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器580可包括一个或多个处理核心;优选的,处理器580可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器580中。
电子设备500还包括如上述图4至图8任一所示的包括乘累加模块的芯片582。该包括乘累加模块的芯片582可以实现如上述实施例提供的控制方法。图14给出了一种包括乘累加模块的芯片582在电子设备500中的连接方式,但包括乘累加模块的芯片582在电子设备500中的连接方法不仅限于上述一种方法,还可以与根据需要实现的功能做出适应性的连接,比如,当需要包括乘累加模块的芯片582完成图像的处理时,可以直接与图像输入设备531相连。
电子设备500还包括给各个部件供电的电源590(比如电池),优选的,电源可以通过电源管理系统与处理器580逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源590还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,电子设备500还可以包括蓝牙模块等,在此不再赘述。
图15示出了本申请一个实施例提供的服务器的结构示意图。该服务器用于实施上述实施例中提供的控制方法。具体来讲:
所述服务器600包括中央处理单元(CPU)601、包括随机存取存储器(RAM)602和只读存储器(ROM)603的系统存储器604,以及连接系统存储器604和中央处理单元601的系统总线605。所述服务器600还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)606,和用于存储操作系统613、应用程序614和其他程序模块615的大容量存储设备607。
所述基本输入/输出系统606包括有用于显示信息的显示器608和用于用户输入信息的诸如鼠标、键盘之类的输入设备609。其中所述显示器608和输入设备609都通过连接到系统总线605的输入输出控制器610连接到中央处理单元601。所述基本输入/输出系统606还可以包括输入输出控制器610以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器610还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备607通过连接到系统总线605的大容量存储控制器(未示出)连接到中央处理单元601。所述大容量存储设备607及其相关联的计算机可读介质为服务器600提供非易失性存储。也就是说,所述大容量存储设备607可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器604和大容量存储设备607可以统称为存储器。
根据本申请的各种实施例,所述服务器600还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器600可以通过连接在所述系统总线605上的网络接口单元611连接到网络612,或者说,也可以使用网络接口单元611来连接到其他类型的网络或远程计算机系统(未示出)。
所述服务器600还包括如图4至图8任一所示的包括乘累加模块的芯片616,乘累加模块616与服务器600中的其他模块通过系统总线连接。该包括乘累加模块的芯片616可以实现如上述实施例提供的控制方法。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (15)

1.一种包括乘累加模块的芯片,其特征在于,所述芯片中包括乘累加模块;所述乘累加模块包括:用于输入乘法数的第一输入端和第二输入端、用于输入加法数的上级输入端、用于选择定点计算模式或浮点计算模式的模式选择端和模块输出端;
所述乘累加模块还包括:定点通用单元、浮点专用单元和输出选择单元;
所述定点通用单元与所述第一输入端、所述第二输入端、所述上级输入端和所述模式选择端分别相连,所述定点通用单元的定点输出端分别与所述输出选择单元以及所述浮点专用单元相连;
所述浮点专用单元与所述第一输入端、所述第二输入端、所述上级输入端、所述定点输出端和所述模式选择端分别相连,所述浮点专用单元的浮点输出端与所述输出选择单元相连;
所述输出选择单元,用于在所述模式选择端所指示的计算模式为定点计算模式时,将所述定点输出端与模块输出端导通;在所述计算模式为浮点计算模式时,将所述浮点输出端与所述模块输出端导通。
2.根据权利要求1所述的芯片,其特征在于,
在所述计算模式为所述定点计算模式时,所述定点通用单元用于将所述第一输入端输入的第一操作数和所述第二输入端输入的第二操作数相乘后与所述上级输入端输入的第三操作数累加,从所述定点输出端输出定点运算结果;
在所述计算模式为所述浮点计算模式时,所述定点通用单元用于对所述第一输入端输入的所述第一操作数和所述第二输入端输入的第二操作数进行浮点乘累加运算中的乘法部分计算,从所述定点输出端输出第一中间结果;所述浮点专用单元用于将所述第一输入端输入的所述第一操作数、所述第二输入端输入的所述第二操作数、所述上级输入端输入的所述第三操作数和所述定点输出端输入的所述第一中间结果进行所述浮点乘累加运算中的加法部分运算后,从所述浮点输出端输出浮点运算结果。
3.根据权利要求2所述的芯片,其特征在于,所述浮点专用单元包括:第一加法器、第二加法器、第三加法器、移位单元、搜索单元和浮点结果输出单元;
所述第一加法器的输入端与所述定点通用单元的输出端、所述上级输入端分别相连,所述第二加法器的输入端与所述定点通用单元的所述定点输出端、所述上级输入端、所述移位单元的输出端分别相连,所述第三加法器的输入端与所述定点通用单元的输出端、所述搜索单元的输出端分别相连;
所述移位单元的输入端与所述第一加法器的输出端、所述第二加法器的输出端分别相连,所述搜索单元的输入端与所述第二加法器的输出端、所述第三加法器的输出端分别相连,所述浮点结果输出单元与所述第二加法器的输出端、所述搜索单元的输出端分别相连。
4.根据权利要求3所述的芯片,其特征在于,所述第一操作数、所述第二操作数和所述第三操作数为浮点数,所述浮点数包括指数部分和小数部分;
所述定点通用单元,用于将所述第一操作数的小数部分和所述第二操作数的小数部分相乘,得到所述第一中间结果;还用与将所述第一操作数指数部分与所述第二操作数的指数部分相加,得到第一指数和;
所述第一加法器,用于将所述第一指数和与所述第三操作数的指数部分的负值相加,得到第二指数和;
所述移位单元,用于根据所述第二指数和得到移位对象和移位位数,所述移位对象是所述第一中间结果或者所述第三操作数的小数部分;当所述移位对象是所述第一中间结果时,根据所述移位位数对所述第一中间结果移位得到所述移位后的第一中间结果;或者,当所述移位对象是所述第三操作数的小数部分时,根据所述移位位数对所述第三操作数的小数部分移位得到所述移位后的所述第三操作数的小数部分;
所述第二加法器,用于当所述移位对象是所述第一中间结果时,将移位后的第一中间结果与所述第三操作数的小数部分相加得到小数和;或者,当所述移位对象是所述第三操作数的小数部分时,将所述第一中间结果与移位后的所述第三操作数的小数部分相加得到所述小数和;
所述搜索单元,用于根据所述小数和得到小数结果、以及计算得到指数的相对偏移值,并从所述第三加法器得到浮点结果的指数结果;
所述第三加法器,用于将所述相对偏移值与所述第一指数和相加,得到所述指数结果;
所述浮点结果输出单元,用于根据所述小数和的符号位确定所述浮点结果的符号位;将所述浮点结果的符号位、所述小数结果和所述指数结果拼接在一起生成所述浮点运算结果。
5.根据权利要求1至4任一所述的芯片,其特征在于,所述乘累加模块还包括:数据重组器;
所述第一输入端和所述第二输入端通过所述数据重组器与所述定点通用单元相连;
所述数据重组器,用于在所述计算模式为第一定点计算模式时,将来自所述第一输入端的第一操作数和来自所述第二输入端的第二操作数分别重组为m组第一子操作数和第二子操作数,第一/第二子操作数的比特位宽k=第一/第二操作数的第一比特位宽2N/m;
在所述计算模式为第二定点计算模式时,将所述第一操作数和所述第二操作数拆分为m组第四子操作数和第五子操作数,第四/第五子操作数的比特位宽k=第四/第五操作数的第二比特位宽2N/m;
其中,所述第二比特位宽/所述第一比特位宽=2M,m、k、N为正整数,M是小于N的任意正整数;
所述定点通用单元,还用于在所述计算模式为所述第一定点计算模式时,将所述m组第一子操作数和第二子操作数相乘后与所述上级输入端输入的m个第三子操作数分别累加,从所述定点输出端输出定点运算结果;
所述定点通用单元,还用于在所述计算模式为所述第二定点计算模式时,将所述m组第四子操作数和第五子操作数相乘后与所述上级输入端输入的m个第三子操作数分别累加,从所述定点输出端输出定点运算结果。
6.根据权利要求5所述的芯片,其特征在于,
所述数据重组器包括m组重组输出端,所述m组重组输出端中的第i组重组输出端包括第一重组输出端Ai和第二重组输出端Bi
所述定点通用单元包括
Figure FDA0004220445880000031
个乘法器和/>
Figure FDA0004220445880000032
个加法器,所述h为所述第二比特位宽的最小取值,h、X为正整数;
所述
Figure FDA0004220445880000041
个乘法器中的第j个乘法器的第一输入端与第f组重组输出端中的第一重组输出端Af相连,所述第j个乘法器的第二输入端与第t组重组输出端中的第二重组输出端Bt相连;
其中,f=j-(t-1)*m,t=ceil(j/m),ceil为向上取整,i、j为正整数,且i小于或等于m。
7.根据权利要求6所述的芯片,其特征在于,
所述第j个乘法器,用于将所述第一操作数的第f组子操作数Af/Df与所述第二操作数的第t组子操作数Bt/Et相乘。
8.根据权利要求7所述的芯片,其特征在于,
所述数据重组器包括2组重组输出端,所述2组重组输出端中包括第一组重组输出端和第二组重组输出端;第一组重组输出端包括第一个第一重组输出端A1和第一个第二重组输出端B1、第二组重组输出端包括第二个第一重组输出端A2和第二个第二重组输出端B2;所述上级输入端包括所述上级输入端中的第一输入端和所述上级输入端中的第二输入端;
所述定点通用单元包括乘法器1、乘法器2、乘法器3、乘法器4、加法器1、加法器2、加法器3、加法器4和定点结果选择单元;
所述乘法器1的输入端与所述第一个第一重组输出端A1、所述第一个第二重组输出端B1分别相连,所述乘法器2的输入端与所述第二个第一重组输出端A2、所述第一个第二重组输出端B1分别相连,所述乘法器3的输入端与所述第一个第一重组输出端A1、所述第二个第二重组输出端B2分别相连,所述乘法器4的输入端与所述第二个第一重组输出端A2、第二个所述第二重组输出端B2分别相连;
所述加法器1的输入端与所述乘法器1的输出端、所述乘法器2的输出端、分别相连,所述加法器2的输入端与所述乘法器3的输出端、所述乘法器4的输出端分别相连;所述加法器3的输入端与所述加法器1的输出端、所述加法器4的输出端、所述上级输入端中的第一输入端分别相连;所述加法器4的输入端与所述加法器1的输出端、所述加法器2的输出端、所述上级输入端中的第二输入端、所述第一输入端、所述第二输入端分别相连;
所述定点结果选择单元的输入端与所述加法器3的输出端、所述加法器4的输出端分别相连。
9.根据权利要求8所述的芯片,其特征在于,第三操作数包括第三子操作数中的第一子数据C1和第三子操作数中的第二子数据C2两部分;
所述乘法器1,用于将所述第一个第一重组输出端A1输出的数据与所述第一个第二重组输出端B1输出的数据相乘,得到第一乘积;
所述乘法器2,用于将所述第二个第一重组输出端A2输出的数据与所述第一个第二重组输出端B1输出的数据相乘,得到第二乘积;
所述乘法器3,用于将所述第一个第一重组输出端A1输出的数据与所述第二个第二重组输出端B2输出的数据相乘,得到第三乘积;
所述乘法器4,用于将所述第二个第一重组输出端A2输出的数据与所述第二个第二重组输出端B2输出的数据相乘,得到第四乘积;
所述加法器1,用于将所述第一乘积、所述第二乘积累加,得到第一加法和;
所述加法器2,用于将所述第三乘积和所述第四乘积相加,得到第二加法和;
所述加法器3,用于将所述第一加法和、所述第三子操作数中的第一子数据C1、所述加法器4的进位值累加,得到第三加法和;
所述加法器4,用于将所述第一加法和、所述第二加法和、所述第三子操作数中的第二子数据C2累加,得到第四加法和;
所述定点结果选择单元,用于将所述第三加法和与所述第四加法和拼接在一起,得到所述定点运算结果。
10.根据权利要求8所述的芯片,其特征在于,第三操作数包括第三子操作数中的第一子数据C1和第三子操作数中的第二子数据C2两部分;
所述乘法器1,用于将所述第一个第一重组输出端A1输出的数据与所述第一个第二重组输出端B1输出的数据相乘,得到第一乘积;
所述乘法器4,用于将所述第二个第一重组输出端A2输出的数据与所述第二个第二重组输出端B2输出的数据相乘,得到第四乘积;
所述加法器3,用于将所述第一乘积和所述第三子操作数中的第一子数据C1累加,得到第五加法和;
所述加法器4,用于将所述第四乘积和所述第三子操作数中的第二子数据C2相加,得到第六加法和;
所述定点结果选择单元,用于将所述第五加法和与所述第六加法和拼接在一起得到所述定点运算结果。
11.根据权利要求1至4任一所述的芯片,其特征在于,所述芯片包括若干个脉动阵列,每个所述脉动阵列包括X*Y个所述乘累加模块;
对于同一个所述脉动阵列,第i行第j列的所述乘累加模块的模块输出端,与所述第i+1行第j列的乘累加模块的上级输入端相连;
或者,
对于同一个所述脉动阵列,所述第i行第j列的所述乘累加模块的模块输出端,与第i行第j+1列的所述乘累加模块的上级输入端相连,i、j、X、Y为正整数。
12.根据权利要求1至4任一所述的芯片,其特征在于,所述芯片是中央处理器CPU、现场可编程门阵列FPGA、专用集成电路ASIC、图形处理器GPU或人工智能AI芯片中的任意一种。
13.一种终端,其特征在于,所述终端中包括如权利要求1至12任一所述的芯片。
14.一种控制方法,所述方法应用于权利要求1至12任一所述的芯片中,其特征在于,所述方法包括:
接收第一控制信号;
根据所述第一控制信号,控制所述芯片中的乘累加模块处于对应的计算模式;所述计算模式包括定点计算模式和浮点计算模式;
当所述计算模式处于所述定点计算模式时,将第一操作数与第二操作数相乘,之后与上级乘累加模块的计算结果第三操作数累加,得到并输出定点运算结果;
当所述计算模式处于所述浮点计算模式时,将所述第一操作数与所述第二操作数进行浮点乘累加运算中的乘法部分的计算得到第一中间结果,将所述第一操作数、所述第二操作数、所述第三操作数和所述第一中间结果进行浮点乘累加运算中的加法部分运算后,输出浮点运算结果。
15.根据权利要求14所述的方法,其特征在于,所述方法应用于如所述权利要求5所述的芯片中;所述第三操作数包括m个第三子操作数;
当所述计算模式为第一定点计算模式时,将所述第一操作数和所述第二操作数分别重组为m组第一子操作数和第二子操作数,第一/第二子操作数的比特位宽k=第一/第二操作数的第一比特位宽2N/m;
当所述计算模式为第二定点计算模式时,将所述第一操作数和所述第二操作数拆分为m组第四子操作数和第五子操作数,第四/第五子操作数的比特位宽k=第四/第五操作数的第二比特位宽2N/m;
其中,所述第二比特位宽/所述第一比特位宽=2M,m、k、N为正整数,M是小于N的任意正整数。
CN201910008593.9A 2019-01-04 2019-01-04 包括乘累加模块的芯片、终端及控制方法 Active CN109739555B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201910008593.9A CN109739555B (zh) 2019-01-04 2019-01-04 包括乘累加模块的芯片、终端及控制方法
PCT/CN2019/126829 WO2020140766A1 (zh) 2019-01-04 2019-12-20 包括乘累加模块的芯片、控制方法、电子设备及存储介质
US17/362,374 US20210326118A1 (en) 2019-01-04 2021-06-29 Chip including multiply-accumulate module, control method, electronic device, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910008593.9A CN109739555B (zh) 2019-01-04 2019-01-04 包括乘累加模块的芯片、终端及控制方法

Publications (2)

Publication Number Publication Date
CN109739555A CN109739555A (zh) 2019-05-10
CN109739555B true CN109739555B (zh) 2023-06-16

Family

ID=66363514

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910008593.9A Active CN109739555B (zh) 2019-01-04 2019-01-04 包括乘累加模块的芯片、终端及控制方法

Country Status (3)

Country Link
US (1) US20210326118A1 (zh)
CN (1) CN109739555B (zh)
WO (1) WO2020140766A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109739555B (zh) * 2019-01-04 2023-06-16 腾讯科技(深圳)有限公司 包括乘累加模块的芯片、终端及控制方法
CN110851779B (zh) * 2019-10-16 2021-09-14 北京航空航天大学 用于稀疏矩阵运算的脉动阵列架构
CN111258537B (zh) * 2020-01-15 2022-08-09 中科寒武纪科技股份有限公司 一种防止数据溢出的方法、装置和芯片
CN115934030B (zh) * 2020-01-20 2024-01-16 华为技术有限公司 算数逻辑单元、浮点数乘法计算的方法及设备
CN111596887B (zh) * 2020-05-22 2023-07-21 威高国科质谱医疗科技(天津)有限公司 一种基于可重构计算结构的内积计算方法
CN111767025B (zh) * 2020-08-04 2023-11-21 腾讯科技(深圳)有限公司 包括乘累加器的芯片、终端及浮点运算的控制方法
CN111796798B (zh) * 2020-09-08 2020-12-22 腾讯科技(深圳)有限公司 一种定点与浮点转换器、处理器、方法以及存储介质
CN111796870B (zh) * 2020-09-08 2021-01-12 腾讯科技(深圳)有限公司 数据格式转换装置、处理器、电子设备及模型运行方法
CN112783473B (zh) * 2021-01-20 2024-02-02 北京工业大学 一种使用单个dsp单元并行计算整形数据乘法运算方法
CN112860220B (zh) * 2021-02-09 2023-03-24 南方科技大学 一种适用于多精度计算的可重构浮点乘加运算单元及方法
US20220318013A1 (en) * 2021-03-25 2022-10-06 Intel Corporation Supporting 8-bit floating point format operands in a computing architecture
CN113610222B (zh) * 2021-07-07 2024-02-27 绍兴埃瓦科技有限公司 计算神经网络卷积运算的方法及系统、硬件装置
CN113672196B (zh) * 2021-07-16 2023-09-15 南京大学 一种基于单数字信号处理单元的双乘法计算装置和方法
CN117632081B (zh) * 2024-01-24 2024-04-19 沐曦集成电路(上海)有限公司 一种用于gpu的矩阵数据处理系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6480872B1 (en) * 1999-01-21 2002-11-12 Sandcraft, Inc. Floating-point and integer multiply-add and multiply-accumulate
CN102629189A (zh) * 2012-03-15 2012-08-08 湖南大学 基于fpga的流水浮点乘累加方法
CN107291419A (zh) * 2017-05-05 2017-10-24 中国科学院计算技术研究所 用于神经网络处理器的浮点乘法器及浮点数乘法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102103479B (zh) * 2011-03-02 2015-06-10 中兴通讯股份有限公司 浮点运算器及浮点运算的处理方法
CN109739555B (zh) * 2019-01-04 2023-06-16 腾讯科技(深圳)有限公司 包括乘累加模块的芯片、终端及控制方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6480872B1 (en) * 1999-01-21 2002-11-12 Sandcraft, Inc. Floating-point and integer multiply-add and multiply-accumulate
CN102629189A (zh) * 2012-03-15 2012-08-08 湖南大学 基于fpga的流水浮点乘累加方法
CN107291419A (zh) * 2017-05-05 2017-10-24 中国科学院计算技术研究所 用于神经网络处理器的浮点乘法器及浮点数乘法

Also Published As

Publication number Publication date
CN109739555A (zh) 2019-05-10
WO2020140766A1 (zh) 2020-07-09
US20210326118A1 (en) 2021-10-21

Similar Documents

Publication Publication Date Title
CN109739555B (zh) 包括乘累加模块的芯片、终端及控制方法
CN111767025B (zh) 包括乘累加器的芯片、终端及浮点运算的控制方法
CN110929838B (zh) 神经网络中位宽定点化方法、装置、终端和存储介质
US20200218509A1 (en) Multiplication Circuit, System on Chip, and Electronic Device
CN110069715B (zh) 一种信息推荐模型训练的方法、信息推荐的方法及装置
CN107797866B (zh) 处理器资源的分配方法及移动终端和介质产品
CN111310890B (zh) 深度学习模型的优化方法、装置及终端设备
KR101974514B1 (ko) 데이터를 처리하기 위한 두 개의 프로세서를 갖는 전자 장치
CN102591619B (zh) 用于处理器中的算术逻辑和移位装置
CN117348841A (zh) 数据处理方法、装置、电子设备及可读存储介质
CN104918130A (zh) 一种发送、播放多媒体信息的方法、装置和系统
CN109582279B (zh) 数据运算装置及相关产品
CN109240986B (zh) 一种日志处理方法、装置及存储介质
CN113128673A (zh) 数据处理方法、存储介质、神经网络处理器及电子设备
US20100191788A1 (en) Multiplier with Shifter
CN113419702B (zh) 一种数据累加方法、处理器、电子设备及可读介质
CN115981666B (zh) 神经网络信息整合方法、装置、系统及存储介质
CN113260069B (zh) 一种载波资源调度方法、装置及电子设备
CN109714755B (zh) 参数存储方法、装置、移动终端及存储介质
CN117793361A (zh) 数据编码和数据解码的方法、装置、设备
JP2008542885A (ja) デジタルシグナルプロセッサにおいて、2の補数演算を実行するシステム及び方法
CN112106034B (zh) 一种用于神经网络的卷积方法及装置
CN104077338B (zh) 一种数据处理的方法及装置
CN116301898A (zh) 神经网络信息整合方法、装置、系统及存储介质
CN117194140A (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
GR01 Patent grant
GR01 Patent grant