一种可扩展的BFloat16点乘运算器及微处理器制造技术

技术编号:38245910 阅读:11 留言:0更新日期:2023-07-25 18:06
本发明专利技术公开了一种可扩展的BFloat16点乘运算器及微处理器,所述可扩展的BFloat16点乘运算器包括以4项点乘单元为基础单元通过组合求和的方式连接的点乘运算单元,所述4项点乘单元包括输入处理模块、尾数乘法模块、指数处理模块、符号位逻辑模块、尾数对齐模块、尾数取补模块、尾数加法模块、前导零计数器、规格化模块、舍入模块以及输出寄存器,且上述部件形成三级流水段结构,且第一级流水段、第二级流水段和第三级流水段在3个时钟周期完成1次4项点乘运算。本发明专利技术旨在实现一种可扩展的BFloat16点乘运算硬件架构以解决深度学习模型中点乘运算存在很长的计算延迟,影响模型训练和推理速度的问题。速度的问题。速度的问题。

【技术实现步骤摘要】
一种可扩展的BFloat16点乘运算器及微处理器


[0001]本专利技术涉及微处理器设计领域,具体涉及一种可扩展的BFloat16点乘运算器及微处理器。

技术介绍

[0002]BFloat16是一种新型的浮点数据类型,由1位符号位、8位偏移指数位和7位尾数位组成。与传统的IEEE 754定义的32位单精度(SP)浮点数相比,16位的BFloat16格式应用到深度学习模型时占用更少的内存和传输带宽,在数据计算时消耗更少的硬件资源。同时,BFloat16有着与单精度浮点数等长的指数位,BFloat16可以满足绝大多数深度学习模型中与单精度浮点数相同的数值范围要求。进一步的研究表明,在深度学习领域中可以使用BFloat16作为一种优化技术,可以提高训练模型时CPU和GPU之间的通信效率,进而提升深度学习任务的速度和性能。因此,探索硬件架构上的BFloat16的运算单元设计,是加速深度学习应用的一种方式。
[0003]点乘运算也称为向量内积(vector inner product),是一种常见的线性代数运算。点积运算广泛存在于深度学习应用中,可以用于计算两个向量之间的相似度,也可以用于神经网络中的全连接层、卷积操作等。传统的点积运算使用乘加单元循环相加的方式来实现,以计算n项的点乘运算Z=A0×
B0+A1×
B1+

+A
n
‑1×
B
n
‑1为例,该方式需要使用乘加单元进行n次计算得到结果,存在很长的计算延迟。另一种方式是先使用并行的乘法器计算A
i
×
B
i
(i=0,1,

,n

1),再使用log
2 n级级联的并行加法器将每个积加到一起得到最终的点乘结果,这种实现方式可以极大缩短点乘运算的延迟。然而,由于浮点加法运算涉及对阶求和、舍入等操作,上述的第二种方式仍然存在缩短点乘运算延迟的探索空间。
[0004]在一项点乘电路的现有研究中,对支持IEEE 754规定的单精度浮点数的4项点乘运算做了优化,该电路以Z=(A0×
B0+A1×
B1)+(A2×
B2+A3×
B3)的方式计算4项的点乘,并将中间舍入操作与移位对齐操作合并,同时省略中间的加法和规格化操作,以减少点乘运算的延迟。在另一项研究中,对单精度浮点数和双精度浮点数的4项点乘单元做了优化,设计了一种新的硬件架构,该电路在得到4个浮点数尾数乘积后,对这4个尾数乘积同时进行对齐相加,这种方式进一步减少了点乘运算的延迟。然而,在深度学习应用中点乘运算的项数不定,这两种点乘硬件架构仅面向4项的点乘运算,无法充分满足深度学习应用的计算需求。同时,这两种电路不支持BFloat16数据格式,不适用于使用BFloat16数据格式的深度学习模型中。因此,探索支持BFloat16数据格式、可扩展的点乘单元的硬件架构,对于满足当前深度学习模型减少内存使用和通信带宽的需求、加速模型训练和推理速度至关重要。

技术实现思路

[0005]本专利技术要解决的技术问题:针对现有技术的上述问题,提供一种可扩展的BFloat16点乘运算器及微处理器,本专利技术旨在实现一种可扩展的BFloat16点乘运算硬件架构以解决深度学习模型中点乘运算存在很长的计算延迟,影响模型训练和推理速度的问
题。
[0006]为了解决上述技术问题,本专利技术采用的技术方案为:
[0007]一种可扩展的BFloat16点乘运算器,包括以4项点乘单元为基础单元通过组合求和的方式连接的点乘运算单元,所述4项点乘单元包括输入处理模块、尾数乘法模块、指数处理模块、符号位逻辑模块、尾数对齐模块、尾数取补模块、尾数加法模块、前导零计数器、规格化模块、舍入模块以及输出寄存器,所述输入处理模块用于从输入的向量中提取符号位、指数和尾数,所述尾数乘法模块用于执行进行尾数乘法,所述指数处理模块用于计算指数的最大指数和以及最大指数和与其他指数和的差值;所述符号位逻辑模块用于计算浮点数符号位;所述尾数对齐模块用于根据最大指数和与其他指数和的差值对尾数积进行移位;所述尾数取补模块用于根据浮点数符号位对移位后的尾数积进行取补;所述尾数加法模块用于对取补后的尾数积进行求和得到尾数和;所述前导零计数器用于计算尾数和的前导零个数,所述规格化模块用于对尾数和进行规格化移位和指数更新;所述舍入模块用于对规格化移位后的尾数进行舍入,并将最终的符号位、指数位、尾数位合并得到4项点乘运算的最终结果并通过输出寄存器输出。
[0008]可选地,所述4项点乘单元为三级流水段结构,所述输入处理模块、尾数乘法模块、指数处理模块以及符号位逻辑模块构成第一级流水段,所述尾数对齐模块、尾数取补模块以及尾数加法模块构成第二级流水段,所述前导零计数器、规格化模块、舍入模块以及输出寄存器构成第三级流水段,所述第一级流水段、第二级流水段和第三级流水段在3个时钟周期完成1次4项点乘运算。
[0009]可选地,所述指数处理模块包括用于计算指数的最大指数和的最大指数和逻辑运算电路,所述最大指数和逻辑运算电路包括四个加法器、两个第一级减法器、两个第一级选择器、一个第二级减法器和一个第二级选择器,每一个加法器用于将八个输入指数exp_a、exp_b、exp_c、exp_d、exp_e、exp_f、exp_g、exp_h的两个求和,每两个加法器的输出端共同连接一个第一级减法器和一个第一级选择器,且第一级减法器用于将两个加法器的输出做减法运算后作为控制信号、以控制选择器在两个加法器的输出择一输出至第二级减法器和第二级选择器,第二级减法器用于将两个第一级选择器的输出做减法运算后作为控制信号以控制第二级选择器在两个第一级选择器的输出中择一作为计算得到的最大指数和。
[0010]可选地,所述指数处理模块还包括用于计算最大指数和与其他指数和的差值的差值逻辑计算电路,所述差值逻辑计算电路包括四个减法器,所述四个减法器用于将最大指数和逻辑运算电路输出的最大指数及其一个加法器的输出结果做减法运算,从而得到最大指数和与其他指数和的差值。
[0011]可选地,所述尾数取补模块以4项点乘单元的第4组浮点数乘积的符号位为基准并作为点积运算最终的符号位,比较其他浮点数乘积的符号位与基准是否相同,并对不相同的浮点数乘积的尾数积进行取补运算,以取补后相加的电路来取代减法电路,同时计算不同符号位的个数count,并对尾数积进行两位的符号位扩展。
[0012]可选地,所述尾数加法模块将取补后的尾数积连同第4个尾数积经过一次压缩器CSA4:2压缩成两个加数sum和carry的形式,再通过传播进位加法器CPA将压缩得到的两个加数sum和carry相加得到4个尾数积之和,最后根据尾数积之和的两位符号位sig[0]和不同符号位的个数count判断是否需要进行取补运算,以及是否需要对基准符号位进行修正,
包括:
[0013](a),在count=0时,不需要进行取补运算和符号修正;<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种可扩展的BFloat16点乘运算器,其特征在于,包括以4项点乘单元为基础单元通过组合求和的方式连接的点乘运算单元,所述4项点乘单元包括输入处理模块、尾数乘法模块、指数处理模块、符号位逻辑模块、尾数对齐模块、尾数取补模块、尾数加法模块、前导零计数器、规格化模块、舍入模块以及输出寄存器,所述输入处理模块用于从输入的向量中提取符号位、指数和尾数,所述尾数乘法模块用于执行进行尾数乘法,所述指数处理模块用于计算指数的最大指数和以及最大指数和与其他指数和的差值;所述符号位逻辑模块用于计算浮点数符号位;所述尾数对齐模块用于根据最大指数和与其他指数和的差值对尾数积进行移位;所述尾数取补模块用于根据浮点数符号位对移位后的尾数积进行取补;所述尾数加法模块用于对取补后的尾数积进行求和得到尾数和;所述前导零计数器用于计算尾数和的前导零个数,所述规格化模块用于对尾数和进行规格化移位和指数更新;所述舍入模块用于对规格化移位后的尾数进行舍入,并将最终的符号位、指数位、尾数位合并得到4项点乘运算的最终结果并通过输出寄存器输出。2.根据权利要求1所述的可扩展的BFloat16点乘运算器,其特征在于,所述4项点乘单元为三级流水段结构,所述输入处理模块、尾数乘法模块、指数处理模块以及符号位逻辑模块构成第一级流水段,所述尾数对齐模块、尾数取补模块以及尾数加法模块构成第二级流水段,所述前导零计数器、规格化模块、舍入模块以及输出寄存器构成第三级流水段,所述第一级流水段、第二级流水段和第三级流水段在3个时钟周期完成1次4项点乘运算。3.根据权利要求2所述的可扩展的BFloat16点乘运算器,其特征在于,所述指数处理模块包括用于计算指数的最大指数和的最大指数和逻辑运算电路,所述最大指数和逻辑运算电路包括四个加法器、两个第一级减法器、两个第一级选择器、一个第二级减法器和一个第二级选择器,每一个加法器用于将八个输入指数exp_a、exp_b、exp_c、exp_d、exp_e、exp_f、exp_g、exp_h的两个求和,每两个加法器的输出端共同连接一个第一级减法器和一个第一级选择器,且第一级减法器用于将两个加法器的输出做减法运算后作为控制信号、以控制选择器在两个加法器的输出择一输出至第二级减法器和第二级选择器,第二级减法器用于将两个第一级选择器的输出做减法运算后作为控制信号以控制第二级选择器在两个第一级选择器的输出中择一作为计算得到的最大指数和。4.根据权利要求3所述的可扩展的BFloat16点乘运算器,其特征在于,所述指数处理模块还包括用于计算最大指数和与其他指数和的差值的差值逻辑计算电路,所述差值逻辑计算电路包括四个减法器,所述四个减法器用于将最大指数和逻辑运算电路输出的最大指数及其一个加法器的输出结果做减法运算,从而得到最大指数和与其他指数和的差值。5.根据权利要求4所述的可扩展的BFloat16点乘运算器,其特征在于,所述尾数取补模块以4项点乘单元的第4组浮点数乘积的符号位为基准并作为点积运算最终的符号位,比较其他浮点数乘积的符号位与基准是否相同,并对不相同的浮点数乘积的尾数积进行取补运算,以取补后相加的电路来取代减法电路,同时计算不同符号位的个数count,并对尾数积进行两位的符号位扩展。6.根据权利要求5所述的可扩展的BFloat16点乘运算器,其特征在于,所述尾数加法模块将取补后的尾数积连同第4个尾数积经过一次压缩器CSA4:2压缩成两个加数sum和carry的形式,再通过传播进位加法器CPA将压缩得到的两个加数sum和carry相加得到4个尾数积之和,最后根据尾数积之和的两位符号位...

【专利技术属性】
技术研发人员:黄立波张京郭辉郑重郭维王永文雷国庆王俊辉邓全隋兵才倪晓强孙彩霞沈俊忠
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1