一种存算一体电路、芯片系统及电子设备技术方案

技术编号:37317931 阅读:8 留言:0更新日期:2023-04-21 22:59
本申请公开了一种存算一体电路,用于以较小面积与功耗实现存算一体的复数乘累加计算。该算一体电路包括至少一个存算子阵列和至少一个乘累加MAC处理电路,其中,每个存算子阵列中包括按照n行m列排布的n*m个存算单元,其中,每个存算单元连接一组行信号线和一组列信号线,一组行信号线连接位于同一行上的m个存算单元,一组列信号线连接位于同一列上的n个存算单元,以及对应的目标MAC处理电路。每个存算单元用于计算第一复数的实部和虚部与第二复数的实部和虚部,以及第二复数的虚部的反相数据的乘积,以得到第一乘积结果和第二乘积结果,目标MAC处理电路用于对多个第一乘积结果和多个第二乘积结果做累加运算。和多个第二乘积结果做累加运算。和多个第二乘积结果做累加运算。

【技术实现步骤摘要】
一种存算一体电路、芯片系统及电子设备


[0001]本申请涉及电路
,具体涉及一种存算一体电路、芯片系统及电子设备。

技术介绍

[0002]近年来,大数据与人工智能技术在各领域中迅速发展,数据的通信和计算需求急剧增长,这对集成电路的能效提出了更高的挑战。应运而生的新型“存算一体(computing in memory,CIM)”计算架构受到广泛关注。其通过将计算电路集成设计在存储电路中,解决计算任务中数据搬运等能耗问题。随着人工智能(artificial intelligence,AI)算法与信号处理算法的发展,存算一体架构需要解决复数运算的基本操作。
[0003]目前解决复数运算的存算一体架构通常是基于静态随机存取存储器(static random access memory,SRAM)实现的,复数运算中复数形式的输入信号输入SRAM单元,SRAM单元中存储另一复数的两份正值形式的实部,以及一份正值形式的虚部和一份负值形式的虚部,复数形式的输入信号与SRAM单元中存储的两份复数的实部和虚部分别进行乘积,再做累加,得到乘累加结果。因为要存储两份实部和虚部,所以需要两倍的存储阵列资源,而且每份内存阵列都需要一份外围的资源(如:外围的驱动电路以及后端布线等资源),这导致目前的存算一体电路的体积大,功耗大,计算效率低下。

技术实现思路

[0004]本申请提供一种存算一体电路,用于以较小面积与功耗实现存算一体的复数乘累加计算。本申请实施例还提供了相应的芯片系统及电子设备。
[0005]本申请第一方面提供一种存算一体电路,该存算一体电路包括存算阵列和数据处理电路,存算阵列包括至少一个存算子阵列,其中,每个存算子阵列中包括按照n行m列排布的n*m个存算单元,数据处理电路包括至少一个乘累加(multiplication

and

accumulation control,MAC)处理电路,至少一个存算子阵列与至少一个MAC处理电路一一对应,N和M为大于1的整数。其中,每个存算单元连接一组行信号线和一组列信号线,一组行信号线连接位于同一行上的m个存算单元,一组列信号线连接位于同一列上的n个存算单元,以及n个存算单元所在的存算子阵列对应的目标MAC处理电路。
[0006]每个存算单元用于从所连接的一组行信号线分别接收第一复数的第一实部比特数据和第一虚部比特数据,并与第二复数的第二实部比特数据,以及目标比特数据的相关数据进行运算,以得到第一乘积结果和第二乘积结果,第二实部比特数据和目标比特数据存储于存算单元中,目标比特数据包括第二虚部比特数据或第二虚部比特数据的反相数据,目标比特数据的相关数据包括第二虚部比特数据和第二虚部比特数据的反相数据。
[0007]目标MAC处理电路用于从所连接的m组列信号线接收多个第一乘积结果和多个第二乘积结果,并对多个第一乘积结果进行累加以得到第一输出数据,以及对多个第二乘积结果进行累加以得到第二输出数据。
[0008]本申请中,存算一体电路指的是将计算电路集成在存储电路中,实现存算一体化,
该存算一体电路可以适用于复数运算,也可以适用于实数运算。存算单元用于实现两个复数相乘的计算过程,MAC处理电路用于实现对多个存算单元的计算结果的累加过程。
[0009]本申请中,存算一体电路可以是任何形式的比特阵列结构的存储器,如寄存器、随机存取存储器(random access memory,RAM)等。随机存取存储器包括:静态随机存取存储器(static random access memory,SRAM)、嵌入式动态随机存取存储器(embedded dynamic random access memory,EDRAM)等。
[0010]本申请中,第一复数也可以称为第一操作数,第二复数也可以称为第二操作数。第一复数可以用x
r
+x
i
i来表示,其中,x
r
为第一复数的实部,x
i
为第一复数的虚部。第二复数可以用w
r
+w
i
i来表示,其中,w
r
为第二复数的实部,w
i
为第二复数的虚部。第一实部比特数据可以是第一复数的实部做二进制转换后的补码形式的不同有效位的比特数据,如:x
r,1

