CN113419705A - 存内乘加计算电路、芯片、计算装置 - Google Patents

存内乘加计算电路、芯片、计算装置 Download PDF

Info

Publication number
CN113419705A
CN113419705A CN202110759749.4A CN202110759749A CN113419705A CN 113419705 A CN113419705 A CN 113419705A CN 202110759749 A CN202110759749 A CN 202110759749A CN 113419705 A CN113419705 A CN 113419705A
Authority
CN
China
Prior art keywords
data
circuit
multiply
bit
addition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110759749.4A
Other languages
English (en)
Inventor
司鑫
常亮
陈亮
沈朝晖
吴强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Houmo Intelligent Technology Co ltd
Original Assignee
Nanjing Houmo Intelligent Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing Houmo Intelligent Technology Co ltd filed Critical Nanjing Houmo Intelligent Technology Co ltd
Priority to CN202110759749.4A priority Critical patent/CN113419705A/zh
Publication of CN113419705A publication Critical patent/CN113419705A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Memory System (AREA)

Abstract

本公开实施例公开了一种存内乘加计算电路、芯片、计算装置,其中,该电路包括:输入特征数据驱动器、预设数量个局部存储单元阵列和预设数量个计算单元、移位累加器;存储单元用于存储权重数据包括的单比特位,且权重数据包括的单比特位分别存储在不同的局部存储单元阵列中;计算单元用于将输入特征数据驱动器的特征数据与对应的权重数据包括的单比特位相乘,得到乘积;将所得到的至少一个乘积相加,得到中间乘加结果;移位累加器用于将各个中间乘加结果进行移位累加,得到特征数据与权重数据的乘加结果。本公开实施例提高了电路的数据存储密度。此外,可以灵活地为不同位宽的权重数据分配存储单元,实现了数据乘加运算的可重构。

Description

