CN117648959A - 支持神经网络运算的多精度操作数运算装置 - Google Patents
支持神经网络运算的多精度操作数运算装置 Download PDFInfo
- Publication number
- CN117648959A CN117648959A CN202410121666.6A CN202410121666A CN117648959A CN 117648959 A CN117648959 A CN 117648959A CN 202410121666 A CN202410121666 A CN 202410121666A CN 117648959 A CN117648959 A CN 117648959A
- Authority
- CN
- China
- Prior art keywords
- operand
- sub
- mantissa
- operands
- conversion
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 39
- 238000006243 chemical reaction Methods 0.000 claims abstract description 144
- 238000012545 processing Methods 0.000 claims abstract description 44
- 238000007781 pre-processing Methods 0.000 claims abstract description 12
- 238000007667 floating Methods 0.000 claims description 16
- 238000007906 compression Methods 0.000 claims description 11
- 230000006835 compression Effects 0.000 claims description 10
- 238000000034 method Methods 0.000 abstract description 37
- 238000013461 design Methods 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 24
- 238000004590 computer program Methods 0.000 description 19
- 230000008569 process Effects 0.000 description 15
- 238000004364 calculation method Methods 0.000 description 14
- 230000015654 memory Effects 0.000 description 10
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 8
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 230000014509 gene expression Effects 0.000 description 7
- 230000004927 fusion Effects 0.000 description 6
- 238000003672 processing method Methods 0.000 description 6
- 238000012549 training Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000010606 normalization Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 102100022907 Acrosin-binding protein Human genes 0.000 description 2
- 101000756551 Homo sapiens Acrosin-binding protein Proteins 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
Landscapes
- Complex Calculations (AREA)
Abstract
本发明提供了一种支持神经网络运算的多精度操作数运算装置,可以应用于微处理器设计技术领域。该方法包括:精度转换模块,用于对多个输入操作数各自的尾数分别进行精度转换,得到具有预设尾数位域的多个转换操作数;数据预处理模块,用于提取转换操作数的符号位子操作数、指数位子操作数和尾数位子操作数;运算操作模块,用于根据多个转换操作数各自的符号位子操作数、指数位子操作数和尾数位子操作数执行运算操作处理,得到目标符号位子操作数、目标指数位子操作数和目标尾数位子操作数;结果输出模块,用于根据目标符号位子操作数、目标指数位子操作数和目标尾数位子操作数,输出目标操作数。
Description
技术领域
本发明涉及微处理器设计技术领域,尤其涉及一种支持神经网络运算的多精度操作数运算装置。
背景技术
在在神经网络训练或者数据预处理过程,计算机要对大量的数据进行处理,例如,数据间的运算。由于神经网络运算多支持位宽为16比特(bit)及以上精度的计算。由于数据间的精度不同,会影响计算机的数据运算准确性以及运算性能。
发明内容
鉴于上述问题,本发明提供了支持神经网络运算的多精度操作数运算装置。
本发明的第一方面提供了一种支持神经网络运算的多精度操作数运算装置,包括:精度转换模块,用于对多个输入操作数各自的尾数分别进行精度转换,得到具有预设尾数位域的多个转换操作数。数据预处理模块,用于提取转换操作数的符号位子操作数、指数位子操作数和尾数位子操作数。运算操作模块,用于根据多个转换操作数各自的符号位子操作数、指数位子操作数和尾数位子操作数执行运算操作处理,得到目标符号位子操作数、目标指数位子操作数和目标尾数位子操作数。结果输出模块,用于根据目标符号位子操作数、目标指数位子操作数和目标尾数位子操作数,输出目标操作数。
根据本发明的实施例,精度转换模块包括:精度转换子模块,用于根据输入操作数的数据格式对输入操作数的尾数进行精度转换,得到具有预设尾数位域的转换操作数。
根据本发明的实施例,精度转换子模块包括:确定单元,用于在数据格式是单精度数据格式的情况下,确定输入操作数的尾数。精度转换单元,用于对输入操作数的尾数的预设尾数位置的子操作数进行精度转换,得到具有预设尾数位域的转换操作数。
根据本发明的实施例,装置还包括:确定模块,用于从输入操作数集中确定乘法类操作数和加法类操作数,输入操作数集包括多个输入操作数。
根据本发明的实施例,运算操作模块包括:符号位处理子模块,用于基于运算规则处理多个转换操作数的符号位子操作数,得到目标符号位子操作数。尾数乘法子模块,用于对多个转换操作数的尾数进行乘法运算,得到和与进位数据。
根据本发明的实施例,尾数位子操作数包括未经过精度转换的FP8转换子操作数、BF16转换子操作数和整数转换子操作数、以及经过精度转换的单精度转换子操作数中至少一种转换子操作数,和与进位数据包括第一和与进位数据和第二和与进位数据。尾数乘法子模块包括:多精度尾数乘法子单元,用于对与乘法类操作数对应的的单精度转换子操作数、BF16转换子操作数和整数精度转换子操作数中多个尾数位子操作数进行乘法运算,得到第一和与进位数据。FP8尾数乘法子单元,用于对与乘法类操作数对应的多个FP8转换子操作数的进行乘法运算,得到第二和与进位数据,FP8转换子操作数是FP8数据格式的子操作数。
根据本发明的实施例,运算操作模块还包括:指数处理子模块,用于对多个乘法类操作数的指数和与加法类操作数的指数做差,得到指数差值。运算操作子模块,用于根据指数差值,对第一和与进位数据的尾数、第二和与进位数据的尾数和加法类操作数的尾数进行处理,得到乘加尾数位子操作数。
根据本发明的实施例,运算操作子模块包括:对齐移位子单元,用于根据指数差值对加法类操作数的尾数进行对齐移位,得到对齐移位子操作数。加法压缩子单元,用于对第一和与进位数据、第二和与进位数据和对齐移位子操作数的低位尾数进行压缩,得到低位尾数位子操作数。进位选择加法子单元,用于将低位尾数位子操作数和对齐移位子操作数的高位尾数进行加法操作,得到乘加尾数位子操作数。
根据本发明的实施例,运算操作模块还包括:前导零预测子模块,用于计算多个乘加尾数位子操作数中前导零的数量。规格化移位子模块,用于根据前导零的个数对多个乘加尾数位子操作数进行移位,得到多个规格化尾数位子操作数。尾数舍入子模块,用于根据浮点精度模式对规格化尾数进行精度转换,得到目标尾数位子操作数。指数调整子模块,用于根据前导零的数量,对指数位子操作数进行调整,得到目标指数位子操作数。
根据本发明的实施例,结果输出模块包括:组合子模块,用于根据模式信号,将目标符号位子操作数、目标指数位子操作数和目标尾数位子操作数进行组合,得到目标操作数。输出子模块,用于输出目标操作数。
根据本发明的第二个方面,提供了一种支持神经网络运算的多精度操作数运算方法,包括:对多个输入操作数各自的尾数分别进行精度转换,得到具有预设尾数位域的多个转换操作数。提取转换操作数的符号位子操作数、指数位子操作数和尾数位子操作数。根据多个转换操作数各自的符号位子操作数、指数位子操作数和尾数位子操作数执行运算操作处理,得到目标符号位子操作数、目标指数位子操作数和目标尾数位子操作数。根据目标符号位子操作数、目标指数位子操作数和目标尾数位子操作数,输出目标操作数。
本发明的第三方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述方法。
本发明的第四方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述方法。
本发明的第五方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述方法。
根据本发明提供的支持神经网络运算的多精度操作数运算装置,通过精度转换模块用于对多个输入操作数各自的尾数分别进行精度转换,得到具有预设尾数位域的多个转换操作数,实现支持神经网络场景下的多种数据精度的数据运算,提高运算性能。数据预处理模块用于提取转换操作数的符号位子操作数、指数位子操作数和尾数位子操作数。运算操作模块用于根据多个转换操作数各自的符号位子操作数、指数位子操作数和尾数位子操作数执行运算操作处理,得到目标符号位子操作数、目标指数位子操作数和目标尾数位子操作数,使得运算处理的准确度高。结果输出模块用于根据目标符号位子操作数、目标指数位子操作数和目标尾数位子操作数,输出目标操作数,支持不同的神经网络或者应用场景上的多种数据精度的数据运算,使得运算处理准确度高、运算性能强。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
图1示出了根据本发明实施例的支持神经网络运算的多精度操作数运算装置的结构框图;
图2示出了根据本发明另一实施例的支持神经网络运算的多精度操作数运算装置的示意图;
图3示出了根据本发明另一实施例的非单精度数据格式输入操作数的尾数的精度转换示意图;
图4示出了根据本发明另一实施例的单个乘法器电路结构图;
图5示出了根据本发明另一实施例的单精度数据格式的乘法计算处理方法示意图;
图6示出了根据本发明另一实施例的BF16数据格式的乘法计算处理方法示意图;
图7示出了根据本发明另一实施例的整数数据格式的乘法计算处理方法示意图;
图8示出了根据本发明另一实施例的FP8数据格式的乘法计算处理方法示意图;
图9示出了根据本发明另一实施例的第二级流水线的电路示意图;
图10示出了根据本发明实施例的支持神经网络运算的多精度操作数运算方法的流程图;
图11示出了根据本发明实施例的适于实现支持神经网络运算的多精度操作数运算方法的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本发明的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本发明的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本发明实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本发明。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
在本发明的技术方案中,所涉及的用户信息(包括但不限于用户个人信息、用户图像信息、用户设备信息,例如位置信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、存储、使用、加工、传输、提供、发明和应用等处理,均遵守相关法律法规和标准,采取了必要保密措施,不违背公序良俗,并提供有相应的操作入口,供用户选择授权或者拒绝。
根据本发明的实施例,对于一个FP32格式融合乘加的运算来说,表示数据A和B由n个BF16数据组成(可称为BF16xN),而输入数据C和输出数据D由m个BF16数据组成(可称为BF16xM)。BF16xN数据表示形式是一种由N个BF16数据组合的复合表达方式。为了描述从单精度数据(FP32)到BF16xN的转化过程,现定义一个转换操作函数BF(·),BF(·)可以通过舍入到最近的方式将一个FP32的数据转换为BF16数据格式,即将FP32数据的尾数的前7位进行保留,剩下的尾数位进行舍入。BF(·)算子可以根据公式(1)中的前两步将一个FP32位数据转换为BF16x2表达式,通过公式(1)完整的三步将一个FP32位数据转换位BF16x3表达式。/>与FP32具有相同的符号位和指数位以及前7位尾数位。类似的,/>包含FP32的第二组8bit尾数的信息,/>包含了FP32的第三组8bit尾数的信息。
利用BF16xN来进行FMA(Fused multiply accumulation,融合乘加)计算时,可由公式(2)表示计算流程,其中/>和/>转换为了BF16x3的形式,即/>,。FMA的计算结果可以表示为9个乘积和1个c的加和。
分析该表达式,其中以及/>的最高有效位在最终结果的最高有效位的至少24位之后,而/>的最高有效位在最终结果的最高有效位的至少32位之后,因此可以对这三项进行舍弃而几乎不影响最终结果。如公式(3)所示,利用BF16x2作为输入来计算FMA并且同样对较小的数据进行舍弃,这样的近似大大减少了计算成本。
如果对FMA计算中的C和D也使用BF16x2的表达形式,即构成了。/>使用对于神经网络模型的训练精度几乎不产生影响。
针对算子进行进一步简化和硬件实现,并应用于多精度设计当中。算子的运算过程如公式(4)所示。
而要直接对该算子进行硬件实现,将输入FP32完全转化为BF16的格式再进行后续计算,则会出现两个缺点。第一点,针对对于FP32与算子之间的转换,由于有两次转换过程,同时还包含减法运算,所以硬件实现后关键路径将大大增加并且硬件开销较大。同时为了保证输出的形式依然为BF16x2的表达形式,需要在输出结果前先得到FP32数据格式再转换,硬件逻辑非常复杂且增加了关键路径。第二点,过多的BF16乘加计算,需要进行多次指数对齐操作,造成硬件开销和关键路径的延迟提高。
针对以上两个缺点可以对该算子进行重新分析,由于算子原本的计算过程是。所以可以在FP32与算子转换的过程中不分别产生/>与/>,而是直接产生两者的加和,该过程其实就是利用舍入到最近的方式去掉FP32的尾数后八位。该转化过程与FMA最后一阶段的舍入操作相同。这样的转换方式保证了在利用该计算单元来实现矩阵乘法或者卷积运算的过程中,对于每一个输入FP32数据仅进行一次转化即可用于所有后续的计算操作。同时,对于多精度操作数运算装置并不会增加过多额外的硬件资源。
基于上述内容,本发明针对融合乘加的运算,设计了支持神经网络运算的多精度操作数运算装置。
图1示出了根据本发明实施例的支持神经网络运算的多精度操作数运算装置的结构框图。
如图1所示,该实施例的支持神经网络运算的多精度操作数运算装置100包括精度转换模块110、数据预处理模块120、运算操作模块130和结果输出模块140。
精度转换模块110,用于对多个输入操作数各自的尾数分别进行精度转换,得到具有预设尾数位域的多个转换操作数。
根据本发明的实施例,在神经网络训练过程,计算机要对大量的数据进行处理,例如,卷积运算或者乘累加运算。由于神经网络加速器的硬件设计多支持位宽为16比特(bit)及以上精度的计算。较高的数据精度和大量的计算,会影响神经网络的训练时间同时产生较大的功耗。
根据本发明的实施例,输入操作数可以是执行计算机程序的数据,例如,输入操作数可以是浮点数。浮点数是由符号数、指数和尾数组成。可将多个浮点数各自的尾数分别进行精度转换,得到同一尾位域的多个转换操作数。预设尾数位域可以是同一尾数位域。
输入操作数可以统一为一种数据格式,可以是为浮点(FP8/FP32/BF16),也可以是定点(INT8)。
数据预处理模块120,用于提取转换操作数的符号位子操作数、指数位子操作数和尾数位子操作数。
根据本发明的实施例,符号位子操作数可以是在转换操作数的符号位的数据、指数位子操作数可以是在转换操作数的指数位的数据、尾数位子操作数可以是在转换操作数的尾数位的数据。
例如,多个转换操作数可以是浮点数据,分别提取符号位子操作数、指数位子操作数和尾数位子操作数,同时根据指数位子操作数补充尾数位中的隐藏位。
运算操作模块130,用于根据多个转换操作数各自的符号位子操作数、指数位子操作数和尾数位子操作数执行运算操作处理,得到目标符号位子操作数、目标指数位子操作数和目标尾数位子操作数。
结果输出模块140,用于根据目标符号位子操作数、目标指数位子操作数和目标尾数位子操作数,输出目标操作数。
根据本发明的实施例,多个输入操作数可以是执行运算“”,即a乘于b的乘法运算,再进行加c的加法运算。先对a、b和c三个输入操作数各自的尾数分别进行精度转换,得到具有预设尾数位域的多个转换操作数。再提取转换操作数的符号位子操作数、指数位子操作数和尾数位子操作数。多个符号位子操作数执行运算操作处理的过程可以是a与b各自的转换操作数的符号位子操作数先进行运算,再根据c的转换操作数确定最后的目标符号位子操作参数。
根据本发明的实施例,支持神经网络运算的多精度操作数运算装置是通过精度转换模块用于对多个输入操作数各自的尾数分别进行精度转换,得到具有预设尾数位域的多个转换操作数,实现支持神经网络场景下的多种数据精度的数据运算,提高运算性能。数据预处理模块用于提取转换操作数的符号位子操作数、指数位子操作数和尾数位子操作数。运算操作模块用于根据多个转换操作数各自的符号位子操作数、指数位子操作数和尾数位子操作数执行运算操作处理,得到目标符号位子操作数、目标指数位子操作数和目标尾数位子操作数,使得运算处理的准确度高。结果输出模块用于根据目标符号位子操作数、目标指数位子操作数和目标尾数位子操作数,输出目标操作数,支持不同的神经网络或者应用场景上的多种数据精度的数据运算,使得运算处理准确度高、运算性能强。
根据本发明的实施例,精度转换模块包括:精度转换子模块,用于根据输入操作数的数据格式对输入操作数的尾数进行精度转换,得到具有预设尾数位域的转换操作数。
根据本发明的实施例,数据格式表征输入操作数的数据精度。
根据本发明的实施例,精度转换子模块包括:确定单元,用于在数据格式是单精度数据格式的情况下,确定输入操作数的尾数。精度转换单元,用于对输入操作数的尾数的预设尾数位置的子操作数进行精度转换,得到具有预设尾数位域的转换操作数。
根据本发明的实施例,单精度数据格式可以是FP32数据格式。预设尾数位置可以是FP32数据格式中尾数的后八位位置。精度转换操作可以是将FP32数据格式中尾数的后八位进行舍入操作。FP32数据格式中尾数是24bit(含隐藏位)。
例如,由于神经网络运算多支持位宽为16比特(bit)及以上精度的计算(过高的位宽造成了高延迟和高功耗,在保证训练准确度的前提下可以尽量减少数据位宽),将FP32数据格式中尾数的后八位进行舍入操作,使得FP32数据格式的输入操作数变成具有尾数位宽为16比特的转换操作数。
根据本发明的实施例,确定单元,用于在数据格式是单精度数据格式的情况下,确定输入操作数的尾数;精度转换单元,用于对输入操作数的尾数的预设尾数位置的子操作数进行精度转换,得到具有预设尾数位域的转换操作数,实现在不影响最终神经网络训练精度的基础上减少硬件资源的消耗。
根据本发明的实施例,装置还包括:确定模块,用于从确定输入操作数集中确定乘法类操作数和加法类操作数,输入操作数集包括多个输入操作数。
例如,多个输入操作数可以是执行运算“”,即a乘于b的乘法运算,再进行加c的加法运算。乘法类操作数可以是a和b,加法类操作数可以是c。
根据本发明的实施例,运算操作模块包括:符号位处理子模块,用于基于运算规则处理多个转换操作数的符号位子操作数,得到目标符号位子操作数。尾数乘法子模块,用于对多个转换操作数的尾数进行乘法运算,得到和与进位数据。
根据本发明的实施例,运算规则可以是符号位的乘法规则和\或加法规则。符号位的乘法规则可以是“负负为正”,即“-1”乘以“-1”,等于1。例如,“-0.1+2”,计算得到“1.9”,符号为“正”。其中符号位的“正”、“负”均由数据表示。
根据本发明的实施例,将多个转换操作数的符号位子操作数位进行组合处理,得到目标符号位子操作数。
根据本发明的实施例,尾数位子操作数包括未经过精度转换的FP8转换子操作数、BF16转换子操作数和整数转换子操作数、以及经过精度转换的单精度转换子操作数中至少一种转换子操作数,和与进位数据包括第一和与进位数据和第二和与进位数据。尾数乘法子模块包括:多精度尾数乘法子单元,用于对与乘法类操作数对应的单精度转换子操作数、BF16转换子操作数和整数精度转换子操作数中多个尾数位子操作数进行乘法运算,得到第一和与进位数据。FP8尾数乘法子单元,用于对与乘法类操作数对应的多个FP8转换子操作数中进行乘法运算,得到第二和与进位数据,FP8转换子操作数是FP8数据格式的子操作数。
根据本发明的实施例,单精度转换子操作数可以是FP32数据格式的输入操作参数的尾数进行精度转换得到的。BF16转换子操作数可以是BF16数据格式的输入操作参数的尾数进行精度转换得到的。整数转换子操作数可以是INT8数据格式的输入操作参数的尾数进行精度转换得到的。
根据本发明的实施例,运算操作模块还包括:指数处理子模块,用于对多个乘法类操作数的指数和与加法类操作数的指数做差,得到指数差值。运算操作子模块,用于根据指数差值,对第一和与进位数据的尾数、第二和与进位数据的尾数和加法类操作数的尾数进行处理,得到乘加尾数位子操作数。
根据本发明的实施例,运算操作子模块包括:对齐移位子单元,用于根据指数差值对加法类操作数的尾数进行对齐移位,得到对齐移位子操作数。加法压缩子单元,用于对第一和与进位数据、第二和与进位数据和对齐移位子操作数的低位尾数进行压缩,得到低位尾数位子操作数。进位选择加法子单元,用于将低位尾数位子操作数和对齐移位子操作数的高位尾数进行加法操作,得到乘加尾数位子操作数。
根据本发明的实施例,对齐移位子单元用于根据指数差值对加法类操作数尾数进行对齐移位处理。如果是INT8数据格式的加法类操作数,可以不进行操作。
根据本发明的实施例,低位尾数表征尾数的低数位,例如,数据是0.1234,尾数中2的数位比3的数位高。相对于3来说,高位尾数是1和2,低位尾数是4。
根据本发明的实施例,将多精度尾数乘法子单元和FP8尾数乘法子单元得到的两个输出结果与对齐移位子单元的一个输出结果进行压缩,输出两个部分积(低位尾数位子操作数)。
根据本发明的实施例,将加法压缩子单元的输出与对齐移位子单元的高位输出(高位尾数)进行加法操作,得到一个融合乘加之后的尾数。如果是INT8数据格式,则是直接得到融合乘加的结果。
根据本发明的实施例,通过运算操作子模块中对齐移位子单元、加法压缩子单元和进位选择加法子单元的设计,实现对数据合理通路处理,保证硬件资源的高利用率和吞吐率的情况下,减少硬件资源的消耗并提高计算速度以及降低功耗。
根据本发明的实施例,运算操作模块还包括:前导零预测子模块,用于计算多个乘加尾数位子操作数中前导零的数量。规格化移位子模块,用于根据前导零的数量对多个乘加尾数位子操作数进行移位,得到多个规格化尾数位子操作数。尾数舍入子模块,用于根据浮点精度模式对规格化尾数进行精度转换,得到目标尾数位子操作数。指数调整子模块,用于根据前导零的数量,对指数位子操作数进行调整,得到目标指数位子操作数。
根据本发明的实施例,前导零可以是尾数中出现非零数之前的零。例如,0.00003的前导零的数量是5。
例如,FP32格式的乘加尾数位子操作数A是“0000010000”,A前导零的数量为5。根据前导零的数量对多个乘加尾数位子操作数进行移位,使得得到的多个规格化尾数位子操作数的隐藏位为1(此时指数位不全为0,如果指数位全为0,则隐藏位为0)。
根据本发明的实施例,根据浮点精度模式对规格化尾数进行舍入,得到目标尾数位子操作数。
根据本发明的实施例,指数调整模块可以用于根据前导零预测子模块以及尾数舍入模块的溢出进行指数位调整。
根据本发明的实施例,结果输出模块包括:组合子模块,用于根据模式信号,将目标符号位子操作数、目标指数位子操作数和目标尾数位子操作数进行组合,得到目标操作数。输出子模块,用于输出目标操作数。
根据本发明的实施例,精度转换模块110、数据预处理模块120、运算操作模块130和结果输出模块140中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本发明的实施例,精度转换模块110、数据预处理模块120、运算操作模块130和结果输出模块140中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,精度转换模块110、数据预处理模块120、运算操作模块130和结果输出模块140中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图2示出了根据本发明另一实施例的支持神经网络运算的多精度操作数运算装置的示意图。
如图2所示,该实施例的支持神经网络运算的多精度操作数运算装置分为了三个流水线阶段,以此来提高整体电路的工作频率以及吞吐量。主要的输入操作数为三个32bit数据A、B和C,Ma和Mb分别表示乘法操作数的尾数,Mc表示加法操作数的尾数。一个2bit信号模式,以及时钟和复位信号。其中32bit的数据信号可分别由一个FP32数据、两个BF16数据、四个FP8数据、四个INT8数据组成。模式信号控制当前单元进行哪种精度格式的计算,00-11分别表示四种精度模式的计算。
在第一级流水线中,首先经过SP32精度转换模块处理(精度转换单元), SP32表示单精度浮点数据格式。判断模式信号显示哪种精度格式的计算,如果为FP32模式,则首先需要对输入数据A、B、C进行FP32精度转换模块处理,利用舍入到最近的方式去除这三个数的尾数后8bit,即变为一个尾数位含16bit的数据(含隐藏位)。如果为其他模式(MODE),则不需要经过转换模块的处理。
图3示出了根据本发明另一实施例的非单精度数据格式输入操作数的尾数的精度转换示意图。
如图3所示,图中,S代表符号位子操作数、E代表指数位子操作数、M代表尾数位子操作数,STK表示粘连位。该电路首先将非单精度数据格式输入操作数的尾数后7bit进行或运算得到粘连位,把后8位的MSB(Most Significant Bit,最高有效位)当作舍入位R,同时前16位的LSB(Least Significant Bit,最低有效位)当作保护位G,则根据保护位(guardbit)、舍入位(round bit)和粘黏位(sticky bit)三个bit的数据判断后8位是直接舍去还是会有进位的产生。如果进位后的尾数发生了溢出,则需要对指数进行进一步的调整。
之后再通过数据预处理模块进行数据处理,如果是浮点数据,需要将其符号位子操作数、指数位子操作数、尾数位子操作数提取出来,同时对尾数位进行扩展,即根据指数的值添加上尾数的隐藏位。
接下来同时进行指数处理模块(指数处理子模块)、符号位处理模块(符号位处理子模块)、对齐移位模块(对齐移位子单元)与多精度尾数乘法模块(多精度尾数乘法子单元)或者是FP8尾数乘法模块(FP8尾数乘法子单元)处理。
图4示出了根据本发明另一实施例的单个乘法器电路结构图。
多精度乘法模块由4个9bit×9bit的booth乘法器(布斯乘法器)组成,每个booth乘法器的电路结构如图4所示,booth乘法器可以有效减少部分积的个数,加快运算速度,并且节省之后使用的CSA(Carry Save Adder,进位保留加法器)数量。由于该booth乘法器需要同时支持INT8和8bit尾数乘法,所以需要将8bit输入数据进行符号扩展再放入有符号booth乘法器中进行乘法操作,并得到5个部分积。这五个部分积的符号位扩展可以通过部分积的MSB和1来简化,这样的简化操作可以使得乘法器的部分积在后续的压缩过程中使用更少的CSA,由此节省硬件资源。在得到部分积之后可以用两层4-to-2CSA进行计算,最终得到两个18bit部分积。由于对于有符号INT8或者尾数乘法,其结果位宽均不会超过16bit,所以对于两次压缩产生的两个部分积(sum和carry)截取其后16bit即可。
图5示出了根据本发明另一实施例的单精度数据格式的乘法计算处理方法示意图。
如图5所示,对于简化后的FP32计算,其需要的结果为{MH1,ML1}×{MH2,ML2},将MH1、ML1、MH2和ML2这四个8bit数据分别输入进4个booth乘法器,则总共会产生8个部分积,其具体排列情况如图4所示。针对sum和carry这两者分别有4个部分积,而根据其排布方式可以首先先用四个8bit 3-to-2CSA将中间的部分积个数变为4个(sum和carry分别两个部分积),同时将两头的各8bit合并,之后再进行一次16bit 4-to-2压缩,最终可以得到两个32bit部分积。
图6示出了根据本发明另一实施例的BF16数据格式的乘法计算处理方法示意图。
对于BF16的乘法运算,可以使用和FP32乘法运算相同的数据通路,并输入进4个booth乘法器,其部分积排布形式如图6所示。可以观察到其中真正实用的两个booth乘法器分别得到了一个16bit Sum部分积和16bit Carry部分积。将这两个部分积直接进行组合,就可以得到两个32bit部分积输出给下一个流水线。在这个过程中可以将未使用的两个booth乘法器进行门控操作以节省功耗。
图7示出了根据本发明另一实施例的整数数据格式的乘法计算处理方法示意图。
对于INT8的乘法运算,如图7所示。与BF16的乘法运算类似,可以将其中两个booth乘法器的结果直接进行合并输出,而多余的两个部分积也直接输入给下一个流水线级数来进行后续计算。
针对FP8的乘法阵列,考虑到其乘法位宽不大(4bit×4bit),且仅需要4个乘法器。为避免控制逻辑和数据通路过于复杂而影响电路性能和硬件资源消耗,因此并未与上述精度的设计复用乘法阵列。同时,该乘法器因为位宽不高,不再采用booth乘法器的形式来实现,避免booth 编码器和booth选择器反而增加了硬件开销以及功耗。
图8示出了根据本发明另一实施例的FP8数据格式的乘法计算处理方法示意图。
FP8乘法阵列设计图如图8所示。每个乘法器的部分积通过CSA可以转换为两个8bit数据,然后再将四个乘法器阵列前后组合得到两个32bit部分积,与上述精度输出给下一个流水线级数的部分积位宽一致。在进行FP8乘法阵列的计算的时候,可以对多精度乘法阵列进行门控操作,以此降低功耗。
对于对齐移位器模块(对齐移位子单元),输入前首先讲其进行右侧位数扩展,扩展位数为尾数乘法模块计算得到结果的位宽。之后根据指数处理模块(指数处理子模块)计算的值以及加法操作数C的尾数相交初始小数点位置的距离来判断C尾数需要向右移动的值。这样做的好处是C只会朝一个方向移动。同时根据右移超出部分计算出粘连为,便于后续的舍入操作。
图9示出了根据本发明另一实施例的第二级流水线的电路示意图。
第二级流水线部分电路图如图9所示,主要包含三个部分。其中3-2加法压缩模块(加法压缩子单元)主要将上一个流水线级数得到的两个部分积与对齐后的另一个尾数的低位进行压缩。而右侧的进位选择加法器(进位选择加法子单元)则是为了将对齐移位后的尾数高位先提前计算出有后续进位的结果,该计算过程与左侧加法压缩模块同时进行,之后再根据进位选择加法器模块进位选择使用哪个高位,可以有效降低关键路径的长度。其中进位选择加法器模块可以包括MUX(Multiplexer,多路选择器)、自增器和加法器。类似的,前导零预测模块(前导零预测子模块)可以在执行加法过程的同时开始计算判断最终结果的最高有效位的位置。便于下一阶段流水线直接进行指数的调整,减少了关键路径长度。
第三级流水线则包含指数调整模块(指数调整子模块)、规格化移位模块(规格化移位子模块)、尾数舍入模块(尾数舍入子模块)以及结果输出模块。规格化移位模块(规格化移位子模块)作用是对新的尾数进行向左移位操作,左移位数为前导零预测模块计算得到的输出尾数中前导零的个数。尾数舍入模块(尾数舍入子模块)作用是根据浮点精度模式选择如何对尾数进行舍入。指数调整模块(指数调整子模块)作用是根据前导零预测模块以及舍入模块的溢出进行指数位调整。最后结果输出模块,将符号位、指数位以及尾数位进行组合,根据不同的精度会有不同的组合结果,根据模式信号控制信号选择组合结果为最终输出。
根据本发明的实施例,该设计具有以下优点:利用硬件开销较低的算子转换模块降低了FP32融合乘加所需要的乘法阵列大小,节省硬件资源的同时减少了关键路径的长度。粗略估计,该设计所有精度需要的尾数乘法阵列大小为16×16+4×4×4=320,常规的FP32融合乘加乘法阵列大小为24×24=576。同时,不仅乘法阵列的所占用的硬件资源面积降低,加法器硬件资源面积也随之降低。乘法阵列与加法器位宽利用率高,节省了硬件资源。在少量硬件开销下,支持了更多精度的融合乘加运算,INT8以及FP8。分利用输入端口的位宽,保证了各个精度计算的吞吐量。一组FP32、两组BF16、四组FP8以及四组INT8的计算。
图10示出了根据本发明实施例的支持神经网络运算的多精度操作数运算方法的流程图。
如图10所示,该实施例的支持神经网络运算的多精度操作数运算方法包括操作S1010~操作S1040。
在操作S1010,对多个输入操作数各自的尾数分别进行精度转换,得到具有预设尾数位域的多个转换操作数。
在操作S1020,提取转换操作数的符号位子操作数、指数位子操作数和尾数位子操作数。
在操作S1030,根据多个转换操作数各自的符号位子操作数、指数位子操作数和尾数位子操作数执行运算操作处理,得到目标符号位子操作数、目标指数位子操作数和目标尾数位子操作数。
在操作S1040,根据目标符号位子操作数、目标指数位子操作数和目标尾数位子操作数,输出目标操作数。
根据本发明的实施例,对多个输入操作数各自的尾数分别进行精度转换,得到具有预设尾数位域的多个转换操作数包括:根据输入操作数的数据格式对输入操作数的尾数进行精度转换,得到具有预设尾数位域的转换操作数。
根据本发明的实施例,根据输入操作数的数据格式对输入操作数的尾数进行精度转换,得到具有预设尾数位域的转换操作数包括:在数据格式是单精度数据格式的情况下,确定输入操作数的尾数。对输入操作数的尾数的预设尾数位置的子操作数进行精度转换,得到具有预设尾数位域的转换操作数。
根据本发明的实施例,上述方法还包括:从确定输入操作数集中确定乘法类操作数和加法类操作数,输入操作数集包括多个输入操作数。
根据本发明的实施例,根据多个转换操作数各自的符号位子操作数、指数位子操作数和尾数位子操作数执行运算操作处理,得到目标符号位子操作数、目标指数位子操作数和目标尾数位子操作数包括:基于运算规则处理多个转换操作数的符号位子操作数,得到目标符号位子操作数。对多个转换操作数的尾数进行乘法运算,得到和与进位数据。
根据本发明的实施例,尾数位子操作数包括未经过精度转换的FP8转换子操作数、BF16转换子操作数和整数转换子操作数、以及经过精度转换的单精度转换子操作数中至少一种转换子操作数,和与进位数据包括第一和与进位数据和第二和与进位数据。
对多个转换操作数的尾数进行乘法运算,得到和与进位数据包括:对与所述乘法类操作数对应的的所述单精度转换子操作数、所述BF16转换子操作数和所述整数精度转换子操作数中多个所述尾数位子操作数进行乘法运算,得到第一和与进位数据。对与所述乘法类操作数对应的多个所述FP8转换子操作数的进行乘法运算,得到第二和与进位数据,FP8转换子操作数是FP8数据格式的子操作数。
根据本发明的实施例,根据多个转换操作数各自的符号位子操作数、指数位子操作数和尾数位子操作数执行运算操作处理,得到目标符号位子操作数、目标指数位子操作数和目标尾数位子操作数还包括:对多个乘法类操作数的指数和与加法类操作数的指数做差,得到指数差值。根据指数差值,对第一和与进位数据的尾数、第二和与进位数据的尾数和加法类操作数的尾数进行处理,得到乘加尾数位子操作数。
根据本发明的实施例,根据指数差值,对第一和与进位数据的尾数、第二和与进位数据的尾数和加法类操作数的尾数进行处理,得到乘加尾数位子操作数包括:根据指数差值对加法类操作数的尾数进行对齐移位,得到对齐移位子操作数。对第一和与进位数据、第二和与进位数据和对齐移位子操作数的低位尾数进行压缩,得到低位尾数位子操作数。将低位尾数位子操作数和对齐移位子操作数的高位尾数进行加法操作,得到乘加尾数位子操作数。
根据本发明的实施例,根据多个转换操作数各自的符号位子操作数、指数位子操作数和尾数位子操作数执行运算操作处理,得到目标符号位子操作数、目标指数位子操作数和目标尾数位子操作数还包括:计算多个乘加尾数位子操作数中前导零的数量。根据前导零的个数对多个乘加尾数位子操作数进行移位,得到多个规格化尾数位子操作数。根据浮点精度模式对规格化尾数进行精度转换,得到目标尾数位子操作数。根据前导零的数量,对指数位子操作数进行调整,得到目标指数位子操作数。
根据本发明的实施例,根据目标符号位子操作数、目标指数位子操作数和目标尾数位子操作数,输出目标操作数包括:根据模式信号,将目标符号位子操作数、目标指数位子操作数和目标尾数位子操作数进行组合,得到目标操作数。输出目标操作数。
需要说明的是,本发明的实施例中支持神经网络运算的多精度操作数运算方法部分与本发明的实施例中支持神经网络运算的多精度操作数运算装置部分是相对应的,支持神经网络运算的多精度操作数运算方法部分的描述具体参考支持神经网络运算的多精度操作数运算装置部分,在此不再赘述。
图11示出了根据本发明实施例的适于实现支持神经网络运算的多精度操作数运算方法的电子设备的方框图。
如图11所示,根据本发明实施例的电子设备1100包括处理器1101,其可以根据存储在只读存储器(ROM)1102中的程序或者从存储部分1108加载到随机访问存储器(RAM)1103中的程序而执行各种适当的动作和处理。处理器1101例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器1101还可以包括用于缓存用途的板载存储器。处理器1101可以包括用于执行根据本发明实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 1103中,存储有电子设备1100操作所需的各种程序和数据。处理器 1101、ROM 1102以及RAM 1103通过总线1104彼此相连。处理器1101通过执行ROM 1102和/或RAM1103中的程序来执行根据本发明实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 1102和RAM 1103以外的一个或多个存储器中。处理器1101也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本发明实施例的方法流程的各种操作。
根据本发明的实施例,电子设备1100还可以包括输入/输出(I/O)接口1105,输入/输出(I/O)接口1105也连接至总线1104。电子设备1100还可以包括连接至输入/输出(I/O)接口1105的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1106;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1107;包括硬盘等的存储部分1108;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分11011。通信部分11011经由诸如因特网的网络执行通信处理。驱动器1110也根据需要连接至输入/输出(I/O)接口1105。可拆卸介质1111,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1110上,以便于从其上读出的计算机程序根据需要被安装入存储部分1108。
本发明还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本发明实施例的方法。
根据本发明的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本发明的实施例,计算机可读存储介质可以包括上文描述的ROM 1102和/或RAM 1103和/或ROM 1102和RAM 1103以外的一个或多个存储器。
本发明的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本发明实施例所提供的支持神经网络运算的多精度操作数运算方法。
在该计算机程序被处理器1101执行时执行本发明实施例的系统/装置中限定的上述功能。根据本发明的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分1109被下载和安装,和/或从可拆卸介质1111被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
在这样的实施例中,该计算机程序可以通过通信部分1109从网络上被下载和安装,和/或从可拆卸介质1111被安装。在该计算机程序被处理器1101执行时,执行本发明实施例的系统中限定的上述功能。根据本发明的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
根据本发明的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本发明的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本发明中。特别地,在不脱离本发明精神和教导的情况下,本发明的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本发明的范围。
以上对本发明的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本发明的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本发明的范围由所附权利要求及其等同物限定。不脱离本发明的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本发明的范围之内。
Claims (10)
1.一种支持神经网络运算的多精度操作数运算装置,其特征在于,包括:
精度转换模块,用于对多个输入操作数各自的尾数分别进行精度转换,得到具有预设尾数位域的多个转换操作数;
数据预处理模块,用于提取所述转换操作数的符号位子操作数、指数位子操作数和尾数位子操作数;
运算操作模块,用于根据多个所述转换操作数各自的所述符号位子操作数、所述指数位子操作数和所述尾数位子操作数执行运算操作处理,得到目标符号位子操作数、目标指数位子操作数和目标尾数位子操作数;
结果输出模块,用于根据所述目标符号位子操作数、所述目标指数位子操作数和所述目标尾数位子操作数,输出目标操作数。
2.根据权利要求1所述的多精度操作数运算装置,其特征在于,所述精度转换模块包括:
精度转换子模块,用于根据所述输入操作数的数据格式对所述输入操作数的所述尾数进行精度转换,得到具有所述预设尾数位域的所述转换操作数。
3.根据权利要求2所述的支持神经网络运算的多精度操作数运算装置,其特征在于,所述精度转换子模块包括:
确定单元,用于在所述数据格式是单精度数据格式的情况下,确定所述输入操作数的所述尾数;
精度转换单元,用于对所述输入操作数的所述尾数的预设尾数位置的子操作数进行精度转换,得到具有所述预设尾数位域的所述转换操作数。
4.根据权利要求1所述的多精度操作数运算装置,其特征在于,所述装置还包括:
确定模块,用于从输入操作数集中确定乘法类操作数和加法类操作数,所述输入操作数集包括多个所述输入操作数。
5.根据权利要求4所述的多精度操作数运算装置,其特征在于,所述运算操作模块包括:
符号位处理子模块,用于基于运算规则处理多个所述转换操作数的所述符号位子操作数,得到所述目标符号位子操作数;
尾数乘法子模块,用于对多个所述转换操作数的所述尾数进行乘法运算,得到和与进位数据。
6.根据权利要求5所述的支持神经网络运算的多精度操作数运算装置,其特征在于,所述尾数位子操作数包括未经过精度转换的FP8转换子操作数、BF16转换子操作数和整数转换子操作数、以及经过精度转换的单精度转换子操作数中至少一种转换子操作数,所述和与进位数据包括第一和与进位数据和第二和与进位数据;
所述尾数乘法子模块包括:
多精度尾数乘法子单元,用于对与所述乘法类操作数对应的的所述单精度转换子操作数、所述BF16转换子操作数和所述整数精度转换子操作数中多个所述尾数位子操作数进行乘法运算,得到所述第一和与进位数据;
FP8尾数乘法子单元,用于对与所述乘法类操作数对应的多个所述FP8转换子操作数的进行乘法运算,得到所述第二和与进位数据,所述FP8转换子操作数是FP8数据格式的子操作数。
7.根据权利要求6所述的支持神经网络运算的多精度操作数运算装置,其特征在于,所述运算操作模块还包括:
指数处理子模块,用于对多个所述乘法类操作数的指数和与所述加法类操作数的所述指数做差,得到指数差值;
运算操作子模块,用于根据所述指数差值,对所述第一和与进位数据的所述尾数、所述第二和与进位数据的所述尾数和所述加法类操作数的所述尾数进行处理,得到乘加尾数位子操作数。
8.根据权利要求7所述的支持神经网络运算的多精度操作数运算装置,其特征在于,所述运算操作子模块包括:
对齐移位子单元,用于根据所述指数差值对所述加法类操作数的所述尾数进行对齐移位,得到对齐移位子操作数;
加法压缩子单元,用于对所述第一和与进位数据、所述第二和与进位数据和所述对齐移位子操作数的低位尾数进行压缩,得到低位尾数位子操作数;
进位选择加法子单元,用于将所述低位尾数位子操作数和所述对齐移位子操作数的高位尾数进行加法操作,得到乘加尾数位子操作数。
9.根据权利要求8所述的支持神经网络运算的多精度操作数运算装置,其特征在于,所述运算操作模块还包括:
前导零预测子模块,用于计算多个所述乘加尾数位子操作数中前导零的数量;
规格化移位子模块,用于根据所述前导零的数量对多个所述乘加尾数位子操作数进行移位,得到多个规格化尾数位子操作数;
尾数舍入子模块,用于根据浮点精度模式对所述规格化尾数位子操作数进行精度转换,得到所述目标尾数位子操作数;
指数调整子模块,用于根据所述前导零的数量,对所述指数位子操作数进行调整,得到所述目标指数位子操作数。
10.根据权利要求1所述的支持神经网络运算的多精度操作数运算装置,其特征在于,所述结果输出模块包括:
组合子模块,用于根据模式信号,将所述目标符号位子操作数、所述目标指数位子操作数和所述目标尾数位子操作数进行组合,得到所述目标操作数;
输出子模块,用于输出所述目标操作数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410121666.6A CN117648959B (zh) | 2024-01-30 | 2024-01-30 | 支持神经网络运算的多精度操作数运算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410121666.6A CN117648959B (zh) | 2024-01-30 | 2024-01-30 | 支持神经网络运算的多精度操作数运算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117648959A true CN117648959A (zh) | 2024-03-05 |
CN117648959B CN117648959B (zh) | 2024-05-17 |
Family
ID=90046371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410121666.6A Active CN117648959B (zh) | 2024-01-30 | 2024-01-30 | 支持神经网络运算的多精度操作数运算装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117648959B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030041083A1 (en) * | 2000-05-15 | 2003-02-27 | Jennings Earle Willis | Method and apparatus for high speed calculation of non-linear functions and networks using non-linear function calculations for digital signal processing |
CN110458277A (zh) * | 2019-04-17 | 2019-11-15 | 上海酷芯微电子有限公司 | 适用于深度学习硬件加速器的可配置精度的卷积硬件结构 |
CN115390790A (zh) * | 2022-08-01 | 2022-11-25 | 中国人民解放军国防科技大学 | 一种具有融合精度转换功能的浮点乘加单元及其应用方法 |
CN116400883A (zh) * | 2023-03-09 | 2023-07-07 | 华南理工大学 | 一种可切换精度的浮点乘加器 |
CN116795324A (zh) * | 2023-07-03 | 2023-09-22 | 之江实验室 | 混合精度浮点乘法装置和混合精度浮点数处理方法 |
-
2024
- 2024-01-30 CN CN202410121666.6A patent/CN117648959B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030041083A1 (en) * | 2000-05-15 | 2003-02-27 | Jennings Earle Willis | Method and apparatus for high speed calculation of non-linear functions and networks using non-linear function calculations for digital signal processing |
CN110458277A (zh) * | 2019-04-17 | 2019-11-15 | 上海酷芯微电子有限公司 | 适用于深度学习硬件加速器的可配置精度的卷积硬件结构 |
CN115390790A (zh) * | 2022-08-01 | 2022-11-25 | 中国人民解放军国防科技大学 | 一种具有融合精度转换功能的浮点乘加单元及其应用方法 |
CN116400883A (zh) * | 2023-03-09 | 2023-07-07 | 华南理工大学 | 一种可切换精度的浮点乘加器 |
CN116795324A (zh) * | 2023-07-03 | 2023-09-22 | 之江实验室 | 混合精度浮点乘法装置和混合精度浮点数处理方法 |
Non-Patent Citations (3)
Title |
---|
V. ARUNACHALAM: "Efficient dual-precision floating-point fused-multiply-add architecture", 《MICROPROCESSORS AND MICROSYSTEMS》, vol. 57, 20 December 2017 (2017-12-20), pages 23 - 31 * |
XUEFEI BAI: "An FPGA-Based Efficient NTT Accelerator for Post-Quantum Cryptography CRYSTALS-Kyber", 《 2023 IEEE INTERNATIONAL CONFERENCE ON INTEGRATED CIRCUITS, TECHNOLOGIES AND APPLICATIONS (ICTA)》, 28 December 2023 (2023-12-28), pages 1 - 2 * |
潘奇: "X-DSP中运算部件的UVM验证", 《中国优秀硕士学位论文全文数据库(信息科技辑)》, 15 May 2021 (2021-05-15), pages 1 - 93 * |
Also Published As
Publication number | Publication date |
---|---|
CN117648959B (zh) | 2024-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9519460B1 (en) | Universal single instruction multiple data multiplier and wide accumulator unit | |
JP7042276B2 (ja) | 3つの128ビット拡張オペランドに対して融合積和演算を実行するように構成される浮動小数点ユニット、その方法、プログラム、およびシステム | |
US7912890B2 (en) | Method and apparatus for decimal number multiplication using hardware for binary number operations | |
JP5873599B2 (ja) | デジタルシグナルプロセッサにおける信号処理のためのシステムおよび方法 | |
US9959093B2 (en) | Binary fused multiply-add floating-point calculations | |
US10416962B2 (en) | Decimal and binary floating point arithmetic calculations | |
CN102576302B (zh) | 微处理器及用于微处理器上增强精确度乘积和计算的方法 | |
US5548545A (en) | Floating point exception prediction for compound operations and variable precision using an intermediate exponent bus | |
US8930433B2 (en) | Systems and methods for a floating-point multiplication and accumulation unit using a partial-product multiplier in digital signal processors | |
US20170068517A1 (en) | Decimal and binary floating point rounding | |
CN112241291A (zh) | 用于指数函数实施的浮点单元 | |
US7814138B2 (en) | Method and apparatus for decimal number addition using hardware for binary number operations | |
US6542915B1 (en) | Floating point pipeline with a leading zeros anticipator circuit | |
KR20170138143A (ko) | 단일 곱셈-누산 방법 및 장치 | |
CN117420982A (zh) | 包括融合乘累加器的芯片、设备及数据运算的控制方法 | |
CN117648959B (zh) | 支持神经网络运算的多精度操作数运算装置 | |
CN117215646A (zh) | 一种浮点运算方法、处理器、电子设备及存储介质 | |
US20210064976A1 (en) | Neural network circuitry having floating point format with asymmetric range | |
Hsiao et al. | Design of a low-cost floating-point programmable vertex processor for mobile graphics applications based on hybrid number system | |
CN115904308A (zh) | 一种计算超越函数的运算电路、运算装置和运算方法 | |
Tan et al. | Efficient Multiple-Precision and Mixed-Precision Floating-Point Fused Multiply-Accumulate Unit for HPC and AI Applications | |
JP2002023997A (ja) | 浮動小数点演算のための選択ベースの丸め方法 | |
Jalaja et al. | Retime Low Power Approximate Multiplier for Image Sharpening and Smoothing | |
US20230334117A1 (en) | Method and system for calculating dot products | |
Kumar et al. | Simulation And Synthesis Of 32-Bit Multiplier Using Configurable Devices |
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 |