x
r,b
。第一虚部比特数据可以是第一复数的虚部做二进制转换后的不同有效位的比特数据,如:x
i,1

x
i,b
。第二实部比特数据可以是第二复数的实部做二进制转换后的不同有效位的比特数据,如:w
r,1

w
r,m
。第二虚部比特数据可以是第二复数的虚部做二进制转换后的不同有效位的比特数据,如:w
i,1

w
i,m
。第二虚部比特数据的反相数据指的是对第二虚部比特数据取反得到的数据,如其中,下标r表示实部,下标i表示虚部,下标b表示第一复数的位宽,下标m表示表示第二复数的位宽。
[0011]需要说明的是,本申请中的,第一实部比特数据、第一虚部比特数据、第二实部比特数据、第二虚部比特数据,以及第二虚部比特数据的反相数据都可以是模拟信号,通过电平来表示。第一复数的实部指的是第一复数的实部的数值,第一复数的虚部指的是第一复数的虚部的数值,第二复数的实部指的是第二复数的实部的数值,第二复数的虚部指的是第二复数的虚部的数值。
[0012]本申请中,第一乘积结果指的是乘积后包含虚数的乘积结果,如:x
r,p
·
w
i,q
和x
i,p
·
w
r,q
,第二乘积结果指的是乘积后不包括虚数的乘积结果,如:x
r,p
·
w
r,q
和p为1

b中的任一数值,q为1