存内乘加计算电路、芯片、计算装置
技术领域
本公开涉及计算机技术领域,尤其是一种存内乘加计算电路、芯片、计算装置。
背景技术
随着大数据时代的高速推动,人工智能(Artificial Intelligent,AI)和人工智能物联网(Artificial Intelligence&Internet of Things,AIoT)应用得到了飞速的发展。深度神经网络作为目前在AI和AIoT领域中应用于图像、语音和视频处理的最成功的算法之一,它需要对特征数据和权重数据进行大量的访问和存储,并针对这些原始数据进行大量的乘法和加法等不同运算。传统冯诺依曼架构当中由于处理器(Processor)和存储器(Memory)之间的分立性,他们之间的交互必须要经由数据带宽有限的总线完成,随着数据量或者交互量的上升,总线上的延迟和功耗将会成为整个系统上最主要的瓶颈,这也是大家熟知的存在于传统冯诺依曼架构当中的“存储墙”或者“功耗墙”的问题。
为了打破传统冯诺依曼架构当中“存储墙”或者“功耗墙”的瓶颈问题,存内计算架构被提出并受到业界和学术界的广泛关注。存内计算架构在保留传统存储器设计本身所具有的存储和读写功能之外,还可以支持并行的布尔逻辑或者乘加等运算操作,从而在很大程度减少了处理器和存储器之间的频繁的总线交互,也进一步减少了大量的原始或者中间数据的搬移量,从而提升系统的能量消耗效率。在基于存内计算架构的深度神经网络处理器中,权重数据可不通过读取就直接进行并行的乘加操作,并直接得到多组特征数据和权重数据的乘加结果。因此整个系统的算力和能效的提升将不再受限于有限的存储器读取接口。
发明内容
本公开的实施例提供了一种存内乘加计算电路,该电路包括:输入特征数据驱动器、一一对应的预设数量个局部存储单元阵列和预设数量个计算单元、移位累加器;局部存储单元阵列中的存储单元用于存储权重数据包括的单比特位,且对于一个权重数据,该权重数据包括的单比特位分别存储在不同的局部存储单元阵列中;计算单元包括至少一个乘法器和加法树,对于至少一个乘法器中的乘法器,该乘法器用于将输入特征数据驱动器输入的特征数据与对应的权重数据包括的单比特位相乘,得到乘积;加法树用于将所得到的至少一个乘积相加,得到中间乘加结果;移位累加器用于将得到的各个中间乘加结果进行移位累加,得到一一对应的至少一个特征数据与至少一个权重数据的乘加结果。
在一些实施例中,该电路还包括乘加计算控制单元,用于将该电路切换到乘加计算模式,以及生成用于进行乘加计算的时序信号。
在一些实施例中,预设数量个局部存储单元阵列分别对应于至少一个字线驱动器,至少一个字线驱动器分别对应于一条字线;乘加计算控制单元包括第一地址译码器,用于根据外部输入的地址信号,从预设数量个局部存储单元阵列分别包括的至少一个字线驱动器中选择目标字线驱动器;目标字线驱动器,用于激活对应的字线下的存储单元,并将激活的存储单元中的单比特位分别输入对应的计算单元包括的乘法器。
在一些实施例中,该电路还包括普通读写控制单元,用于将该电路切换到普通读写模式,以及生成用于进行普通读写的时序信号。
在一些实施例中,普通读写控制单元包括第二地址译码器,用于根据外部输入的写地址信号或读地址信号,从预设数量个局部存储单元阵列分别对应的至少一个字线驱动器中选择目标字线驱动器;该电路还包括数据读写接口,用于基于写地址信号,向所选择的目标字线驱动器对应的各个存储单元写入数据;或者,基于读地址信号,从所选择的目标字线驱动器对应的各个存储单元读出数据。
在一些实施例中,移位累加器包括移位单元和第一加法单元,移位单元和第一加法单元用于循环执行如下操作:将权重数据的最高比特位对应的中间乘加结果输入移位单元,将移位后的累加结果与相邻的低比特位对应的中间乘加结果输入第一加法单元,将相加后的累加结果输入移位单元,再次将移位后的累加结果与相邻的低比特位对应的中间乘加结果输入第一加法单元,直到将权重数据的最低比特位对应的中间乘加结果与移位后的累加结果输入第一加法单元,得到乘加结果。
在一些实施例中,移位累加器包括目标数量个移位单元和目标数量个第二加法单元,目标数量为权重数据包括的比特位数减一;目标数量个移位单元分别用于对输入的累加结果进行对应位数的移位操作;目标数量个第二加法单元分别用于将目标数量个移位单元分别输出的移位后的累加结果相加,得到乘加结果。
在一些实施例中,在相对应的局部存储单元阵列和计算单元中,计算单元包括的乘法器对应于局部存储单元阵列包括的一列存储单元。
根据本公开实施例的另一个方面,提供了一种芯片,该芯片包括上述存内乘加计算电路。
根据本公开实施例的另一个方面,提供了一种计算装置,该计算装置包括上述芯片。
本公开上述实施例提供的存内乘加计算电路、芯片、计算装置,通过设置一一对应的预设数量个局部存储单元阵列和预设数量个计算单元,并将权重数据包括的各个比特位分别存储在不同的局部存储单元阵列中,使每个计算单元计算输入的特征数据和权重数据包括的同一比特位上的数据的乘积,再将计算的各个乘积相加,得到每个计算单元对应的中间乘加结果,最后由移位累加器将各个中间乘加结果进行相应的移位及累加操作,得到一一对应的至少一个特征数据与至少一个权重数据的乘加结果,从而实现了将正或负的权重数据存储在同一组存储单元阵列中即可进行乘加运算,无需将正负权重数据分开存储,提高了电路的数据存储密度。此外,在存储权重数据时,可以灵活地为不同位宽的权重数据分配存储单元以及对不同位宽的中间累加结果进行不同地移位累加操作,实现了数据乘加运算的可重构。
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
通过结合附图对本公开实施例进行更详细的描述,本公开的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开实施例一起用于解释本公开,并不构成对本公开的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1是本公开一示例性实施例提供的存内乘加计算电路的结构示意图。
图2是本公开一示例性实施例提供的存内乘加计算电路的另一结构示意图。
图3是本公开一示例性实施例提供的存内乘加计算电路的一个计算单元进行乘加运算的示意图。
图4是本公开一示例性实施例提供的存内乘加计算电路的移位累加器的示例性结构示意图。
图5是本公开一示例性实施例提供的存内乘加计算电路的另一个移位累加器的示例性结构示意图。
具体实施方式
下面,将参考附图详细地描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。
应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
本领域技术人员可以理解,本公开实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序。
还应理解,在本公开实施例中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。
还应理解,对于本公开实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
另外,本公开中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本公开中字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,本公开对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
申请概述
在一个典型的卷积型深度神经网络(CNN,Convolutional Neural Networks)中,前一层CNN的MAC(Multiplication and Computation,乘加)输出结果会先经过一层Rectified Linear Unit(ReLU)层再送到下一层CNN中去做MAC运算。因此,对于CNN层来说,其输入数据都是正数,但是其权重数据有正有负。在之前的处理多比特权重数据的存内计算设计中,主要有两种方式来实现:(1)分立的正负权重处理模式(Spearated Positive-Negative Weight Placement,SPNWP)和(2)通过近存储器的电路来额外处理正负权重(In-Memory Weight processing with Near-Memory MAC operation,IMW-NMMAC)。
在方式(1)下,正权重和负权重分别被安置在不同的存储器阵列的列或者块里面,因而需要2k个SRAM单元来存储一个带符号位的k-bit权重,这会降低存储器的有效利用率,同时拖慢整体的速度。在方式(2)下,通过近存储器电路来额外处理正负权重的实现方式中,k-bit的权重W数据通过脉冲宽度调制的WL和k个SRAM单元来实现,对于符号位的处理需要额外的周边电路来处理,因而造成了周边电路额外的面积和功耗开销,同时没办法在SRAM阵列内部进行MAC运算,因为每个输入IN数据所对应的权重的正负都是未知的。
以上描述的多比特乘加计算方法具有以下缺陷:
现有存内计算结构实现多比特乘加计算需要将正负权重分别存储在两块不同的存储器阵列的列或者块里面,然后分别得到一组输入数据和正权重之间的乘加结果和一组输入数据和负权重之间的乘加结果,因而需要2k个SRAM单元来存储一个带符号位的k-bit权重数据。例如对于一个带符号位的8bit数据来说,需要16个SRAM单元来存储,即当8bit数据为正(或负)时,需要8个SRAM单元存储该数据,另外8个SRAM写入0。
随着人工智能应用的多样化,神经网络的计算精度也随着不同应用场景需要不同的处理精度,当前的存内计算设计没有办法很好地权衡计算精度和存内计算阵列利用率之间的折衷。
当多条字线被并行打开时,位线上的电压值会随着计算结果的变化而变化,如果这一电压值低于单个SRAM单元的写容限(Write Margin),原本存1的单元可能会被误写0,所以该设计仍然存在一个“读干扰写(read disturb write)”的问题。
示例性结构
图1是本公开一示例性实施例提供的存内乘加计算电路的结构示意图。该电路包含的各个组成部分可以集成到一个芯片中,也可以设置到不同的芯片或电路板中,这些芯片或电路板之间建立数据通信的链路。
如图1所示,该电路包括:输入特征数据驱动器101、一一对应的预设数量个局部存储单元阵列102和预设数量个计算单元103、移位累加器104。作为示例,预设数量为8,8个局部存储单元阵列102包括局部存储单元阵列#0~局部存储单元阵列#7。8个计算单元103包括计算单元#0~计算单元#7。存储单元阵列中的存储单元可以由各种类型的存储电路构成,例如6T SRAM等。
局部存储单元阵列中的存储单元用于存储权重数据包括的单比特位,且对于一个权重数据,该权重数据包括的单比特位分别存储在不同的局部存储单元阵列中。
作为示例,本实施例中的权重数据可以为神经网络中的卷积核包括的数据。输入特征数据驱动器101输入的特征数据可以是神经网络中的特征数据。如图2所示,卷积神经网络的某个卷积层的通道数为q,包括ch[0]~ch[q],每个通道的特征数据和权重数据以矩阵的形式表示,图中示出了各通道的特征数据(位宽为8)的第一行第一列分别为IN0[7:0]~INq[7:0],各通道的权重数据(位宽为8)的第一行第一列分别为W0,0[7:0]~W0,q[7:0]。
作为示例,如图2所示,权重数据的位宽为8比特,各个局部存储单元阵列分别用于存储权重数据的第0位、第1位、…、第7位。如图2中的局部存储单元阵列1021所示,其包括的每个存储单元存储一个比特位,且其内存储的均为多个权重数据的第0位。对于图2中的局部存储单元阵列1022,且其内存储的均为多个权重数据的第1位。其他局部存储单元阵列的存储内容与1021和1022类似,分别存储多个权重数据的第2位、第3位等等。对于图2中的局部存储单元阵列1023,且其内存储的均为多个权重数据的第7位。
通常,对于同一个权重数据包括的各个单比特位,分别存储在各个存储单元阵列内的相同位置。例如对于图2所示的权重数据W0,0[7:0],局部存储单元阵列1021的第一行第一列存储W0,0[0],局部存储单元阵列1022的第一行第一列存储W0,0[1],按此顺序,局部存储单元阵列1023的第一行第一列存储W0,0[7]。相似的,对于权重数据W0,j-1,局部存储单元阵列1011的第一行第j列存储W0,j-1[0],局部存储单元阵列1022的第一行第j列存储W0,j-1[1],按此顺序,局部存储单元阵列1023的第一行第j列存储W0,j-1[7]。
在本实施例中,计算单元包括至少一个乘法器和加法树。对于至少一个乘法器中的乘法器,该乘法器用于将输入特征数据驱动器101输入的特征数据与对应的权重数据包括的单比特位相乘,得到乘积。
如图3所示,其示出的一个计算单元1031与图2中的局部存储单元阵列1021对应,对于位宽为m的特征数据IN0[m-1:0]、IN1[m-1:0]、…、INj-1[m-1:0],利用多个乘法器10311,分别计算IN0[m-1:0]与W0,0[0]的乘积,IN1[m-1:0]与W0,1[0]的乘积,…,INj-2[m-1:0]与W0,j-2[0]的乘积,INj-1[m-1:0]与W0,j-1[0]的乘积。
可选的,在相对应的局部存储单元阵列和计算单元中,计算单元包括的乘法器对应于局部存储单元阵列包括的一列存储单元。如图2所示,局部存储单元阵列1021的第一列对应于一个乘法器,该乘法器依次计算第一列数据与输入的特征数据IN0[7:0]的乘积;第二列对应于另一个乘法器,该乘法器依次计算第二列数据与输入的特征数据IN1[7:0]的乘积。通过将乘法器与局部存储单元的列对应,可以使每个乘法器按照指令的时序依次计算每列单比特权重数据与对应的特征数据的乘积,进而依次计算多个特征数据与多个单比特权重数据的乘加结果,使乘加计算的时序简单高效。
上述加法树用于将所得到的至少一个乘积相加,得到中间乘加结果。如图3所示,加法树10312将各个乘法器计算得到的乘积相加,得到中间乘加结果S0。
如图2所示,对于计算单元1031,由于当前激活了对应的局部存储单元阵列1021的第一行,因此,当前利用计算单元1031包括的各个乘法器进行计算的公式为:
P0[0]=IN0×W0,0[0]、P1[0]=IN1×W0,1[0]、…、Pj-1[0]=INj-1×W0,j-1[0]。
利用其包括的加法树计算中间乘加结果S0的公式为:
Figure BDA0003148802960000071
类似的,可以计算得到其他单比特位分别对应的中间乘加结果S1、S2、…、S7。
在本实施例中,移位累加器104用于将得到的各个中间乘加结果进行移位累加,得到一一对应的至少一个特征数据与至少一个权重数据的乘加结果。
如图2所示的移位累加器104进行移位累加运算的公式如下:
Figure BDA0003148802960000081
由于通常权重数据和特征数据的存储方式为2补数(即补码)形式,因此,经过移位累加后的乘加结果的表达式可以为:
MAC=S7×(-128)+S6×(64)+S5×(32)+S4×(16)+S3×(8)+S2×(4)+S1×(2)+S0。
在本实施例中,移位累加器可以通过各种方式实现。
在一些可选的实现方式中,如图4所示,移位累加器104包括移位单元1041和第一加法单元1042,移位单元1041和第一加法单元1042用于循环执行如下操作:
将权重数据的最高比特位对应的中间乘加结果输入移位单元1041,将移位后的累加结果与相邻的低比特位对应的中间乘加结果输入第一加法单元1042,将相加后的累加结果输入移位单元1041,再次将移位后的累加结果与相邻的低比特位对应的中间乘加结果输入第一加法单元1042,直到将权重数据的最低比特位对应的中间乘加结果与移位后的累加结果输入第一加法单元1042,得到乘加结果。
作为示例,假设权重数据为4比特数据,最高位对应的中间乘加结果S3首先输入移位单元1041,并将S3移位后的中间乘加结果和次高位对应的中间乘加结果S2输入第一加法单元1042,得到第一次移位累加后的数据sum1。然后,将sum1再次输入移位单元1041,并将sum1移位后和中间乘加结果S1输入第一加法单元1042,得到第二次移位累加后的数据sum2。再然后,将sum2再次输入移位单元1041,并将sum2移位后和中间乘加结果S0输入第一加法单元1042,得到第三次移位累加后的数据sum3,sum3即为最终的乘加结果MAC。本实现方式通过将移位累加器设置为一个移位单元和一个加法单元的组合,可以循环地对各个中间乘加结果进行移位累加,从而实现了使用少量的硬件完成多比特的特征数据和权重数据的乘加操作,节省了电路占用的空间,降低了硬件成本。
在一些可选的实现方式中,移位累加器包括目标数量个移位单元和目标数量个第二加法单元,目标数量为权重数据包括的比特位数减一。例如,权重数据的位宽为4,则目标数量为3。
目标数量个移位单元分别用于对输入的累加结果进行对应位数的移位操作。
目标数量个第二加法单元分别用于将目标数量个移位单元分别输出的移位后的累加结果相加,得到乘加结果。
如图5所示,移位单元和第二加法单元的数量均为3,中间乘加结果S3输入第一个移位单元401,再将移位后的数据和中间乘加结果S2输入第一个第二加法单元404;然后,将相加后的结果输入第二个移位单元402,再将移位后的数据和中间乘加结果S1输入第二个第二加法单元405;最后,将相加后的结果输入第三个移位单元403,再将移位后的数据和中间乘加结果S0输入第三个第二加法单元406,最终得到的数据即为乘加结果MAC。
本实现方式提供了更多的实现多比特数据乘加的方案,且无需进行循环操作,其时序更简单,有助于提高数据乘加的效率。
在一些可选的实现方式中,如图1所示,电路还包括乘加计算控制单元105,用于将电路切换到乘加计算模式,以及生成用于进行乘加计算的时序信号。在乘加计算模式下,可以按照上述本电路包括的各单元的功能对多比特的特征数据和权重数据进行乘加运算。本实现方式通过单独设置乘加计算控制单元,可以更有针对性地在乘加计算模式下按照乘加计算的时序进行乘加操作,使硬件功能更加清晰,有助于实现电路的模块化设计,提高电路进行乘加计算的效率。
在一些可选的实现方式中,如图1所示,预设数量个局部存储单元阵列分别对应于至少一个字线驱动器106,至少一个字线驱动器分别对应于一条字线。如图2所示,各个局部存储单元阵列包括的每行存储单元分别对应于一条字线及一个字线驱动器。对于一个局部存储单元阵列,其对应于16个字线驱动器MC#0~MC#15。
基于此,如图1所示,乘加计算控制单元105包括第一地址译码器1051,用于根据外部输入的地址信号,从预设数量个局部存储单元阵列分别包括的至少一个字线驱动器中选择目标字线驱动器。作为示例,如图2所示,当前选择的目标字线驱动器包括8个局部存储单元阵列分别对应的MC#0。
目标字线驱动器,用于激活对应的字线下的存储单元,并将激活的存储单元中的单比特位分别输入对应的计算单元包括的乘法器。作为示例,如图2所示,每个局部存储单元阵列的第一行的每列包括的存储单元中的单比特位分别输入对应的乘法器中,与对应的特征数据进行乘法计算。
通常,现有技术中,可以同时激活多条字线,此时,位线上的电压值会随着计算结果的变化而变化,如果这一电压值低于单个存储单元的写容限(Write Margin),原本存1的单元可能会被误写0,所以该设计存在一个“读干扰写(read disturb write)”的问题。而本实现方式每个局部存储单元阵列每次只能选择一个目标字线驱动器,因此,本实现方式可以避免同时选择多个字线带来的读干扰写问题。
此外,每个局部存储单元阵列对应的目标字线驱动器可以同时激活相应的字线,即各个计算单元可以并行地进行单比特权重数据的乘加运算,从而提高了乘加运算的效率。
在一些可选的实现方式中,如图1所示,电路还包括普通读写控制单元107,用于将电路切换到普通读写模式,以及生成用于进行普通读写的时序信号。在普通读写模式下,可以按照通常的数据读写方式,对各个局部存储单元阵列包括的存储单元进行数据读写操作。本实现方式通过单独设置普通读写控制单元,可以更有针对性地在普通读写模式下按照通常的读写时序进行数据读写操作,使硬件功能更加清晰,有助于实现电路的模块化设计,提高电路执行的效率。
在一些可选的实现方式中,如图1所示,普通读写控制单元107包括第二地址译码器1071,用于根据外部输入的写地址信号或读地址信号,从预设数量个局部存储单元阵列分别对应的至少一个字线驱动器中选择目标字线驱动器。需要说明的是,第二地址译码器1071和第一地址译码器1051可以是同一个地址译码器,也可以是不同的地址译码器。例如,第二地址译码器1071可以在普通读写模式和乘加计算模式下选择目标字线驱动器。
电路还包括数据读写接口108,用于基于写地址信号,向所选择的目标字线驱动器对应的各个存储单元写入数据;或者,基于读地址信号,从所选择的目标字线驱动器对应的各个存储单元读出数据。
在普通读写模式的读模式下,外部输入的地址信号先通过地址译码器1071转换到对应的目标字线驱动器,从而开启目标字线驱动器对应的字线,然后该字线对应的各个存储单元内的单比特数据表现在对应的位线上,最后通过数据读写接口将数据读取出来。
在普通读写模式的写模式下,外部输入的地址信号先通过地址译码器1071转换到对应的目标字线驱动器,从而开启目标字线驱动器对应的字线,然后写入的数据通过数据读写接口输送到对应的存储单元上的位线,最后通过位线上的输入电压将单比特数据写入到对应的存储单元。
通常,在该电路进入乘加计算模式之前,可以首先在普通读写模式下将多比特权重数据拆分成多组单比特比特权重数据,其中多比特权重数据以2补数的形式表示。每组单比特权重数据分别存储在对应的局部存储单元阵列内。如图2所示,首先将8比特权重数据W0,0[7:0]~W0,j-1[7:0]拆分成8组,分别为W0,0[7]~W0,j-1[7];W0,0[6]~W0,j-1[6];W0,0[5]~W0,j-1[5];W0,0[4]~W0,j-1[4];W0,0[3]~W0,j-1[3];W0,0[2]~W0,j-1[2];W0,0[1]~W0,j-1[1];W0,0[0]~W0,j-1[0]。然后将每一组单比特数据分别通过数据读写接口写入到对应的局部存储单元阵列。例如W0,0[0]~W0,j-1[0]写入到局部存储单元阵列#0中,W0,0[1]~W0,j-1[1]写入到局部存储单元阵列#1中,……,W0,0[7]~W0,j-1[7]写入到局部存储单元阵列#7中。
本实现方式通过在普通读写模式选择各个局部存储单元阵列对应的目标字线驱动器,对目标字线驱动器对应的字线包括的存储单元进行数据读写操作,可以提高本公开实施例提供的乘加运算电路的通用性,丰富该电路的应用场景。
本公开的上述实施例提供的电路,通过设置一一对应的预设数量个局部存储单元阵列和预设数量个计算单元,并将权重数据包括的各个比特位分别存储在不同的局部存储单元阵列中,使每个计算单元计算输入的特征数据和权重数据包括的同一比特位上的数据的乘积,再将计算的各个乘积相加,得到每个计算单元对应的中间乘加结果,最后由移位累加器将各个中间乘加结果进行相应的移位及累加操作,得到一一对应的至少一个特征数据与至少一个权重数据的乘加结果,从而实现了将正或负的权重数据存储在同一组存储单元阵列中即可进行乘加运算,无需将正负权重数据分开存储,提高了电路的数据存储密度。此外,在存储权重数据时,可以灵活地为不同位宽的权重数据分配存储单元以及对不同位宽的中间累加结果进行不同地移位累加操作,实现了数据乘加运算的可重构。
本公开的实施例还提供了一种芯片,芯片上集成了存内乘加计算电路,存内乘加计算电路的技术细节如图1-图5和相关描述所示,此处不再展开描述。
本公开的实施例还提供了一种计算装置,该计算装置包括上述实施例描述的芯片。此外,该计算装置还可以包括输入装置、输出装置以及必要的存储器等。其中,输入装置可以包括诸如鼠标、键盘、触控屏、通信网络连接器等,用于输入待计算的数据。输出装置可以包括诸如显示器、打印机、以及通信网络及其所连接的远程输出设备等等,用于输出上述实施例描述的乘加结果。存储器用于存储上述输入装置输入的数据,以及存内乘加计算电路运行过程中产生的数据。存储器可以包括易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
可能以许多方式来实现本公开的电路。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的电路。用于电路中的方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的电路的功能的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的电路的功能的程序的记录介质。
还需要指出的是,在本公开的电路中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

