本发明涉及集成电路,特别涉及一种基于sram的可配置逻辑运算的存算一体电路。
背景技术:
1、随着计算机技术的快速发展,传统的冯·诺伊曼架构在计算时需要频繁地在存储器和计算模块之间传输数据,导致大量性能和能耗被用于数据传输和读写操作。然而,处理器性能的增长速度,遵循摩尔定律呈指数级增长,远远超过了存储器的发展速度。这种处理器与存储器之间的速度不匹配问题,逐渐成为满足高速计算需求的瓶颈,被称为“内存墙”和“功耗墙”问题。存算一体架构作为解决这一问题的新兴技术,通过将存储和计算整合在一起,减少了处理器与存储器之间的数据传输频率,从而提高了能效。
2、在存算技术领域,模拟存算通常能够更快地处理数据并且更加节能,但它们容易受到噪声的干扰。与此相反,数字存算则提供了更高精度和稳定性的数据。2021年,台积电发表在ieee international solid-state circuits conference(isscc)中的《an89tops/w and 16.3tops/mm2all-digital sram-based full-precision compute-inmemory macro in 22nm for machine-learning edge applications》一文中提出一种基于sram的全数字存算一体宏电路,阵列大小为64kb,通过宏内的存算阵列和加法树,可以在芯片内完成卷积操作。然而,这种数字存算解决方案仅支持单一的逻辑运算类型,使其应用受限,并且由于其庞大的运算电路,导致能效比较低,速度较慢。
技术实现思路
1、为克服上述现有技术的不足,需要一种高能效、多应用场景的存算一体宏电路。鉴于此,本发明的目的在于提出一种运算逻辑可配置的高能效sram存算一体电路,通过一种4t计算单元,通过控制信号改变输入数据以实现多种逻辑运算;此外本发明还提出了一种混合华莱士加法树结构,相较于28t的加法树,其速度更快,能效比更高。
2、本发明的技术方案如下:
3、一种基于sram的可配置逻辑运算的存算一体电路,所述存算一体电路存在不同运算模式,包括异或运算模式、或运算模式、与运算模式;所述存算一体电路包括输入控制模块和存内计算宏,所述输入控制模块根据当前的运算模式对外部串行输入的激活因子进行预处理,当前的运算模式根据外部输入至输入控制模块的两位控制信号进行切换;
4、所述存内计算宏被分为k个组,每个组包括一个存储计算阵列、一个混合华莱士结构的加法树和一个累加和模块;存内计算宏的每个组中:
5、所述存储计算阵列由m行n列的存算单元构成,每个存算单元用于预先存储权重数据,也用于对所存储的权重数据和预处理后的激活因子进行位运算,每行存算单元得到的n个位运算结果组成一个n位的布尔运算结果;根据当前运算模式,所述位运算为按位异或、按位或、或者按位相与;k、m和n皆为大于0的自然数;
6、所述混合华莱士结构的加法树和累加和模块用于完成布尔计算结果的相加操作;混合华莱士结构的加法树每个时钟周期将当前存储计算阵列输出的m个n位的布尔计算结果相加,得到部分和,并送入累加和模块;累加和模块对当前时钟周期及以前得到的部分和进行移位累加,直到激活因子全部输入所述存算一体电路后,得到最终运算结果,即权重数据和输入的激活因子进行异或运算、或运算、或者与运算的结果;存内计算宏中k个组运算得到k个最终运算结果。
7、优选的,所述输入控制模块设有一个输入端口和两个输出端口;所述输入控制模块根据当前的运算模式对激活因子进行预处理,当前的运算模式根据外部输入至输入控制模块的两位控制信号进行切换,具体为:
8、激活因子通过位串行的方式输入到输入控制模块的输入端口,预处理后从输入控制模块的输出端口输出;当控制信号为11时,当前的运算模式为异或运算模式,输入控制模块的第一输出端口和第二输出端口输出的数据皆与预处理前的激活因子相同;当控制信号为10时,当前的运算模式为或运算模式,第一输出端口输出的数据与预处理前的激活因子相同,第二输出端口始终输出高电平;当控制信号为01时,当前的运算模式为与运算模式,第二输出端口输出的数据与预处理前的激活因子相同,第一输出端口输出低电平;当控制信号为00时,输入控制模块不进行运算,输入控制模块的第一输出端口保持低电平,第二输出端口保持高电平。
9、优选的,预处理后的激活因子通过位串行的方式从高位至低位依次输入到所述存储计算阵列中,每个时钟周期处理激活因子的一个比特。
10、优选的,所述混合华莱士结构的加法树由若干加法器组成,加法树的前三级使用二叉树的方式相连,其它几级使用华莱士树架构相连。
11、更优选的,所述加法树中的每个加法器前还包括一个符号拓展电路。
12、优选的,所述存算一体电路的时钟频率为500mhz。
13、优选的,所述输入控制模块属于外围电路部分,所述外围电路部分还包括用于地址译码的译码器模块、用于sram数据输入或读出的写入/读出电路模块、用于生成时钟周期的时序控制电路。
14、与现有技术相比,本发明的有益效果如下:
15、(1)本发明提出了一种可进行多种计算的、将存储与计算结合的新型架构方式,以降低计算时数据搬运的功耗,并提高运行速度。通过输入数据模块与运算单元模块结合,在运算单元前预先对输入数据进行了处理,便可以对存算架构进行多种逻辑的配置,其中输入数据模块与信号线的驱动电路结合在一起,更好地利用了芯片的面积。因此本架构除了可以完成乘加操作,还可完成多种逻辑运算,以应用于更多场景中。
16、(2)传统的加法树一般以二叉树的形式搭建,这是一种链状结构,随着比特数的增加,链状结构的行波进位加法器的传播延时会随着位数增大而线性增大,本发明的加法树采用了二叉树与华莱士树混合的架构,华莱士树为了优化延时,改变了全加器的连接方式,将其作为3-2压缩器使用,取消了串行进位的情况,减少时延。但是在存算架构中输入加法树的数据位数较低,若直接使用华莱士树对数据进行压缩,其压缩率与面积效益会较低,因此,本文提出了一种混合华莱士树的加法器结构。也就是在华莱士树结构中,前几级使用传统的以二叉树拓扑连接的行波进位加法器,当位数增加时再使用华莱士树对加法运算进行加速,这样就结合了两种加法器的优点。
17、(3)本发明改变了原有技术中设计的计算单元和加法树,提升了电路的吞吐率和能效比,同时还能完成多种运算,比如卷积运算和汉明距离的计算,提高了存算架构在不同应用场景中的灵活性和适用性。
1.一种基于sram的可配置逻辑运算的存算一体电路,其特征在于,所述存算一体电路存在不同运算模式,包括异或运算模式、或运算模式、与运算模式;所述存算一体电路包括输入控制模块和存内计算宏,所述输入控制模块根据当前的运算模式对外部串行输入的激活因子进行预处理,当前的运算模式根据外部输入至输入控制模块的两位控制信号进行切换;
2.根据权利要求1所述的基于sram的可配置逻辑运算的存算一体电路,其特征在于,
3.根据权利要求1所述的基于sram的可配置逻辑运算的存算一体电路,其特征在于,所述输入控制模块由m个输入控制基本单元组成,存内计算宏的所有组中第i行存算单元共同连接第i个输入控制基本单元的输出,所述输入控制基本单元包括一个与门、一个与非门、一个异或门;其中,与门的输入为控制信号的高位和激活因子,输出至输入控制模块的第一输出端口,与非门的输入为控制信号的低位和激活因子,输出与异或门的一个输入端相连,异或门的另一输入端的输入为控制信号的高位,异或门的输出端作为输入控制模块的第二输出端口。
4.根据权利要求1所述的基于sram的可配置逻辑运算的存算一体电路,其特征在于,预处理后的激活因子通过位串行的方式从高位至低位依次输入到所述存储计算阵列中,每个时钟周期处理激活因子的一个比特。
5.根据权利要求2所述的基于sram的可配置逻辑运算的存算一体电路,其特征在于,所述存算单元包括一个sram存储单元和一个运算单元;所述sram存储单元用于存储一位权重数据,并向运算单元输出所存储的权重数据及其反相电平;所述运算单元包括pmos管m1、pmos管m2、nmos管m3、nmos管m4、控制线、互补控制线、输入线、互补输入线和输出线;其中,m1和m3栅端相连并接收sram存储单元所存储的权重数据,m2和m4栅端相连并接收sram存储单元所存储的权重数据的反相电平;m1源端、m4漏端与互补输入线相连,m2源端、m3漏端与输入线相连,其余端口与输出线相连;输入线和互补输入线分别连接输入控制模块的第一输出端口和第二输出端口,输出线输出存算单元的运算结果,即预处理后的激活因子和权重数据进行位运算的结果。
6.根据权利要求1所述的基于sram的可配置逻辑运算的存算一体电路,其特征在于,所述混合华莱士结构的加法树由若干加法器组成,加法树的前三级使用二叉树的方式相连,其它几级使用华莱士树架构相连。
7.根据权利要求6所述的基于sram的可配置逻辑运算的存算一体电路,其特征在于,
8.根据权利要求1所述的基于sram的可配置逻辑运算的存算一体电路,其特征在于,所述存算一体电路的时钟频率为500mhz。
9.根据权利要求1所述的基于sram的可配置逻辑运算的存算一体电路,其特征在于,所述输入控制模块属于外围电路部分,所述外围电路部分还包括用于地址译码的译码器模块、用于sram数据输入或读出的写入/读出电路模块、用于生成时钟周期的时序控制电路。