m中的任一数值。
[0013]本申请中,第一输出数据可以是多个(x
r,p
·
w
i,q
+x
i,p
·
w
r,q
)的累加结果,第二输出数据可以是多个的累加结果。
[0014]由上述第一方面可知,在存算单元中存储第二虚部比特数据或第二虚部比特数据的反相数据,第二虚部比特数据和第二虚部比特数据的反相数据之间可以通过取反得到对方,这样,在做复数乘法运算时,可以直接使用第二虚部比特数据和第二虚部比特数据的反相数据做乘法运算,只需要存储一份第二复数的实部和虚部即可完成两个复数的乘累加运算,不需要存储两份正值的第二复数的实部,一份正值的第二复数的虚部,一份负值的第二复数虚部,这样有效的缩小了存算一体电路的体积,减小了功耗,不需要计算两份数据,也提高了计算效率。
[0015]在第一方面的一种可能的实现方式中,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种存算一体电路,其特征在于,所述存算一体电路包括存算阵列和数据处理电路,所述存算阵列包括至少一个存算子阵列,其中,每个存算子阵列中包括按照n行m列排布的n*m个存算单元,所述数据处理电路包括至少一个乘累加MAC处理电路,所述至少一个存算子阵列与所述至少一个MAC处理电路一一对应,所述n和m为大于1的整数;每个存算单元连接一组行信号线和一组列信号线,所述一组行信号线连接位于同一行上的m个存算单元,所述一组列信号线连接位于同一列上的n个存算单元,以及所述n个存算单元所在的存算子阵列对应的目标MAC处理电路;所述每个存算单元用于从所连接的一组行信号线分别接收第一复数的第一实部比特数据和第一虚部比特数据,并与第二复数的第二实部比特数据,以及目标比特数据的相关数据进行运算,以得到第一乘积结果和第二乘积结果,所述第二实部比特数据和所述目标比特数据存储于所述存算单元中,所述目标比特数据包括第二虚部比特数据或所述第二虚部比特数据的反相数据,所述目标比特数据的相关数据包括所述第二虚部比特数据和所述第二虚部比特数据的反相数据;所述目标MAC处理电路用于从所连接的m组列信号线接收多个所述第一乘积结果和多个所述第二乘积结果,并对所述多个所述第一乘积结果进行累加以得到第一输出数据,以及对所述多个所述第二乘积结果进行累加以得到第二输出数据。2.根据权利要求1所述的存算一体电路,其特征在于,所述每个存算单元包括第一计算单元、第二计算单元、第三计算单元、第四计算单元,第一存储单元和第二存储单元;所述第一存储单元连接所述第一计算单元和所述第三计算单元,所述第二存储单元连接所述第二计算单元和所述第四计算单元;所述一组行信号线中的至少一条第一行信号线连接所述第一计算单元和所述第四计算单元,至少一条第二行信号线连接所述第二计算单元和所述第三计算单元,所述一组列信号线中的第一列信号线连接所述第一计算单元和所述第二计算单元,第二列信号线连接所述第三计算单元和所述第四计算单元;所述第一存储单元用于存储所述目标比特数据,所述第二存储单元用于存储所述第二实部比特数据。3.根据权利要求2所述的存算一体电路,其特征在于,所述第一存储单元用于向所述第一计算单元输出所述第二虚部比特数据,向所述第三计算单元输出所述第二虚部比特数据的反相数据;所述第二存储单元用于向所述第二计算单元和所述第四计算单元输出所述第二实部比特数据;所述第一计算单元用于计算所述第一实部比特数据与所述第二虚部比特数据的乘积;所述第二计算单元用于计算所述第一虚部比特数据与所述第二实部比特数据的乘积;所述第三计算单元用于计算所述第一虚部比特数据与所述第二虚部比特数据的反相数据的乘积;所述第四计算单元用于计算所述第一实部比特数据与所述第二实部比特数据的乘积;所述第一乘积结果包括所述第一实部比特数据与所述第二虚部比特数据的乘积,以及所述第一虚部比特数据与所述第二实部比特数据的乘积,所述第二乘积结果包括所述第一实部比特数据与所述第二实部比特数据的乘积,以及所述第一虚部比特数据与所述第二虚
部比特数据的反相数据的乘积。4.根据权利要求2或3所述的存算一体电路,其特征在于,所述目标MAC处理电路包括虚部处理电路和实部处理电路,所述虚部处理电路连接m条第一列信号线,所述实部处理电路连接m条第二列信号线;所述虚部处理电路用于通过每条所述第一列信号线接收来自于每列的存算单元的所述第一乘积结果,并将来自于同一列的多个第一乘积结果进行累加,以得到第一列累加结果,再对不同列的第一列累加结果做加权运算,然后再对加权运算后的不同列的第一列累加结果进行累加,以得到所述第一输出数据;所述实部处理电路用于计算通过每条所述第二列信号线接收自于每列的存算单元的所述第二乘积结果,并将来自于同一列的多个第二乘积结果进行累加,以得到第二列累加结果,再对不同列的第二列累加结果做加权运算,然后再对加权运算后的不同列的第二列累加结果进行累加,以得到所述第二输出数据。5.根据权利要求4所述的存算一体电路,其特征在于,所述数据处理电路还包括补偿电路,所述补偿电路的一端通过目标列信号线与N条第二行信号线连接,另一端与所述至少一个MAC处理电路中的每个MAC处理电路中的所述实部处理电路连接;所述补偿电路用于从所述N条第二行信号线接收多个第一虚部比特数据,并对所述多个第一虚部比特数据进行累加,将所述多个第一虚部比特数据的累加结果传输给所述实部处理电路;所述实部处理电路用于将所述多个第一虚部比特数据的累加结果与所述第二输出数据做求和运算,以得到第三输出数据。6.根据权利要求4或5所述的存算一体电路,其特征在于,位于同一行的m个存算单元用于存储所述第二复数的实部和虚部分别进行二进制转换后的不同有效位的比特数据;位于同一列的n个存算单元用于存储不同第二复数的同一有效位的比特数据。7.根据权利要求4或5所述的存算一体电路,其特征在于,所述第一复数的第一实部比特数据包括所述第一复数的实部进行二进制转换后的不同有效位的比特数据;所述第一复数的第一虚部比特数据包括所述第一复数的虚部进行二进制转换后的不同有效位的比特数据。8.根据权利要求2

7任...

【专利技术属性】
技术研发人员:吴志航倪磊滨
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1