Claims (10)

1.一种存内乘加计算电路,包括:
输入特征数据驱动器、一一对应的预设数量个局部存储单元阵列和预设数量个计算单元、移位累加器;
所述局部存储单元阵列中的存储单元用于存储权重数据包括的单比特位,且对于一个权重数据,该权重数据包括的单比特位分别存储在不同的局部存储单元阵列中;
所述计算单元包括至少一个乘法器和加法树,对于所述至少一个乘法器中的乘法器,该乘法器用于将所述输入特征数据驱动器输入的特征数据与对应的权重数据包括的单比特位相乘,得到乘积;所述加法树用于将所得到的至少一个乘积相加,得到中间乘加结果;
所述移位累加器用于将得到的各个中间乘加结果进行移位累加,得到一一对应的至少一个特征数据与至少一个权重数据的乘加结果。
2.根据权利要求1所述的电路,其中,所述电路还包括乘加计算控制单元,用于将所述电路切换到乘加计算模式,以及生成用于进行乘加计算的时序信号。
3.根据权利要求2所述的电路,其中,所述预设数量个局部存储单元阵列分别对应于至少一个字线驱动器,所述至少一个字线驱动器分别对应于一条字线;
所述乘加计算控制单元包括第一地址译码器,用于根据外部输入的地址信号,从所述预设数量个局部存储单元阵列分别包括的至少一个字线驱动器中选择目标字线驱动器;
所述目标字线驱动器,用于激活对应的字线下的存储单元,并将激活的存储单元中的单比特位分别输入对应的计算单元包括的乘法器。
4.根据权利要求3所述的电路,其中,所述电路还包括普通读写控制单元,用于将所述电路切换到普通读写模式,以及生成用于进行普通读写的时序信号。
5.根据权利要求4所述的电路,其中,所述普通读写控制单元包括第二地址译码器,用于根据外部输入的写地址信号或读地址信号,从所述预设数量个局部存储单元阵列分别对应的至少一个字线驱动器中选择目标字线驱动器;
所述电路还包括数据读写接口,用于基于所述写地址信号,向所选择的目标字线驱动器对应的各个存储单元写入数据;或者,基于所述读地址信号,从所选择的目标字线驱动器对应的各个存储单元读出数据。
6.根据权利要求1所述的电路,其中,所述移位累加器包括移位单元和第一加法单元,所述移位单元和所述第一加法单元用于循环执行如下操作:
将所述权重数据的最高比特位对应的中间乘加结果输入所述移位单元,将移位后的累加结果与相邻的低比特位对应的中间乘加结果输入所述第一加法单元,将相加后的累加结果输入所述移位单元,再次将移位后的累加结果与相邻的低比特位对应的中间乘加结果输入所述第一加法单元,直到将所述权重数据的最低比特位对应的中间乘加结果与移位后的累加结果输入所述第一加法单元,得到所述乘加结果。
7.根据权利要求1所述的电路,其中,所述移位累加器包括目标数量个移位单元和目标数量个第二加法单元,所述目标数量为所述权重数据包括的比特位数减一;
所述目标数量个移位单元分别用于对输入的累加结果进行对应位数的移位操作;
所述目标数量个第二加法单元分别用于将所述目标数量个移位单元分别输出的移位后的累加结果相加,得到所述乘加结果。
8.根据权利要求1所述的电路,其中,在相对应的局部存储单元阵列和计算单元中,计算单元包括的乘法器对应于局部存储单元阵列包括的一列存储单元。
9.一种芯片,其特征在于,包括根据权利要求1-8中任一项所述的存内乘加计算电路。
10.一种计算装置,其特征在于,包括根据权利要求9所述的芯片。
CN202110759749.4A 2021-07-05 2021-07-05 存内乘加计算电路、芯片、计算装置 Pending CN113419705A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110759749.4A CN113419705A (zh) 2021-07-05 2021-07-05 存内乘加计算电路、芯片、计算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110759749.4A CN113419705A (zh) 2021-07-05 2021-07-05 存内乘加计算电路、芯片、计算装置

