浮点运算单元制造技术

技术编号:37275527 阅读:24 留言:0更新日期:2023-04-20 23:43
本发明专利技术提供了一种浮点运算单元,包括:存内计算电路,被配置为对输入数据和/或存储数据进行逻辑运算,以形成第一计算结果,其中所述输入数据和存储数据表征浮点数;以及浮点计算电路,被配置为对输入数据和/或第一计算结果进行浮点运算,以形成第二计算结果。以形成第二计算结果。以形成第二计算结果。

【技术实现步骤摘要】
浮点运算单元


[0001]本专利技术涉及集成电路
,特别涉及一种浮点运算单元。

技术介绍

[0002]现有CMOS电路存在如下缺陷:过去长期的一段时间中,由于算力需求不高,将存储部分和计算部分拆分开来设计的传统冯诺依曼架构占据主流;人工智能的发展让不同模块间的通信成本变得显著,如果沿用传统的冯诺依曼架构会带来“内存墙”,即高功耗的问题;也就是,传统架构无法限制功耗显著的升高。
[0003]存算一体化芯片是指一种在存储器内或存储器附近执行运算的芯片。由于更低功耗和更小芯片面积等优点,存算一体化芯片日益受到业界关注。但是目前的存内计算电路实现复杂,低精度。

技术实现思路

[0004]本专利技术的目的在于提供一种浮点运算单元,以解决现有的存内计算电路实现复杂的问题。
[0005]本专利技术的目的还在于提供一种浮点运算单元,以解决现有的存内计算电路低精度的问题。
[0006]为解决上述技术问题,本专利技术提供一种浮点运算单元,包括:
[0007]存内计算电路,被配置为对输入数据和/或存储数据进行逻辑运算,以形成第一计算结果,其中所述输入数据和存储数据表征浮点数;以及
[0008]浮点计算电路,被配置为对输入数据和/或第一计算结果进行浮点运算,以形成第二计算结果。
[0009]可选的,在所述的浮点运算单元中,还包括:
[0010]输入模块,被配置为向存内计算电路和/或浮点计算电路提供输入数据;
[0011]输出模块,被配置为输出存内计算电路的第一计算结果和/或浮点计算电路的第二计算结果。
[0012]可选的,在所述的浮点运算单元中,所述输入数据和所述存储数据经过存内计算电路的计算单元进行逻辑运算处理后,经过后续的浮点计算电路计算;
[0013]所述浮点计算电路计算包括并行的浮点数乘法操作;以及
[0014]所述逻辑运算包括与、或、非、与非、或非、与或非、异或和同或中的一种或多种。
[0015]可选的,在所述的浮点运算单元中,浮点数包括:1bit的符号位、n bit的指数位和m bit的尾数位,以存储
±
1.xx*2^x格式的数字;以及
[0016]并行的浮点数乘法操作包括,将符号位异或,将指数位相加,将尾数位相乘,以及根据符号位异或、指数位相加和尾数位相乘的结果进行归一化。
[0017]可选的,在所述的浮点运算单元中,存内计算电路对输入数据的每一位和存储数据的每一位进行一一对应的逻辑运算,在每个周期对两者的符号位进行异或,其他位进行
与操作;
[0018]浮点运算电路对输入数据和/或存内计算电路每个周期的计算结果进行处理,将输入数据和/或计算结果的指数位进行移位寄存,输入数据和/或计算结果的尾数位进行移位相加,经过完整计算周期的运算后归一化,输出浮点数相乘的结果。
[0019]可选的,在所述的浮点运算单元中,存内计算电路的计算单元被配置为进行符号位异或,以替代浮点计算电路浮点数乘法操作中的符号位异或操作。
[0020]可选的,在所述的浮点运算单元中,
[0021]第一浮点数存储在存内计算电路中,并且第二浮点数的第一部分由输入模块输入至存内计算电路,并且第二浮点数的第二部分和第三部分由输入模块输入至浮点计算电路;
[0022]在每个周期输入第二浮点数的n位,第二浮点数的第一部分在存内计算电路的计算单元内与第一浮点数进行逻辑运算,得到第一计算结果;第二浮点数的第二部分和第三部分同步延迟;以及
[0023]存内计算电路的第一计算结果存储在浮点运算电路内,并在第二浮点数每一位运算完成后进行归一化,以得到第二计算结果。
[0024]可选的,在所述的浮点运算单元中,将bf16分为两个8位数据,便于在存内计算电路进行存储和运算;
[0025]将浮点数fp16以2x8格式进行存储运算;
[0026]将浮点数fp32以4x8格式进行存储运算;以及
[0027]第二浮点数的第一部分为符号位,第二浮点数的第二部分为指数位,第二浮点数的第三部分为尾数位。
[0028]可选的,在所述的浮点运算单元中,浮点计算电路包括:
[0029]移位寄存器,被配置为将第二浮点数的第二部分进行移位寄存,得到第一结果;
[0030]移位加法器,被配置为将第二浮点数的第三部分与计算结果进行移位相加,得到第二结果;以及
[0031]加法器,被配置为将第一结果、第二结果与第一计算结果进行与操作,得到第二计算结果,其进位信号确定对应归一化操作。
[0032]可选的,在所述的浮点运算单元中,
[0033]其中第二计算结果的低位由符号位和尾数位组成,第二计算结果的高位由指数位组成;
[0034]8个周期中,由于存内计算电路中bf16存储格式为2x8,每周期输入2位输入数据进行计算,经过三个计算周期的间隔输出到浮点运算电路进行处理;以及
[0035]由于尾数位的特殊性,输入数据的低位提前一个周期置为高电平作为浮点前的1;
[0036]尾数位的特殊性具体参见IEEE754标准中的定义,是指其指代的数字是在尾数位前加上1.所组成的数字,例如,尾数位为01001,对应的数字为1.01001。
[0037]可选的,在所述的浮点运算单元中,存内运算电路的计算单元包括:
[0038]第一MOSFET,其栅极与分配给存内运算电路的存储单元的输出信号连接,其漏极和源极中的第一个与固定电平连接,其漏极和源极中的第二个与第二MOSFET的漏极和源极中的第一个连接;
[0039]第二MOSFET,其栅极与分配给存内运算电路的第一输入信号连接,其漏极和源极中的第二个与输出端连接;
[0040]第三MOSFET,其栅极与分配给存内运算电路的存储单元的输出信号的反相连接,其漏极和源极中的第一个与固定电平连接,其漏极和源极中的第二个与第四MOSFET的漏极和源极中的第一个连接;以及
[0041]第四MOSFET,其栅极与分配给存内运算电路的第二输入信号连接,其漏极和源极中的第二个与输出端连接。
[0042]本专利技术还提供一种存算一体电路,包括如上任一项所述的浮点运算单元。
[0043]本专利技术的专利技术人经研究发现:目前主流的存内计算电路是借助ADC,DAC(模数/数模转换器)等电路,将存储在RAM中的数据与输入的数据进行乘加操作,本质上是一种累加的算法;而这种结构电路的缺点在于精度太低,n个RAM只能实现log2(n)位二进制数的精度。
[0044]在本专利技术提供的浮点运算单元中,通过存内计算电路对输入数据和/或存储数据进行逻辑运算,形成计算结果,浮点计算电路对输入数据和/或计算结果进行浮点运算,使用浮点数格式进行计算,在保留存算一体电路低功耗优势的同时,计算精度也得以增加。例如使用fp16/bf16/fp32/fp64等主流浮点格式进行存内计算,理论上能较好的满足目前AI芯片的精度和算力要求。...

【技术保护点】

【技术特征摘要】
1.一种浮点运算单元,其特征在于,包括:存内计算电路,被配置为对输入数据和/或存储数据进行逻辑运算,以形成第一计算结果,其中所述输入数据和存储数据表征浮点数;以及浮点计算电路,被配置为对输入数据和/或第一计算结果进行浮点运算,以形成第二计算结果。2.如权利要求1所述的浮点运算单元,其特征在于,还包括:输入模块,被配置为向存内计算电路和/或浮点计算电路提供输入数据;输出模块,被配置为输出存内计算电路的第一计算结果和/或浮点计算电路的第二计算结果。3.如权利要求2所述的浮点运算单元,其特征在于,所述输入数据和所述存储数据经过存内计算电路的计算单元进行逻辑运算处理后,经过后续的浮点计算电路计算;所述浮点计算电路计算包括并行的浮点数乘法操作;以及所述逻辑运算包括与、或、非、与非、或非、与或非、异或和同或中的一种或多种。4.如权利要求3所述的浮点运算单元,其特征在于,浮点数包括:1bit的符号位、n bit的指数位和m bit的尾数位,以存储
±
1.xx*2^x格式的数字;以及并行的浮点数乘法操作包括,将符号位异或,将指数位相加,将尾数位相乘,以及根据符号位异或、指数位相加和尾数位相乘的结果进行归一化。5.如权利要求4所述的浮点运算单元,其特征在于,存内计算电路对输入数据的每一位和存储数据的每一位进行一一对应的逻辑运算,在每个周期对两者的符号位进行异或,其他位进行与操作;浮点运算电路对输入数据和/或存内计算电路每个周期的计算结果进行处理,将输入数据和/或计算结果的指数位进行移位寄存,输入数据和/或计算结果的尾数位进行移位相加,经过完整计算周期的运算后归一化,输出浮点数相乘的结果。6.如权利要求4所述的浮点运算单元,其特征在于,存内计算电路的计算单元被配置为进行符号位异或,以替代浮点计算电路浮点数乘法操作中的符号位异或操作。7.如权利要求5所述的浮点运算单元,其特征在于,第一浮点数存储在存内计算电路中,并且第二浮点数的第一部分由输入模块输入至存内计算电路,并且第二浮点数的第二部分和第三部分由输入模块输入至浮点计算电路;在每个周期输入第二浮点数的n位,第二浮点数的第一部分在存内计算电路的计算单元内与第一浮点数进行逻辑运算,得到第一...

【专利技术属性】
技术研发人员:燕博南范安俊逸
申请(专利权)人:北京苹芯科技有限公司
类型:发明
国别省市:

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

1