CN116820393A - 支持深度学习指令的多精度乘加单元及其应用方法 - Google Patents
支持深度学习指令的多精度乘加单元及其应用方法 Download PDFInfo
- Publication number
- CN116820393A CN116820393A CN202310713032.5A CN202310713032A CN116820393A CN 116820393 A CN116820393 A CN 116820393A CN 202310713032 A CN202310713032 A CN 202310713032A CN 116820393 A CN116820393 A CN 116820393A
- Authority
- CN
- China
- Prior art keywords
- module
- precision
- product
- partial
- multiply
- 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
- 238000013135 deep learning Methods 0.000 title claims abstract description 50
- 238000000034 method Methods 0.000 title claims abstract description 12
- 238000004364 calculation method Methods 0.000 claims abstract description 62
- 238000007781 pre-processing Methods 0.000 claims abstract description 21
- 238000012545 processing Methods 0.000 claims abstract description 15
- 230000006835 compression Effects 0.000 claims abstract description 7
- 238000007906 compression Methods 0.000 claims abstract description 7
- 238000010606 normalization Methods 0.000 claims abstract description 7
- 230000000295 complement effect Effects 0.000 claims description 24
- 210000004556 brain Anatomy 0.000 claims description 6
- 230000005856 abnormality Effects 0.000 claims description 3
- 238000001514 detection method Methods 0.000 claims description 3
- 230000001502 supplementing effect Effects 0.000 claims description 3
- 238000004422 calculation algorithm Methods 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 238000012549 training Methods 0.000 description 4
- 238000003860 storage Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种支持深度学习指令的多精度乘加单元及其应用方法,本发明的多精度乘加单元包括两条路径:定点点积路径包括第一数据预处理模块、多精度乘法编码模块、多级压缩树模块、加法模块和第一输出处理模块;单精度浮点加法路径包括第二数据预处理模块、指数差值模块、对阶移位模块、加法合并模块、前导零计算模块、规格化移位模块、尾数舍入模块、指数调整模块以及第二输出处理模块。本发明旨在满足主流的深度学习指令对各类低精度数据格式的需求,以及单指令多数据流的并行计算要求,包括支持点积运算和并行乘加计算,能够同时定点计算指令和浮点加法指令,加速深度学习推理算法的执行,以充分发挥计算性能。
Description
技术领域
本发明属于微处理器设计技术领域,具体涉及一种支持深度学习指令的多精度乘加单元及其应用方法。
背景技术
深度学习算法分为训练和推理两个阶段,在训练阶段确定算法模型参数,推理阶段则利用训练好的模型,使用新数据推理解决实际问题。这两个阶段对计算需求并不相同,训练阶段涉及到误差累积,梯度传播等复杂计算,对计算精度要求更高,因此往往采用浮点数进行计算。推理计算则具有更好的鲁棒性,通常采用低精度定点数进行计算以降低开销。此外,深度学习算法模型各个网络层的精度需求亦有差异,比如计算敏感层(如卷积和全连接层等)对精度的需求往往低于精度敏感层(如BatchNorm层和SoftMax层)。在当前主流的深度学习算法模型中,计算敏感层通常采用16位半精度(half-precision,HP)或脑精度(BrainFloat16,BF16)浮点数进行训练,8位的定点(INT8)数进行推理以降低开销,而精度敏感层则统一采用单精度浮点(single-precision,SP)计算以避免溢出。
传统的通用处理器架构在执行深度学习应用时效率低,开销大,无法满足深度学习应用日益增长的算力需求。为此,一些主流的处理器架构设计了专用深度学习指令以加速深度学习算法的执行,比如AVX-512、Arm v8-SVE和Arm v8-SME。这些指令能够支持低精度数据格式,比如16位半精度和脑精度浮点格式和8位定点,并通过单指令多数据流(Single Instruction Multiple Data,SIMD)支持多个操作并行计算以提升性能。但是,深度学习专用指令与传统的指令不同,对数据格式和计算并行性均提出了更高的要求,传统的运算单元难以满足深度学习指令的计算需求。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种支持深度学习指令的多精度乘加单元及其应用方法,本发明旨在满足主流的深度学习指令对各类低精度数据格式的需求,以及对单指令多数据流的并行计算要求,包括支持点积运算和并行乘加计算,同时进一步挖掘出运算单元的并行性,使其能够同时定点计算指令和浮点加法指令,加速深度学习推理算法的执行,以充分发挥计算性能。
为了解决上述技术问题,本发明采用的技术方案为:
一种支持深度学习指令的多精度乘加单元,包括定点点积路径和单精度浮点加法路径,所述定点点积路径包括:
第一数据预处理模块,用于对对输入的源操作数进行预处理,提取输入的定点操作数的符号位和数值位域,提取浮点操作数的尾数位域,并补上尾数的隐藏位;
多精度乘法编码模块,用于对乘数进行BOOTH编码,形成多个乘法部分积;
多级压缩树模块,用于通过多级压缩树对乘法部分积进行压缩,得到和与进位;
加法模块,将和与进位相加,得到输出结果;
第一输出处理模块,对加法模块的输出结果进行溢出判断和处理,形成定点点积路径的最终输出结果;
所述单精度浮点加法路径包括:
第二数据预处理模块,用于对输入源操作数进行预处理,提取输入的浮点操作数的符号位和指数位域,同时进行对输入数据进行异常检测;
指数差值模块,用于在执行浮点点积计算时先找出多个乘积中最大者,然后再计算其他较小的乘积对阶移位量;在执行浮点乘加计算则直接计算乘积和加数的指数差值;
对阶移位模块,用于根据指数差值模块得到的指数差值,对加数或较小的乘积进行移位,且对阶移位模块的对阶数据的输入有两个来源,在执行单精度浮点计算时,输入来自于定点点积路径中加法模块的输出结果,而在执行浮点点积计算时,输入则来自指数差值模块;
加法合并模块,用于将对阶移位模块执行对阶移位的输出结果和定点点积路径中加法模块的输出结果相加;
前导零计算模块,用于计算加法合并模块输出的尾数中前导零的个数,以用于控制后续的尾数规格化移位和指数调整;
规格化移位模块,用于对加法合并模块输出的尾数进行向左的逻辑移位,具体左移的数据量为前导零计算模块计算得到的前导零的个数;
尾数舍入模块,用于根据输出数据格式的尾数位宽,对逻辑移位后的尾数进行舍入得到最终的尾数;
指数调整模块,用于结合前导零的数量和尾数舍入的进位对指数进行调整,得到最终的指数;
第二输出处理模块,根据输出数据格式,将符号位、最终的尾数和最终的指数进行组合,同时进行异常判断,形成最终输出结果。
可选地,所述第一数据预处理模块输入的源操作数包括操作数2和操作数3。
可选地,所述第二数据预处理模块输入的源操作数包括操作数0和操作数1。
可选地,所述单精度浮点加法路径中的指数差值模块包括用于在执行浮点点积计算时先找出多个乘积中最大者,然后再计算其他较小的乘积对阶移位量的浮点点积计算模块。
可选地,所述浮点点积计算模块执行浮点点积计算时先找出多个乘积中最大者,然后再计算其他较小的乘积对阶移位量包括:
通过四个加法器分别计算部分积,包括操作数a0的指数Ea0和操作数b0的指数Eb0的部分积0、操作数a1的指数Ea1和操作数b1的指数Eb1的部分积1、操作数a2的指数Ea2和操作数b2的指数Eb2的部分积2,以及操作数a3的指数Ea3和操作数b3的指数Eb3的部分积3;
通过两个减法器,分别将部分积0和部分积1相减得到符号位S0,将部分积2和部分积3相减得到符号位S1;
通过四个选择器,利用其中的两个选择器在的符号位S0控制下分别在部分积0和部分积1中选择出部分积0和部分积1的较小者Minpd01以及部分积0和部分积1的较大者Maxpd01,利用其中另外两个选择器在的符号位S1控制下分别在部分积2和部分积3中选择出部分积2和部分积3的较小者Minpd23以及部分积2和部分积3的较大者Maxpd23;
通过一个减法器,将部分积0和部分积1的较大者Maxpd01、部分积2和部分积3的较大者Maxpd23相减得到符号位S2;
通过两个选择器,分别在部分积0和部分积1的较大者Maxpd01、部分积2和部分积3的较大者Maxpd23中选择四个部分积的最大者Maxpd,在部分积0和部分积1的较小者Minpd01、部分积2和部分积3的较小者Minpd23中选择四个部分积的最小者Minpd;
通过三个补码模块,分别对符号位S0补码得到补码后的符号位S0,对符号位S1补码得到补码后的符号位S1,对符号位S2补码得到补码后的符号位S2;
通过一个减法器,将四个部分积的最大者Maxpd减去四个部分积的最小者Minpd的差值;
通过一个选择器,针对四个部分积的最大者Maxpd减去四个部分积的最小者Minpd的差值,分别根据补码后的符号位S0、符号位S1以及符号位S2,分别选择部分积0的对阶移位量ASCpd0、部分积1的对阶移位量ASCpd1、部分积2的对阶移位量ASCpd2以及部分积3的对阶移位量ASCpd3。
可选地,所述定点点积路径的多精度乘法编码模块为多精度的有符号乘法器阵列。
可选地,所述多精度的有符号乘法器阵列由8个乘法器单元组合,每个乘法器单元完成一个7位的有符号乘法对应于定点点积的计算,且通过8个乘法器单元组合在每个时钟周期实现一个单精度乘法、4个半精度或脑精度乘法或者8个8位定点乘法。
此外,本发明还提供一种处理器芯片,所述处理器芯片包括芯片本体和设于芯片本体中的运算单元,所述运算单元中包括权所述支持深度学习指令的多精度乘加单元。
此外,本发明还提供一种计算机设备,包括相互连接的微处理器和存储器,所述微处理器包括微处理器本体和设于微处理器本体中的运算单元,所述运算单元中包括权所述支持深度学习指令的多精度乘加单元。
此外,本发明还提供一种权所述支持深度学习指令的多精度乘加单元的应用方法,包括:确定乘加运算的数据格式和计算模式,若数据格式为单精度、半精度、脑精度和定点数据格式中的一种,且计算模式为浮点点积或者浮点乘加,则将乘加运算的操作数送入所述多精度乘加单元,通过多精度乘加单元执行乘加运算并获得运算结果。
和现有技术相比,本发明主要具有下述优点:
1、运算单元是处理器指令集的执行部件,它往往根据指令集的运算需求定制化设计。根据深度学习指令的计算需求,本发明的支持深度学习指令的多精度乘加单元能够支持单精度、半精度、脑精度和定点数据格式,支持点积和浮点乘加两种计算模式。同时本发明支持多路径执行,能够并行的执行定点点积和单精度加法两类操作,在不增加硬件开销的情况下,进一步的提升深度学习指令的执行效率。本发明能够支持多种数据格式适用于深度学习的不同场景,同时提供多层次的并行计算提升性能。
2、本发明的支持深度学习指令的多精度乘加单元是处理器中基本构成单元,其接口与传统的运算单元一致,在处理器中直接进行替换即可,易于实现。
附图说明
图1本发明实施例中的多精度乘加单元的多路径数据流。
图2本发明实施例中浮点点积计算模块的对阶移位量计算原理示意图。
图3本发明实施例中多精度乘法编码模块采用的有符号多精度乘法器阵列的结构示意图。
具体实施方式
针对于主流深度学习指令的计算需求,本发明提出了一种面向深度学习指令的多精度乘加单元,能够高效的执行各类深度学习指令。此外,该乘加单元还能支持指令级并行,同时执行两条指令,充分的发出其计算性能。
如图1所示,本实施例支持深度学习指令的多精度乘加单元包括定点点积路径和单精度浮点加法路径,定点点积路径包括:
第一数据预处理模块,用于对对输入的源操作数进行预处理,提取输入的定点操作数的符号位和数值位域,提取浮点操作数的尾数位域,并补上尾数的隐藏位;
多精度乘法编码模块,用于对乘数进行BOOTH编码,形成多个乘法部分积;
多级压缩树模块,用于通过多级压缩树对乘法部分积进行压缩,得到和与进位;
加法模块,将和与进位相加,得到输出结果;
第一输出处理模块,对加法模块的输出结果进行溢出判断和处理,形成定点点积路径的最终输出结果;
所述单精度浮点加法路径包括:
第二数据预处理模块,用于对输入源操作数进行预处理,提取输入的浮点操作数的符号位和指数位域,同时进行对输入数据进行异常检测;
指数差值模块,用于在执行浮点点积计算时先找出多个乘积中最大者,然后再计算其他较小的乘积对阶移位量;在执行浮点乘加计算则直接计算乘积和加数的指数差值;
对阶移位模块,用于根据指数差值模块得到的指数差值,对加数或较小的乘积进行移位,且对阶移位模块的对阶数据的输入有两个来源,在执行单精度浮点计算时,输入来自于定点点积路径中加法模块的输出结果,而在执行浮点点积计算时,输入则来自指数差值模块;
加法合并模块,用于将对阶移位模块执行对阶移位的输出结果和定点点积路径中加法模块的输出结果相加;
前导零计算模块,用于计算加法合并模块输出的尾数中前导零的个数,以用于控制后续的尾数规格化移位和指数调整;
规格化移位模块,用于对加法合并模块输出的尾数进行向左的逻辑移位,具体左移的数据量为前导零计算模块计算得到的前导零的个数;
尾数舍入模块,用于根据输出数据格式的尾数位宽,对逻辑移位后的尾数进行舍入得到最终的尾数;
指数调整模块,用于结合前导零的数量和尾数舍入的进位对指数进行调整,得到最终的指数;
第二输出处理模块,根据输出数据格式,将符号位、最终的尾数和最终的指数进行组合,同时进行异常判断,形成最终输出结果。
参见图1,第一数据预处理模块输入的源操作数包括操作数2和操作数3。
参见图1,第二数据预处理模块输入的源操作数包括操作数0和操作数1。
本实施例中,单精度浮点加法路径中的指数差值模块包括用于在执行浮点点积计算时先找出多个乘积中最大者,然后再计算其他较小的乘积对阶移位量的浮点点积计算模块。
图2描述了浮点点积计算时每个乘积的对阶移位量计算。为了支持4输入浮点点积计算,需要先找到4个乘积中最大者,计算其他乘积与最大乘积之间的指数差值,得到对阶移位量。首先用4个加法器计算每个乘积的指数和,再将4个乘积中的两两相减(部分积0和部分积1,部分积2和部分积3),通过减法的符号位确定它们的大小,随后再将每两个乘积中的较大者进行对比,此时便得到4个乘积中最大者。最大部分积一定是部分积0和1或部分积2和3中较大的那个,因此部分积0和1,部分积2和3的指数差值有一个是有效对阶移位量,此时再根据符号S2选择部分积0和1或部分积2和3中较小者计算指数差。最终根据减法器的符号位S1,S2,S3选择每个乘积对阶移位量,最大乘积的指数移位量为零。具体地,如图2所示,本实施例中浮点点积计算模块执行浮点点积计算时先找出多个乘积中最大者,然后再计算其他较小的乘积对阶移位量包括:
通过四个加法器分别计算部分积,包括操作数a0的指数Ea0和操作数b0的指数Eb0的部分积0、操作数a1的指数Ea1和操作数b1的指数Eb1的部分积1、操作数a2的指数Ea2和操作数b2的指数Eb2的部分积2,以及操作数a3的指数Ea3和操作数b3的指数Eb3的部分积3;
通过两个减法器,分别将部分积0和部分积1相减得到符号位S0,将部分积2和部分积3相减得到符号位S1;
通过四个选择器,利用其中的两个选择器在的符号位S0控制下分别在部分积0和部分积1中选择出部分积0和部分积1的较小者Minpd01以及部分积0和部分积1的较大者Maxpd01,利用其中另外两个选择器在的符号位S1控制下分别在部分积2和部分积3中选择出部分积2和部分积3的较小者Minpd23以及部分积2和部分积3的较大者Maxpd23;
通过一个减法器,将部分积0和部分积1的较大者Maxpd01、部分积2和部分积3的较大者Maxpd23相减得到符号位S2;
通过两个选择器,分别在部分积0和部分积1的较大者Maxpd01、部分积2和部分积3的较大者Maxpd23中选择四个部分积的最大者Maxpd,在部分积0和部分积1的较小者Minpd01、部分积2和部分积3的较小者Minpd23中选择四个部分积的最小者Minpd;
通过三个补码模块,分别对符号位S0补码得到补码后的符号位S0,对符号位S1补码得到补码后的符号位S1,对符号位S2补码得到补码后的符号位S2;
通过一个减法器,将四个部分积的最大者Maxpd减去四个部分积的最小者Minpd的差值;
通过一个选择器,针对四个部分积的最大者Maxpd减去四个部分积的最小者Minpd的差值,分别根据补码后的符号位S0、符号位S1以及符号位S2,分别选择部分积0的对阶移位量ASCpd0、部分积1的对阶移位量ASCpd1、部分积2的对阶移位量ASCpd2以及部分积3的对阶移位量ASCpd3。
本实施例中,定点点积路径的多精度乘法编码模块为多精度的有符号乘法器阵列。如图3所示,本实施例中多精度的有符号乘法器阵列由8个乘法器单元组合,每个乘法器单元完成一个8位的有符号乘法对应于定点点积的计算,且通过8个乘法器单元组合在每个时钟周期实现1个单精度乘法、4个半精度或脑精度乘法或者8个8位定点乘法。需要说明的是,为了简略方便查看,图3只画了整个乘法器阵列的四分之一,全部乘法器阵列实现方式一样。图3由两个基础的乘法器单元组成,每个乘法器单元均可完成一个8位的有符号乘法对应于定点点积(INT8)的计算。两个乘法器单元组合可实现1个半精度或者脑精度乘法或者1/4个单精度(SP)乘法,应用于浮点点积计算或单精度乘加运算。整个乘法器阵列由8个基础乘法器组合,每个时钟周期可实现1个单精度乘法(SP),4个半精度(HP)或脑精度乘法(BF16),8个8位定点乘法(INT8)。图3所示为2个乘法器单元合并,故列出的为2个8位定点乘法(2INT8),1个半精度或脑精度乘法(1HP/BF16),四分之一个单精度乘法(1/4SP),图3中pp0~pp7分别表示部分积(partial product)0~7。
综上所述,根据AVX-512、Arm v8-SVE和Arm v8-SME所提出的深度学习指令的计算需求,本实施例设计了专用的多精度乘加单元。在数据格式上,本实施例提出的乘加单元能够支持单精度,半精度,脑精度和定点数据格式。在计算模式上,本实施例提出的乘加单元能够支持点积和并行乘加两种计算模式,并且还能支持定点点积和单精度浮点加法并行计算。本实施例基于传统的浮点乘加单元进行修改,以支持多种数据格式和计算模式。传统的浮点乘加单元包括数据预处理模块,乘法模块,指数差值模块,加数对阶模块,加法模块,前导零计算模块,指数调整模块,规格化移位模块,尾数舍入模块和结果输出模块。本实施例将这些模块按功能进行划分,设计了两条执行路径以实现更高的并行性。同时,本实施例在乘法器模块和指数差值模块进行修改以降低硬件开销,其余模块根据多精度数据格式的位宽也做了适配性的修改。主要的改进如下:数据流调整:为了支持深度学习指令内部SIMD操作和指令间的并行,本实施例将浮点乘加单元中乘法器和其余模块拆分,同时在乘法器输出端增加加法模块,设计出两条独立的数据路径。使得运算单元能够以极少量的硬件开销为代价,支持并行定点点积和单精度加法。同时,两个数据路径合并能够支持浮点点积或单精度乘加运算。多精度乘法器阵列:本实施例需要支持多种数据格式的SIMD计算,因此乘法器阵列采用低精度组合实现方式进行模块复用以降低硬件开销,即将设计多个规模较小的乘法器单元,每个乘法器单元能够支持8位的有符号定点乘法,两个乘法器单元组合起来能实现半精度或脑精度乘法,八个乘法器单元组合起来能实现单精度的乘法。指数差值模块:指数差值模块根据各操作数的指数差值生成对阶移位量控制加数的对阶操作。由于浮点点积操作中涉及到多个点积的移位,因此需要先找到它们中最大者,其余乘积与它们中最大者作差,生成对阶移位量。本实施例支持深度学习指令的多精度乘加单元,它可以支持八输入8位定点点积,四输入半精度或脑精度浮点点积以及单精度浮点乘加。这些操作与深度学习指令的功能相对应,能够高效的支持深度学习指令的执行。此外,本实施例支持双路径执行,可以同时执行定点点积单精度浮点加法,并行执行两类指令,能够满足深度学习推理阶段各网络模型层的计算需求,提升实际性能。
此外,本实施例还提供一种处理器芯片,所述处理器芯片包括芯片本体和设于芯片本体中的运算单元,所述运算单元中包括所述支持深度学习指令的多精度乘加单元。
此外,本实施例还提供一种计算机设备,包括相互连接的微处理器和存储器,所述微处理器包括微处理器本体和设于微处理器本体中的运算单元,所述运算单元中包括所述支持深度学习指令的多精度乘加单元。
本实施例支持深度学习指令的多精度乘加单元,能够有效的加速深度学习指令的计算。本实施例提出的多精度运算单元能够支持八输入8位定点点积,四输入半精度或脑精度浮点点积以及单精度浮点乘加对应于不同的深度学习指令的计算需求。本实施例设计了两条数据路径,它们能够并行的执行定点点积和单精度浮点运算。并且,两条路径能够进行合并,合并后可以执行浮点点积或单精度乘加运算。此外,本实施例还提供一种前述支持深度学习指令的多精度乘加单元的应用方法,包括:确定乘加运算的数据格式和计算模式,若数据格式为单精度、半精度、脑精度和定点数据格式中的一种,且计算模式为浮点点积或者浮点乘加,则将乘加运算的操作数送入所述多精度乘加单元,通过多精度乘加单元执行乘加运算并获得运算结果。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种支持深度学习指令的多精度乘加单元,其特征在于,包括定点点积路径和单精度浮点加法路径,所述定点点积路径包括:
第一数据预处理模块,用于对对输入的源操作数进行预处理,提取输入的定点操作数的符号位和数值位域,提取浮点操作数的尾数位域,并补上尾数的隐藏位;
多精度乘法编码模块,用于对乘数进行BOOTH编码,形成多个乘法部分积;
多级压缩树模块,用于通过多级压缩树对乘法部分积进行压缩,得到和与进位;
加法模块,将和与进位相加,得到输出结果;
第一输出处理模块,对加法模块的输出结果进行溢出判断和处理,形成定点点积路径的最终输出结果;
所述单精度浮点加法路径包括:
第二数据预处理模块,用于对输入源操作数进行预处理,提取输入的浮点操作数的符号位和指数位域,同时进行对输入数据进行异常检测;
指数差值模块,用于在执行浮点点积计算时先找出多个乘积中最大者,然后再计算其他较小的乘积对阶移位量;在执行浮点乘加计算则直接计算乘积和加数的指数差值;
对阶移位模块,用于根据指数差值模块得到的指数差值,对加数或较小的乘积进行移位,且对阶移位模块的对阶数据的输入有两个来源,在执行单精度浮点计算时,输入来自于定点点积路径中加法模块的输出结果,而在执行浮点点积计算时,输入则来自指数差值模块;
加法合并模块,用于将对阶移位模块执行对阶移位的输出结果和定点点积路径中加法模块的输出结果相加;
前导零计算模块,用于计算加法合并模块输出的尾数中前导零的个数,以用于控制后续的尾数规格化移位和指数调整;
规格化移位模块,用于对加法合并模块输出的尾数进行向左的逻辑移位,具体左移的数据量为前导零计算模块计算得到的前导零的个数;
尾数舍入模块,用于根据输出数据格式的尾数位宽,对逻辑移位后的尾数进行舍入得到最终的尾数;
指数调整模块,用于结合前导零的数量和尾数舍入的进位对指数进行调整,得到最终的指数;
第二输出处理模块,根据输出数据格式,将符号位、最终的尾数和最终的指数进行组合,同时进行异常判断,形成最终输出结果。
2.根据权利要求1所述的支持深度学习指令的多精度乘加单元,其特征在于,所述第一数据预处理模块输入的源操作数包括操作数2和操作数3。
3.根据权利要求2所述的支持深度学习指令的多精度乘加单元,其特征在于,所述第二数据预处理模块输入的源操作数包括操作数0和操作数1。
4.根据权利要求1所述的支持深度学习指令的多精度乘加单元,其特征在于,所述单精度浮点加法路径中的指数差值模块包括用于在执行浮点点积计算时先找出多个乘积中最大者,然后再计算其他较小的乘积对阶移位量的浮点点积计算模块。
5.根据权利要求4所述的支持深度学习指令的多精度乘加单元,其特征在于,所述浮点点积计算模块执行浮点点积计算时先找出多个乘积中最大者,然后再计算其他较小的乘积对阶移位量包括:
通过四个加法器分别计算部分积,包括操作数a0的指数Ea0和操作数b0的指数Eb0的部分积0、操作数a1的指数Ea1和操作数b1的指数Eb1的部分积1、操作数a2的指数Ea2和操作数b2的指数Eb2的部分积2,以及操作数a3的指数Ea3和操作数b3的指数Eb3的部分积3;
通过两个减法器,分别将部分积0和部分积1相减得到符号位S0,将部分积2和部分积3相减得到符号位S1;
通过四个选择器,利用其中的两个选择器在的符号位S0控制下分别在部分积0和部分积1中选择出部分积0和部分积1的较小者Minpd01以及部分积0和部分积1的较大者Maxpd01,利用其中另外两个选择器在的符号位S1控制下分别在部分积2和部分积3中选择出部分积2和部分积3的较小者Minpd23以及部分积2和部分积3的较大者Maxpd23;
通过一个减法器,将部分积0和部分积1的较大者Maxpd01、部分积2和部分积3的较大者Maxpd23相减得到符号位S2;
通过两个选择器,分别在部分积0和部分积1的较大者Maxpd01、部分积2和部分积3的较大者Maxpd23中选择四个部分积的最大者Maxpd,在部分积0和部分积1的较小者Minpd01、部分积2和部分积3的较小者Minpd23中选择四个部分积的最小者Minpd;
通过三个补码模块,分别对符号位S0补码得到补码后的符号位S0,对符号位S1补码得到补码后的符号位S1,对符号位S2补码得到补码后的符号位S2;
通过一个减法器,将四个部分积的最大者Maxpd减去四个部分积的最小者Minpd的差值;
通过一个选择器,针对四个部分积的最大者Maxpd减去四个部分积的最小者Minpd的差值,分别根据补码后的符号位S0、符号位S1以及符号位S2,分别选择部分积0的对阶移位量ASCpd0、部分积1的对阶移位量ASCpd1、部分积2的对阶移位量ASCpd2以及部分积3的对阶移位量ASCpd3。
6.根据权利要求1所述的支持深度学习指令的多精度乘加单元,其特征在于,所述定点点积路径的多精度乘法编码模块为多精度的有符号乘法器阵列。
7.根据权利要求6所述的支持深度学习指令的多精度乘加单元,其特征在于,所述多精度的有符号乘法器阵列由8个乘法器单元组合,每个乘法器单元完成一个7位的有符号乘法对应于定点点积的计算,且通过8个乘法器单元组合在每个时钟周期实现一个单精度乘法、4个半精度或脑精度乘法或者8个8位定点乘法。
8.一种处理器芯片,所述处理器芯片包括芯片本体和设于芯片本体中的运算单元,其特征在于,所述运算单元中包括权利要求1~7中任意一项所述支持深度学习指令的多精度乘加单元。
9.一种计算机设备,包括相互连接的微处理器和存储器,所述微处理器包括微处理器本体和设于微处理器本体中的运算单元,其特征在于,所述运算单元中包括权利要求1~7中任意一项所述支持深度学习指令的多精度乘加单元。
10.一种权利要求1~7中任意一项所述支持深度学习指令的多精度乘加单元的应用方法,其特征在于,包括:确定乘加运算的数据格式和计算模式,若数据格式为单精度、半精度、脑精度和定点数据格式中的一种,且计算模式为浮点点积或者浮点乘加,则将乘加运算的操作数送入所述多精度乘加单元,通过多精度乘加单元执行乘加运算并获得运算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310713032.5A CN116820393A (zh) | 2023-06-15 | 2023-06-15 | 支持深度学习指令的多精度乘加单元及其应用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310713032.5A CN116820393A (zh) | 2023-06-15 | 2023-06-15 | 支持深度学习指令的多精度乘加单元及其应用方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116820393A true CN116820393A (zh) | 2023-09-29 |
Family
ID=88140455
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310713032.5A Pending CN116820393A (zh) | 2023-06-15 | 2023-06-15 | 支持深度学习指令的多精度乘加单元及其应用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116820393A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117149130A (zh) * | 2023-10-31 | 2023-12-01 | 中科亿海微电子科技(苏州)有限公司 | 一种应用于fpga嵌入式dsp的多精度浮点乘法器结构 |
CN117785113A (zh) * | 2024-02-07 | 2024-03-29 | 北京壁仞科技开发有限公司 | 计算装置及方法、电子设备和存储介质 |
-
2023
- 2023-06-15 CN CN202310713032.5A patent/CN116820393A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117149130A (zh) * | 2023-10-31 | 2023-12-01 | 中科亿海微电子科技(苏州)有限公司 | 一种应用于fpga嵌入式dsp的多精度浮点乘法器结构 |
CN117149130B (zh) * | 2023-10-31 | 2024-01-30 | 中科亿海微电子科技(苏州)有限公司 | 一种应用于fpga嵌入式dsp的多精度浮点乘法器结构 |
CN117785113A (zh) * | 2024-02-07 | 2024-03-29 | 北京壁仞科技开发有限公司 | 计算装置及方法、电子设备和存储介质 |
CN117785113B (zh) * | 2024-02-07 | 2024-05-17 | 北京壁仞科技开发有限公司 | 计算装置及方法、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116820393A (zh) | 支持深度学习指令的多精度乘加单元及其应用方法 | |
US8838664B2 (en) | Methods and apparatus for compressing partial products during a fused multiply-and-accumulate (FMAC) operation on operands having a packed-single-precision format | |
CN102566964B (zh) | 矢量浮点变元缩减 | |
CN112860220B (zh) | 一种适用于多精度计算的可重构浮点乘加运算单元及方法 | |
KR20120053343A (ko) | 부동 소수점의 복합 연산장치 및 그 연산방법 | |
US20100125621A1 (en) | Arithmetic processing device and methods thereof | |
WO2017081435A1 (en) | Lane position information for processing of vector | |
US20130282784A1 (en) | Arithmetic processing device and methods thereof | |
Zhang et al. | Efficient fixed/floating-point merged mixed-precision multiply-accumulate unit for deep learning processors | |
US11068238B2 (en) | Multiplier circuit | |
CN112540743A (zh) | 面向可重构处理器的有无符号乘累加器及方法 | |
CN103984521A (zh) | Gpdsp中simd结构浮点除法的实现方法及装置 | |
CN101770355B (zh) | 兼容双精度和双单精度的浮点乘加器及其兼容处理方法 | |
KR20070085755A (ko) | 다목적 승산-가산 기능 유닛 | |
CN115390790A (zh) | 一种具有融合精度转换功能的浮点乘加单元及其应用方法 | |
CN112204517A (zh) | 多输入浮点加法器 | |
US20220283777A1 (en) | Signed multiword multiplier | |
Quinnell et al. | Bridge floating-point fused multiply-add design | |
CN117111881A (zh) | 支持多输入多格式的混合精度乘加运算器 | |
US20050228844A1 (en) | Fast operand formatting for a high performance multiply-add floating point-unit | |
JP2006228190A (ja) | 入力値に逆数演算を実施して結果値を作り出すデータ処理装置および方法 | |
CN113626759A (zh) | 使用低位宽点积引擎对高位宽数求和 | |
CN116627379A (zh) | 可重构的支持多精度浮点或定点运算的方法及系统 | |
CN112241252A (zh) | 用于处理浮点数的设备和方法 | |
KR100317767B1 (ko) | 부동 소수점 2진 4 워드 포맷 승산 명령 유닛 |
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 |