Publications (1)

Publication Number Publication Date
CN113419705A true CN113419705A (zh) 2021-09-21

Family

ID=77721433

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110759749.4A Pending CN113419705A (zh) 2021-07-05 2021-07-05 存内乘加计算电路、芯片、计算装置

Country Status (1)

Country Link
CN (1) CN113419705A (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113823336A (zh) * 2021-11-18 2021-12-21 南京后摩智能科技有限公司 用于存算一体的数据写入电路
CN113838497A (zh) * 2021-09-23 2021-12-24 南京后摩智能科技有限公司 可用于数据读取的精简化的存算一体电路
CN114281301A (zh) * 2021-11-10 2022-04-05 电子科技大学 支持内部数据乒乓的高密度存内计算乘加单元电路
CN114937470A (zh) * 2022-05-20 2022-08-23 电子科技大学 基于多比特sram单元的定点全精度存内计算电路
CN114974351A (zh) * 2022-05-31 2022-08-30 北京宽温微电子科技有限公司 一种多比特存内计算单元及存内计算装置
CN115312095A (zh) * 2022-10-10 2022-11-08 电子科技大学 一种支持内部数据更新的存内计算流水乘加电路
CN115658011A (zh) * 2022-09-30 2023-01-31 杭州智芯科微电子科技有限公司 向量乘加器的sram存内计算装置和电子设备
CN115906735A (zh) * 2023-01-06 2023-04-04 上海后摩智能科技有限公司 基于模拟信号的多比特数存算一体电路、芯片及计算装置
WO2023245757A1 (zh) * 2022-06-24 2023-12-28 长鑫存储技术有限公司 一种存内计算电路、方法以及半导体存储器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110427171A (zh) * 2019-08-09 2019-11-08 复旦大学 可扩展的定点数矩阵乘加运算的存内计算结构和方法
US20200357459A1 (en) * 2019-05-07 2020-11-12 MemryX Inc. Memory Processing Units and Methods of Computing DOT Products
CN112711394A (zh) * 2021-03-26 2021-04-27 南京后摩智能科技有限公司 基于数字域存内计算的电路
CN112992232A (zh) * 2021-04-28 2021-06-18 中科院微电子研究所南京智能技术研究院 一种多位正负单比特存内计算单元、阵列及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200357459A1 (en) * 2019-05-07 2020-11-12 MemryX Inc. Memory Processing Units and Methods of Computing DOT Products
CN110427171A (zh) * 2019-08-09 2019-11-08 复旦大学 可扩展的定点数矩阵乘加运算的存内计算结构和方法
CN112711394A (zh) * 2021-03-26 2021-04-27 南京后摩智能科技有限公司 基于数字域存内计算的电路
CN112992232A (zh) * 2021-04-28 2021-06-18 中科院微电子研究所南京智能技术研究院 一种多位正负单比特存内计算单元、阵列及装置

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113838497A (zh) * 2021-09-23 2021-12-24 南京后摩智能科技有限公司 可用于数据读取的精简化的存算一体电路
CN114281301A (zh) * 2021-11-10 2022-04-05 电子科技大学 支持内部数据乒乓的高密度存内计算乘加单元电路
CN113823336B (zh) * 2021-11-18 2022-02-25 南京后摩智能科技有限公司 用于存算一体的数据写入电路
CN113823336A (zh) * 2021-11-18 2021-12-21 南京后摩智能科技有限公司 用于存算一体的数据写入电路
CN114937470A (zh) * 2022-05-20 2022-08-23 电子科技大学 基于多比特sram单元的定点全精度存内计算电路
CN114937470B (zh) * 2022-05-20 2023-04-07 电子科技大学 基于多比特sram单元的定点全精度存内计算电路
CN114974351B (zh) * 2022-05-31 2023-10-17 苏州宽温电子科技有限公司 一种多比特存内计算单元及存内计算装置
CN114974351A (zh) * 2022-05-31 2022-08-30 北京宽温微电子科技有限公司 一种多比特存内计算单元及存内计算装置
WO2023245757A1 (zh) * 2022-06-24 2023-12-28 长鑫存储技术有限公司 一种存内计算电路、方法以及半导体存储器
CN115658011A (zh) * 2022-09-30 2023-01-31 杭州智芯科微电子科技有限公司 向量乘加器的sram存内计算装置和电子设备
CN115658011B (zh) * 2022-09-30 2023-11-28 杭州智芯科微电子科技有限公司 向量乘加器的sram存内计算装置和电子设备
CN115312095A (zh) * 2022-10-10 2022-11-08 电子科技大学 一种支持内部数据更新的存内计算流水乘加电路
CN115312095B (zh) * 2022-10-10 2023-01-03 电子科技大学 一种支持内部数据更新的存内计算流水乘加电路
CN115906735B (zh) * 2023-01-06 2023-05-05 上海后摩智能科技有限公司 基于模拟信号的多比特数存算一体电路、芯片及计算装置
CN115906735A (zh) * 2023-01-06 2023-04-04 上海后摩智能科技有限公司 基于模拟信号的多比特数存算一体电路、芯片及计算装置

Similar Documents

Publication Publication Date Title
CN113419705A (zh) 存内乘加计算电路、芯片、计算装置
CN112711394B (zh) 基于数字域存内计算的电路
Imani et al. Ultra-efficient processing in-memory for data intensive applications
Deng et al. Lacc: Exploiting lookup table-based fast and accurate vector multiplication in dram-based cnn accelerator
CN110597484B (zh) 基于存内计算的多比特全加器、多比特全加运算控制方法
US20240220205A1 (en) Counter-based multiplication using processing in memory
JPS6126712B2 (zh)
CN109993293B (zh) 一种适用于堆叠式沙漏网络的深度学习加速器
US20230068450A1 (en) Method and apparatus for processing sparse data
US20220269483A1 (en) Compute in memory accumulator
CN111459552B (zh) 一种内存中并行化计算的方法及装置
Ghasemzadeh et al. BRDS: An FPGA-based LSTM accelerator with row-balanced dual-ratio sparsification
CN115148234A (zh) 存储器中计算(cim)存储阵列
WO2022062391A1 (zh) 一种加速rnn网络的系统、方法及存储介质
CN113885831A (zh) 基于混合数据输入的存算一体电路、芯片及计算装置
US20230253032A1 (en) In-memory computation device and in-memory computation method to perform multiplication operation in memory cell array according to bit orders
CN113743046B (zh) 存算一体版图结构和数据拆分存算一体版图结构
CN115495152A (zh) 变长输入的存内计算电路
US20230047364A1 (en) Partial sum management and reconfigurable systolic flow architectures for in-memory computation
KR20220008743A (ko) 메모리 내의 컴퓨팅 회로 및 방법
US11423959B2 (en) Processing-in-memory devices for element-wise multiplication
CN114911453B (zh) 一种多比特乘累加全数字存内计算装置
CN113838497A (zh) 可用于数据读取的精简化的存算一体电路
CN114816327B (zh) 一种加法器及全数字存内计算装置
US20240086682A1 (en) Function-based activation of memory tiers

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination