本发明属于集成电路,具体涉及一种基于sram的浮点型乘累加快速运算电路以及采用该电路的cim芯片。
背景技术:
1、近年来,随着大数据和人工智能(artificial intelligence,ai)等关键技术的突破,以边缘计算和智能生活为代表的新兴智能应用出现在快速发展的时代潮流中。这些新兴的智能应用在处理事件时往往需要频繁访问内存。然而,冯诺依曼体系结构是最常用的数据处理体系结构,它是通过分离存储器(memory)和计算单元来实现的。起初运算单元与存储单元是同步发展,这意味着存储器在存储速度和运算器在运算速度上是保持一致的。但是,随着半导体技术遵循着“摩尔定律”不断发展,运算单元朝着速度方向发展,而存储则在集成度上不断发展,这就导致存储器的存储速度无法匹配运算单元的运算速度,这也就是俗称的“存储墙”壁垒。
2、研究表明,访问数据所需的时间和功耗是远大于计算时所需的时间和功耗,并且随着技术不断地进步这一差异性会更加明显。如何在资源有限的设备上,实现高效低开销的运算是未来的发展方向。针对这种情况,技术人员提出一种基于存储器的存内运算(cim)架构,这种新型的计算机架构直接利用存储器来实现逻辑运算,无需在存储器和处理器进行数据搬运,因而可以大幅提高数据处理效率,并降低设备运行功耗。
3、随着深度学习算法的发展,神经网络的规模和复杂度不断增加,这种大规模的神经网络模型如今已广泛应用于计算机视觉、自然语言处理和推荐系统等,多元的应用场景体现出它独一无二的重要性。传统整数神经网络由于表征数据范围过小、计算精度较低等问题,在大规模模型计算中先天处于劣势。浮点神经网络很好的解决了这个问题,通过更高的数值表征范围和计算精度,浮点神经网络更适合使用于大规模神经网络模型中。
4、基于深度学习算法的数据处理中包含大量的乘积累加运算(multiplyaccumulate,mac)任务,现有各类基于sram实现的具有mac功能的cim电路在整数型运算中效率较高。但是,传统cim电路在进行浮点型数据运算时,需要分别实现“指数相加、尾数相乘、指数对齐、尾数移位和数据合成”等多个连续步骤,这倒是电路需要往往需要利用多个周期才能得到最终的乘累加运算结果,这极大降低了电路执行浮点型数据的乘累加运算的效率。
技术实现思路
1、为了解决现有cim电路处理浮点型数据的乘累加运算任务的效率较低、速度较慢的问题,本发明提供一种基于sram的浮点型乘累加快速运算电路以及采用该电路的cim芯片。
2、本发明提供的技术方案为:
3、一种基于sram的浮点型乘累加快速运算电路,其基于sram阵列及其外围电路设计,并用于实现多组多bit浮点型的操作数与多bit浮点型的权重之间的乘累加运算。在本发明的方案中,浮点型乘累加快速运算电路中的sram阵列被按列划分为三个部分,分别为指数和阵列、权重指数阵列和权重尾数阵列。
4、在划分后的sram阵列的基础上,浮点型乘累加快速运算电路还包括:指数输入模块、尾数输入模块、加法器阵列、最大值寻找模块、减法计数器、移位寄存器、加法器树和标准化模块。
5、其中,权重指数阵列的各行分别用于按位预存权重中的指数部分。指数输入模块用于向加法器阵列中的各行输入操作数的指数部分。加法器阵列用于读取权重指数阵列的存储值并计算出权重和操作数的指数和。权重尾数阵列中的各行用于按位预存权重中的尾数部分。尾数输入模块用于向权重尾数阵列中的各行输入操作数的尾数部分。权重尾数阵列中的各行用于按位预存权重中的尾数部分,并利用自身具备的逻辑运算功能对权重和操作数的尾数部分执行乘法运算,得到尾数积。
6、最大值寻找模块用于先获取加法器阵列输出的各行的指数和的计算结果,并在逐位向指数和阵列回写指数和的同时确定最大指数。然后结合减法计数器和指数和阵列确定各行中计算出的指数和相对最大指数的位数差,并由移位寄存器根据位数差对相应行中计算出的尾数积进行移位。
7、加法器树用于将完成移位后的各行的尾数积相加,得到尾数总和;最后由标准化模块根据最大指数和尾数总和生成对应的乘累加运算结果。
8、本发明提供的基于sram的浮点型乘累加快速运算电路在实际应用中采用流水线策略完成浮点数的乘累加运算任务,过程如下:
9、s1:初始阶段:
10、在第一个周期内,利用指数输入模块、权重指数阵列和加法器阵列完成第一轮运算任务中的各个操作数和权重的指数部分的输入和相加,得到指数和。
11、最大值寻找模块按照从低到高的顺序依位读取加法器阵列中各行的指数和计算结果。
12、s2:运算阶段:
13、在第二个周期内,利用尾数输入模块和权重尾数阵列完成第一轮运算任务中的各个操作数和权重的尾数部分的输入和相乘,得到各个尾数积。
14、由最大值寻找模块将读取的指数和的计算结果回写到指数和阵列中,并在回写的同时确定最大指数。然后利用减法计数器对最大指数进行逐次递减后与指数和阵列中各个指数和的进行比较,并在每一次比较后利用移位寄存器对小于最大指数的指数和对应的尾数积进行移位。
15、接着由加法器树对移位后的各行的尾数积进行相加,得到尾数总和。最后由标准化模块根据已经确定的最大指数和尾数总和,生成对应的乘累加运算结果。
16、与此同时,在第二周期中,还利用指数运算阵列完成第二轮运算任务中的各个操作数和权重的指数部分的输入和相加,并由最大值寻找模块按照从低到高的顺序依位读取加法器阵列中各行的指数和的计算结果。
17、s3:循环阶段:
18、按照的相同逻辑,在后续的每个周期中,计算并输出前一轮的乘累加运算结果,并完成后移轮运算中指数部分的相加和缓存;
19、以此类推,在第n个周期能够实现第n-1轮乘累加运算的处理和输出。
20、作为本发明进一步的改进,最大值寻找模块中包括与sram阵列的行数对应的多个乒乓单元和多个比较单元;每个乒乓单元中包括寄存器一和寄存器二。
21、在前一个周期,乒乓单元用于将加法器阵列计算出的指数和按照从低到高的顺序依次读取并存入到寄存器一中;并将寄存器一中各位数据逐位并写入到寄存器二,寄存器二写入的数据恢复为从高到低排列的指数和。
22、在后一个周期,乒乓单元将寄存器二中的数据回写到指数和阵列中的对应行,并在回写过程中同步确定最大指数。以此同时,乒乓单元还执行下一轮计算中的指数和读取,并更新寄存器一。
23、比较单元用于实现对回写后的各行的指数和运算结果进行比较,确定最大指数。
24、作为本发明进一步的改进,最大值寻找模块在回写各行的指数和的过程中确定最大指数的方法为:
25、(1)加法器阵列计算出的指数和被按照从高到低的顺序逐位从寄存器二写入到指数和阵列。
26、(2)在写入指数和的每一位时,判断当前的值并做出如下决策:
27、a、如果不同行中的指数和的当前位上的值既包括1也包括0,则保留当前位为1的数,去掉当前位为0的数。
28、b、如果不同行中的指数和的当前位上的值均为1或均为0,则保留所有行上的数。
29、(3)如果仅剩下一个数或已经完成指数和的最低位的写入,则最终保留下的数即为最大指数。
30、作为本发明进一步的改进,指数和阵列、减法计数器和移位寄存器根据最大值寻找模块输出的最大指数实现对尾数积进行移位的操作策略如下:
31、减法计数器在每个周期将最大指数进行减1操作后发送到指数和阵列。
32、指数和阵列在每一个周期将当前时刻的最大指数与自身存储的指数和进行匹配,如果匹配成功则生成一个对应的配对标志位并发送到移位寄存器。
33、移位寄存器用于在每个周期对每一行的指数和对应的尾数积进行移位,并在各周期接收到任意一个配对标志位时,停止对应行的尾数积的移位操作。
34、当达到预设的最大周期数后,完成所有尾数积的移位工作。
35、作为本发明进一步的改进,权重尾数阵列由多个8t-sram单元构成;每个8t-sram单元中包括2个pmos管p1~p2和6个nmos管n1~n6。电路连接关系为:
36、p1、p2、n1、n2反相交叉耦合形成一组存储节点q和qb。n3作为q与位线bl之间的传输管,n4作为qb与位线blb之间的传输管,n3和n4栅极接字线w。n6的栅极接qb,n6的源极接地,n6的漏极与n5的漏极相连;n5的栅极接计算字线rwl;n5的源极接计算位线cl。
37、作为本发明进一步的改进,8t-sram单元中的p1~p2、n1~n4部分构成6t存储单元,8t-sram单元中的6t存储单元用于在存储模式下实现数据存储功能,以及用于在计算模块下预存权重中的尾数部分的其中一位。
38、存储单元配合n5和n6实现乘法运算的操作逻辑如下:
39、(1)权重中的尾数部分预存在存储单元中:
40、当q为高电平,qb为低电平,表示权重的尾数部分的对应位为“1”;当q为低电平,qb为高电平,表示权重的尾数部分的对应位为“0”。
41、(2)将计算位线cl预充到高电平,然后通过计算字线rwl输入操作数的尾数部分:
42、当rwl为高电平,表示输入的操作数尾数部分的对应位为“0”,当rwl为低电平,表示输入的操作数尾数部分的对应位为“1”。
43、(3)根据计算位线cl的电平变化输出最终的尾数积的计算结果:
44、当cl下降为低电平,表示乘积结果为“1”;当cl保持高电平状态,表示乘积结果为“0”。
45、作为本发明进一步的改进,指数和阵列由多个10t-sram单元构成;每个10t-sram单元中包括2个pmos管pm0~pm1和8个nmos管nm0~nm7,电路连接关系为:
46、pm0、pm1的源极接vdd;pm0的漏极与pm1、nm3、nm4的栅极以及nm0、nm2的漏极相连,并作为存储节点q;pm1的漏极与pm0、nm2、nm5的栅极以及nm1、nm3的漏极相连,并作为反相存储节点qb;nm2和nm3的源极接地;nm0的源极接位线bl;nm1的源极接位线blb;nm0和nm1的栅极接字线wl。
47、nm4的漏极nm5的源极连接在匹配位线tl上;nm4的源极和nm6的漏极相连;nm5的漏极和nm7的源极相连;nm6的源极和nm7的漏极连接在匹配位线ml上;nm6的栅极接局部字线wll;nm7的栅极接局部字线wlr。
48、作为本发明进一步的改进,10t-sram单元中的pm0~pm1、nm0~nm3部分构成6t存储单元,10t-sram单元中的6t存储单元用于在存储模式下实现数据存储功能,以及在计算模式下回存每一行中指数和的其中一位。其余4t部分构成匹配单元;匹配单元以6t存储单元中回存的指数和的其中一位作为目标数;以逐次递减的最大指数的对应位作为查询数,进而输出目标数与查询数是否匹配的查询结果。
49、匹配单元实现数据匹配的操作逻辑如下:
50、(1)将权重与操作数的指数和的各位分别回写到各个10t-sram单元中的6t存储单元部分,构成目标数:
51、当q为高电平,qb为低电平,表示目标数为“1”;当q为低电平,qb为高电平,表示目标数为“0”。
52、(2)将匹配位线tl和ml预充到高电平;然后通过局部字线wll和wlr向匹配单元输入编码后的查询数:
53、当wll为高电平,wlr为低电平,表示查询数为“1”;当wll为低电平,wlr为高电平,表示查询数为“0”。
54、(3)将匹配位线tl接地,并根据匹配位线ml的电平变化确定匹配结果:
55、当查询数和目标数相同,则ml和tl之间形成放电路径,ml降为低电平,表征二者匹配成功。
56、当查询数和目标数不同,则ml和tl之间无法形成放电路径,ml降保持为高电平,表征二者匹配失败。
57、本发明还包括一种cim芯片,其集成有如前述的基于sram的浮点型乘累加快速运算电路。cim芯片具有存储模式和计算模式;在存储模式下,cim芯片作为存储器使用。在计算模式下,cim芯片用于实现多组多bit浮点型的操作数与多bit浮点型的权重之间的乘累加运算。
58、本发明提供的技术方案,具有如下有益效果:
59、本发明的提供了一种浮点型乘累加快速运算电路的新的电路架构和运行逻辑,该电路方案中应用了一种全新的高带宽异步指数标准化和指令并行排序的尾数对齐浮点计算流程,可以在指数相加的同时并行查找出最大值,并将尾数对齐中的减法移位按时间周期查找的方式替换,进而在更低的时间、面积和功耗开销下实现浮点型数据的mac存内计算。
60、本发明通过不同模块间的协同配合,对浮点数乘累加运算过程中的不同环节进行合理分配和并行处理,进而实现在至多两个周期内完成一项乘累运算任务。本发明的方案还合理分配了运算过程中不同环节的处理时序,进而通过“流水线”的方式缩短大量运算任务的整体用时,将单个运算任务的平均耗时限制在一个周期左右。
1.一种基于sram的浮点型乘累加快速运算电路,其特征在于,其基于sram阵列及其外围电路设计,并用于实现多组多bit浮点型的操作数与多bit浮点型的权重之间的乘累加运算;所述浮点型乘累加快速运算电路中的sram阵列被按列划分为三个部分,分别为指数和阵列、权重指数阵列和权重尾数阵列;
2.如权利要求1所述的基于sram的浮点型乘累加快速运算电路,其特征在于:其采用流水线策略完成浮点数的乘累加运算任务,过程如下:
3.如权利要求1所述的基于sram的浮点型乘累加快速运算电路,其特征在于:所述最大值寻找模块中包括与sram阵列的行数对应的多个乒乓单元和多个比较单元;每个乒乓单元中包括寄存器一和寄存器二;
4.如权利要求3所述的基于sram的浮点型乘累加快速运算电路,其特征在于:所述最大值寻找模块在回写各行的指数和的过程中确定最大指数的方法为:
5.如权利要求1所述的基于sram的浮点型乘累加快速运算电路,其特征在于:所述指数和阵列、减法计数器和移位寄存器根据所述最大值寻找模块输出的最大指数实现对尾数积进行移位的操作策略如下:
6.如权利要求1所述的基于sram的浮点型乘累加快速运算电路,其特征在于:所述权重尾数阵列由多个8t-sram单元构成;每个8t-sram单元中包括2个pmos管p1~p2和6个nmos管n1~n6;电路连接关系为:
7.如权利要求6所述的基于sram的浮点型乘累加快速运算电路,其特征在于:所述8t-sram单元中的p1~p2、n1~n4部分构成6t存储单元,8t-sram单元中的6t存储单元用于在存储模式下实现数据存储功能,以及用于在计算模块下预存权重中的尾数部分的其中一位;
8.如权利要求1所述的基于sram的浮点型乘累加快速运算电路,其特征在于:所述指数和阵列由多个10t-sram单元构成;每个10t-sram单元中包括2个pmos管pm0~pm1和8个nmos管nm0~nm7,电路连接关系为:
9.如权利要求8所述的基于sram的浮点型乘累加快速运算电路,其特征在于:所述10t-sram单元中的pm0~pm1、nm0~nm3部分构成6t存储单元;10t-sram单元中的6t存储单元用于在存储模式下实现数据存储功能,以及在计算模式下回存每一行中指数和的其中一位;其余4t部分构成匹配单元;所述匹配单元以6t存储单元中回存的指数和的其中一位作为目标数;以逐次递减的最大指数的对应位作为查询数,进而输出目标数与查询数是否匹配的查询结果;
10.一种cim芯片,其特征在于:其集成有如权利要求1-9中任意一项所述的基于sram的浮点型乘累加快速运算电路;所述cim芯片具有存储模式和计算模式;在存储模式下,cim芯片作为存储器使用;在计算模式下,cim芯片用于实现多组多bit浮点型的操作数与多bit浮点型的权重之间的乘累加运算。
