CN115495152A - 变长输入的存内计算电路 - Google Patents

变长输入的存内计算电路 Download PDF

Info

Publication number
CN115495152A
CN115495152A CN202211123292.9A CN202211123292A CN115495152A CN 115495152 A CN115495152 A CN 115495152A CN 202211123292 A CN202211123292 A CN 202211123292A CN 115495152 A CN115495152 A CN 115495152A
Authority
CN
China
Prior art keywords
data
bit
bits
unit
variable length
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
CN202211123292.9A
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.)
Beijing Houmo Intelligent Technology Co ltd
Original Assignee
Beijing 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 Beijing Houmo Intelligent Technology Co ltd filed Critical Beijing Houmo Intelligent Technology Co ltd
Priority to CN202211123292.9A priority Critical patent/CN115495152A/zh
Publication of CN115495152A publication Critical patent/CN115495152A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Neurology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本公开实施例公开了一种变长输入的存内计算电路,包括:数据缓存单元,用于缓存一组待计算数据;其中,所述待计算数据中包括n个比特位,n的取值为整数且n≥2,所述待计算数据中根据比特位的位置分为高比特位和低比特位;高位检测器,用于对所述数据缓存区中的所述待计算数据进行高比特位检测,确定所述待计算数据中的高比特位是否为0;可变长度移位寄存器,用于基于所述高位检测器的检测结果对所述待计算数据执行变长操作,得到变长数据并传输给存算单元;所述存算单元,用于对所述变长数据和权重数据执行乘法和/或加法运算,得到计算结果;本实施例通过更少的比特数实现了待计算数据的传输,达到了提高算力的技术效果。

Description

变长输入的存内计算电路
技术领域
本公开涉及计算机技术领域,尤其是一种变长输入的存内计算电路。
背景技术
随着人工智能(Artificial Intelligent,AI)和物联网(Internet of Things,IoT)应用的快速发展,中央处理器(CPU)和存储电路(Memory)之间需要经由有限的总线带宽进行频繁且大量的数据传输,这也被公认为目前传统的冯诺依曼架构体系中的最大的瓶颈。深度神经网络作为目前在人工智能领域中应用于图像识别的最成功的算法之一,它需要对变长数据和权重数据做大量的读写,乘法和加法运算。这也意味着需要更大数目的数据传输和更多的能量消耗。值得注意的是,在不同的AI任务下,读写数据所消耗的能量远远大于计算数据的能量。如在基于传统的冯诺依曼架构的深度神经网络处理器中,不管是变长数据(input activation)还是权重数据(weight),都需要先存储在对应的存储器单元中,然后经由总线送到对应的数字运算单元进行乘加(Multiplicaiton andComputation,MAC)的运算,最后再把运算结果读出。现有技术通常采用与操作数精度相等的固定长度的位流来完成多位精度操作数的乘累加操作。
发明内容
为了解决上述技术问题,提出了本公开。本公开的实施例提供了一种变长输入的存内计算电路。
根据本公开实施例的一个方面,提供了一种变长输入的存内计算电路,包括:
数据缓存单元,用于缓存一组待计算数据;其中,所述待计算数据中包括n个比特位,n的取值为整数且n≥2,所述待计算数据中根据比特位的位置分为高比特位和低比特位;
高位检测器,用于对所述数据缓存单元中的所述待计算数据进行高比特位检测,确定所述待计算数据中的高比特位是否为0;
可变长度移位寄存器,用于基于所述高位检测器的检测结果对所述待计算数据执行变长操作,得到变长数据并传输给存算单元;
所述存算单元,用于对所述变长数据和权重数据执行乘法和/或加法运算,得到计算结果。
可选地,所述待计算数据中包括多个高比特位;
所述高位检测器,具体用于对所述待计算数据中的多个高比特位按照从高到低的顺序进行检测;确定所述待计算数据包括的高比特位中是否包括至少一个高比特位为0,并确定高比特位中连续为0的缩减位数。
可选地,所述可变长度移位寄存器包括:
变长单元,用于响应于所述待计算数据包括至少一个高比特位为0,根据所述高位检测器传输的所述缩减位数对所述待计算数据执行变长操作,得到比特位减少了所述缩减位数的所述变长数据;
传输单元,用于将所述变长数据通过对应位数的传输单位传输给所述存算单元。
可选地,所述传输单元,还用于将所述变长数据对应的截止标示位通过对应位数的传输单位传输给所述存算单元。
可选地,所述存算单元包括:
计算存储单元阵列,其中,计算存储单元包括一一对应的预设数量个数据存储单元和预设数量个单比特乘法器,所述预设数量个数据存储单元分别用于存储权重数据包括的单比特位,并将存储的单比特位输入对应的单比特乘法器,所述预设数量个单比特乘法器分别用于对输入的权重数据包括的单比特位和所述变长数据包括的单比特位相乘,得到乘积数据;
加法树,用于累加多个所述计算存储单元输出的所述乘积数据,得到累加结果;
多比特输入转换单元,用于将所述加法树输出的、对应于所述变长数据包括的各个单比特位的累加结果,转换为多比特变长数据和多比特权重数据的乘加结果。
可选地,所述存算单元还包括:
至少一个字线驱动器,分别对应于一组计算存储单元;
地址译码器,用于根据外部输入的地址信号,从所述计算存储单元阵列中选择目标计算存储单元;
数据读写接口,用于向所述目标计算存储单元写入权重数据;
至少一个输入线驱动器,用于将所述变长数据包括的各个单比特位分别输入所述预设数量个单比特乘法器。
可选地,所述存算单元还包括:时序控制单元,用于输出时钟信号;
所述至少一个输入线驱动器,进一步用于根据所述时钟信号,依次将所述变长数据包括的各个单比特位分别输入所述预设数量个单比特乘法器;
所述加法树,进一步用于根据所述时钟信号,依次将各个计算存储单元输出的乘积数据累加,得到累加结果;
所述多比特输入转换单元,进一步用于根据所述时钟信号,依次将所述加法树输出的、对应于所述变长数据包括的各个单比特位的累加结果进行转换。
可选地,所述加法树包括至少两个子树,并且对于所述至少两个子树中的每个子树,所述子树用于将各个计算存储单元输出的乘积数据包括的、与该子树对应的比特位累加,得到该子树对应的子累加结果;
所述存算单元还包括:
乘法累加器,用于对各个子累加结果进行乘法累加运算,得到所述累加结果。
可选地,所述至少两个子树包括第一子树和第二子树,所述第一子树对应于所述乘积数据的、对应位数的高比特位,所述第二子树对应于所述乘积数据的、对应位数的低比特位;所述对应位数的高比特位为所述乘积数据的最高位,所述对应位数的低比特位为所述乘积数据中的除所述最高位以外的其他位;
所述乘法累加器包括乘法单元和第一加法单元,所述乘法单元用于将所述第一子树对应的子累加结果与预设数值相乘,所述第一加法单元用于将所述乘法单元输出的结果与所述第二子树对应的子累加结果相加,得到所述累加结果。
可选地,所述多比特输入转换单元包括移位单元和第二加法单元,所述移位单元和所述第二加法单元用于循环执行如下操作:
将所述变长数据的最高比特位对应的累加结果输入所述移位单元,将移位后的累加结果与相邻的低比特位对应的累加结果输入所述第二加法单元,将相加后的累加结果输入所述移位单元,再次将移位后的累加结果与相邻的低比特位对应的累加结果输入所述第二加法单元,直到将所述变长数据的最低比特位对应的累加结果与移位后的累加结果输入所述第二加法单元,得到所述乘加结果。
可选地,所述多比特输入转换单元包括目标数量个移位单元和第三加法单元,所述目标数量为所述变长数据包括的比特位数减一;
所述目标数量个移位单元分别用于对输入的累加结果进行对应位数的移位操作;
所述第三加法单元用于将所述目标数量个移位单元分别输出的移位后的累加结果相加,得到所述乘加结果。
可选地,所述存算单元还包括模式选择单元,用于根据输入的模式选择信号选择所述电路当前的工作模式,所述工作模式包括普通读写模式和多比特乘加计算模式;
在所述普通读写模式下,所述地址译码器,还用于根据外部输入的写地址信号或读地址信号,从所述至少一个字线驱动器中选择目标字线驱动器;
所述数据读写接口,还用于基于所述写地址信号,向所选择的目标字线驱动器对应的各个计算存储单元包括的数据存储单元写入数据;或者,基于所述读地址信号,从所选择的目标字线驱动器对应的各个计算存储单元包括的数据存储单元读出数据。
可选地,所述单比特乘法器包括或非门,所述或非门用于对取反后的权重数据包括的单比特位和取反后的变长数据包括的单比特位进行或非运算,得到单比特乘积数据。
基于本公开上述实施例提供的一种变长输入的存内计算电路,包括:数据缓存单元,用于缓存一组待计算数据;其中,所述待计算数据中包括n个比特位,n的取值为整数且n≥2,所述待计算数据中根据比特位的位置分为高比特位和低比特位;高位检测器,用于对所述数据缓存区中的所述待计算数据进行高比特位检测,确定所述待计算数据中的高比特位是否为0;可变长度移位寄存器,用于基于所述高位检测器的检测结果对所述待计算数据执行变长操作,得到变长数据并传输给存算单元;所述存算单元,用于对所述变长数据和权重数据执行乘法和/或加法运算,得到计算结果;本实施例中,通过对待计算数据中的高比特位进行检测,并基于检测结果对待计算数据进行变长操作,由于高比特位为0时,是否传输高比特位对计算结果没有影响,因此,本实施例通过更少的比特数实现了待计算数据的传输,达到了提高算力的技术效果。
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
通过结合附图对本公开实施例进行更详细的描述,本公开的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开实施例一起用于解释本公开,并不构成对本公开的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1是本公开一示例性实施例提供的变长输入的存内计算电路的结构示意图。
图2是本公开一示例性实施例提供的变长输入的存内计算电路中存算单元的结构示意图。
图3是本公开一示例性实施例提供的变长输入的存内计算电路中存算单元的另一结构示意图。
图4是本公开一示例性实施例提供的变长输入的存内计算电路中存算单元的一个时序图。
图5是本公开一示例性实施例提供的变长输入的存内计算电路中存算单元的一个加法树的示例性结构示意图。
图6是本公开一示例性实施例提供的变长输入的存内计算电路中存算单元的乘法累加器的示例性结构示意图。
图7是本公开一示例性实施例提供的变长输入的存内计算电路中存算单元的多比特输入转换单元的示例性结构示意图。
图8是本公开一示例性实施例提供的变长输入的存内计算电路中存算单元的另一个多比特输入转换单元的示例性结构示意图。
具体实施方式
下面,将参考附图详细地描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。
应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
本领域技术人员可以理解,本公开实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序。
还应理解,在本公开实施例中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。
还应理解,对于本公开实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
另外,本公开中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本公开中字符“/”,一般表示前后关联对象是一种“或”的关系。本公开中所指数据可以包括文本、图像、视频等非结构化数据,也可以是结构化数据。
还应理解,本公开对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图1是本公开一示例性实施例提供的变长输入的存内计算电路的结构示意图。该电路包含的各个组成部分可以集成到一个芯片中,也可以设置到不同的芯片或电路板中,这些芯片或电路板之间建立数据通信的链路。如图1所示,该电路包括:
数据缓存单元101,用于缓存一组待计算数据。
其中,待计算数据中包括n个比特位,n的取值为整数且n≥2,待计算数据中根据比特位的位置分为高比特位和低比特位;例如,待计算数据包括8比特位,其中4个比特位为高比特位,4个比特位为地比特位,例如,待计算数据为二进制数据:00001011(从低到高分别对应2的位数次幂,即,00001011分别对应27、26、25、24、23、22、21、20,可根据对应的幂次方确定幂次方大的预设个数对应的比特位为高比特位),其中,0000为高比特位,1011为低比特位。
高位检测器102,用于对数据缓存单元中的待计算数据进行高位检测,确定待计算数据中的高比特位是否为0。
本实施例中,高位检测器对待计算数据中的高比特位进行数值检测,确定高比特位的数值是否为0,由于后续对待计算数据执行的是乘法和/或加法运算,在乘法以及加法运算中,高位数为0时,去除这些值为0的高位数对计算结果没有影响,因此,本实施例对高比特位进行0检测,以减少数据传输消耗。
可变长度移位寄存器103,用于基于高位检测器102的检测结果对待计算数据执行变长操作,得到变长数据并传输给存算单元104。
根据高位检测器102确定待计算数据中高比特位是否包括0,存在两种情况,包括0或不包括0,不包括0的情况下,变长数据的长度与待计算数据相同;包括0的情况下还从高位检测器102获得高比特位为0的数量,根据0的数量对待计算数据进行变长操作。
存算单元104,用于对变长数据和权重数据执行乘法和/或加法运算,得到计算结果。
本公开上述实施例提供的一种变长输入的存内计算电路,数据缓存单元,用于缓存一组待计算数据;其中,所述待计算数据中包括n个比特位,n的取值为整数且n≥2,所述待计算数据中根据比特位的位置分为高比特位和低比特位;高位检测器,用于对所述数据缓存区中的所述待计算数据进行高比特位检测,确定所述待计算数据中的高比特位是否为0;可变长度移位寄存器,用于基于所述高位检测器的检测结果对所述待计算数据执行变长操作,得到变长数据并传输给存算单元;所述存算单元,用于对所述变长数据和权重数据执行乘法和/或加法运算,得到计算结果;本实施例中,通过对待计算数据中的高比特位进行检测,并基于检测结果对待计算数据进行变长操作,由于高比特位为0时,是否传输高比特位对计算结果没有影响,因此,本实施例通过更少的比特数实现了待计算数据的传输,达到了提高算力的技术效果。
在一些可选的实施例中,待计算数据中包括多个高比特位;
高位检测器102,具体用于对待计算数据中的多个高比特位按照从高到低的顺序进行检测;确定待计算数据包括的高比特位中是否包括至少一个高比特位为0,并确定高比特位中连续为0的缩减位数。
本实施例中,对多个高比特位从高到底进行0检测,只有最高位为0的情况下才继续向次高位检测,依次类推,确定高比特位中从最高位开始的连续不间断的0的数量为缩减位数,缩减位数即为待计算数据中可删除的高比特位的位数。
可选地,可变长度移位寄存器103包括:
变长单元,用于响应于待计算数据包括至少一个高比特位为0,根据高位检测器传输的缩减位数对待计算数据执行变长操作,得到比特位减少了缩减位数的变长数据。
基于高位检测器中确定的缩减位数确定了待计算数据中可删除且不影响计算结果的缩减位数,通过变长单元将待计算数据从最高位删除缩减位数数量的比特位,删除后得到缩减了比特位长度的变长数据。
传输单元,用于将变长数据通过对应位数的传输单位传输给存算单元。
现有技术中,在传输待计算数据时,需要通过对应待计算数据的长度的传输单位进行传输,例如,待计算数据为4比特,需要通过4个传输单位来完成一次传输,在经过本申请实施例的变长处理后,例如,当4比特计算数据中的2个高比特位都为0时,可得到变长数据为2比特,此时,仅需要2个传输单位来完成传输,空闲的传输单位可以执行下一次运算的变长数据;另外,在高位检测器102对高比特位进行检测的同时,可通过传输单元对待计算数据中的低比特位进行传输,以提高传输效率,在确定高比特位的0的缩减位数后,再利用剩余传输单位将缩减后的高比特位传输给存算单元。
可选地,传输单元,还用于将变长数据对应的截止标示位通过对应位数的传输单位传输给存算单元。
本实施例中,由于待计算数据经过变长操作,即,每次传输单元传输的变长数据的长度都可能不同,如何确定需要执行一次计算,是本实施例需要解决的技术问题,本实施例通过在变长数据的最后添加截止标示位来表示本次变长数据传输完毕,可以执行乘法和/或加法运算。
图2是本公开一示例性实施例提供的变长输入的存内计算电路中存算单元的结构示意图。如图2所示,存算单元104包括:计算存储单元阵列201、加法树202、多比特输入转换单元203(Multi Input Transfer Logic,MITL)。
计算存储单元阵列201,由多个计算存储单元2011组成。作为示例,如图3所示,计算存储单元阵列201由512行、128列的计算存储单元组成。其中,计算存储单元阵列201中的计算存储单元包括一一对应的预设数量个数据存储单元(如图3中3011所示)和预设数量个单比特乘法器(如图3中3012所示),本实施例中,预设数量的取值根据变长数据的比特数确定,即,预设数量与变长数据的比特数相同,例如,变长数据为4比特时,预设数量为4。如图3所示,预设数量为4,则128列计算存储单元中的每列包括4列数据存储单元。在计算存储单元3011中,包括四个6T SRAM数据存储单元和四个单比特乘法器(单比特乘法器包括4T或非门,因此用NOR表示)。每个数据存储单元的数据输出端与单比特乘法器的一个数据输入端连接。
在本实施例中,预设数量个数据存储单元分别用于存储权重数据包括的单比特位,并将存储的单比特位输入对应的单比特乘法器。其中,权重数据通常是深度神经网络中的权重数据。作为示例,图3中3011包括的四个数据存储单元分别存储一个4比特的权重数据包括的四个单比特位W00[0]、W00[1]、W00[2]、W00[3]。各个单比特位分别被输入到对应的单比特乘法器。
在本实施例中,预设数量个单比特乘法器分别用于对输入的权重数据包括的单比特位和变长数据包括的单比特位相乘,得到乘积数据;本实施例中在接收到变长数据对应的截止标示位之后,才执行乘法运算,得到乘积数据,避免了在变长数据输入时,由于数据长度不固定而导致的运算错误的问题。
其中,取与变长数据的位数相同的权重数据的位数,例如均为4比特数据。作为示例,假设权重数据W00=1010,即图2中的W00[0]=0、W00[1]=1、W00[2]=0、W00[3]=1,假设变长数据IN0=0101,则图中与W00[0]、W00[1]、W00[2]、W00[3]分别对应的单比特乘法器均输入IN00[0]=1,即四个单比特乘法器计算W00[0]×IN00[0]、W00[1]×IN00[0]、W00[2]×IN00[0]、W00[4]×IN00[0],计算得到的乘积数据为S0[0]=1010;然后以同样的方法,依次输入IN00[1]=0、IN00[2]=1、IN00[3]=0至四个单比特乘法器,与W00[0]、W00[1]、W00[2]、W00[3]进行单比特乘法,得到乘积数据S1[0]=0000、S2[0]=1010、S3[0]=0000。
在本实施例中,加法树202用于将各个计算存储单元输出的乘积数据累加,得到累加结果。如图3所示,每列计算存储单元对应一个加法树302,INB[0]~INB[511]为512个4比特变长数据。图3中的加法树302包括512个加法子树(Adder),每个加法子树对应一个计算存储单元,用于存储相应的乘积数据,加法树302输出累加结果。需要说明的是,每个计算周期取512个4比特变长数据中的1个单比特位进行乘法运算,即四个计算周期可以将全部512个4比特变长数据计算完毕,四个计算周期分别对应的累加结果为:
Figure BDA0003848052430000111
Figure BDA0003848052430000112
Figure BDA0003848052430000113
Figure BDA0003848052430000114
其中,INB[k][0]~INB[k][3],分别为变长数据INB[k]的四个单比特位。
在本实施例中,多比特输入转换单元203用于将加法树202输出的、对应于变长数据包括的各个单比特位的累加结果转换为多比特变长数据和多比特权重数据的乘加结果。如图3所示,多比特输入转换单元303接收累加结果PSUM_M和PSUM_L,输出乘加结果MAC,其中,关于PSUM_M和PSUM_L的描述请参见下述可选的实现方式。
通常,可以将各个累加结果进行移位累加,得到权重数据和变长数据的乘加结果。作为示例,根据多比特数据乘法的原理,上述S0~S3需要分别左移0位、1位、2位、3位,再将移位后的数据相加,最终得到多比特的数据的乘加结果。上述移位累加的方式可以通过在电路中设置移位单元和加法器实现。
本公开的上述实施例提供的方法,利用多比特数据乘法的原理,在计算存储单元阵列中设置单比特乘法器,将各个数据存储单元中存储的权重数据包括的每个单比特位和变长数据包括的每个单比特位分别相乘,得到多个乘积数据,再利用加法树对每个比特位对应的各个乘积数据累加,得到多个累加结果,最后利用多比特输入转换单元,对各个累加结果进行相应的移位以及累加操作,最终得到权重数据和变长数据的乘加结果。本公开的实施例实现了对多比特的权重数据和变长数据的存内乘加计算,提高了存内计算的效率和能效密度。相比于现有技术利用两个位线之间的电压差实现乘加,本公开的实施例可以避免位线上的电压变化导致的读干扰写问题,提高计算的稳定性。将该电路应用到深度神经网络的计算,可以大大提高神经网络的识别速度。
在一些可选的实现方式中,如图2所示,该存算单元还可以包括:
至少一个字线驱动器204(WL driver),分别对应于一组计算存储单元。其中,一组计算存储单元包括的计算存储单元的数量可以是至少一个。作为示例,如图3所示,每个字线驱动器304对应于一行计算存储单元(128个)。
地址译码器2071(通常包含在时序控制单元207中),用于根据外部输入的地址信号,从计算存储单元阵列中选择目标计算存储单元。
数据读写接口205(Normal Read/Write IO),用于向目标计算存储单元写入权重数据。作为示例,外部输入的地址信号首先通过时序控制单元中的地址译码器转换到对应的字线驱动器,从而开启行地址所选择的字线,然后写入的权重数据通过数据读写接口中的写接口输送到对应的行上的位线(BL/BLB),最后通过位线上的输入电压写入到数据存储单元,
至少一个输入线驱动器206(IN driver),用于将变长数据包括的各个单比特位分别输入预设数量个单比特乘法器。如图3所示,多个输入线驱动器305将变长数据INB包括的单比特位输入对应的单比特乘法器。
本实现方式通过在电路中设置字线驱动器、输入线驱动器、地址译码器和数据读写接口,可以将权重数据按照通用的数据读写方式写入数据存储单元,同时控制变长数据包括的各个单比特位的输入,从而实现了精准高效地控制数据乘加的流程,提高了计算的准确性和效率。
在一些可选的实现方式中,该存算单元104还包括:时序控制单元207(TimeController),用于输出时钟信号。
至少一个输入线驱动器206,进一步用于根据时钟信号,依次将变长数据包括的各个单比特位分别输入预设数量个单比特乘法器。
加法树202,进一步用于根据时钟信号,依次将各个计算存储单元输出的乘积数据累加,得到累加结果。
多比特输入转换单元203,进一步用于根据时钟信号,依次将加法树输出的、对应于变长数据包括的各个单比特位的累加结果进行转换。
如图4所示,其示出了本公开的实施例的一个时序图。其中,CLK为时钟信号,CIMEN为存内计算使能信号,高电平有效,IN为变长数据(经过高位检测器102检测和可变长度移位寄存器103处理),PSUM为累加结果,SUM为对累加结果进行多比特输入转换后的数据,SRDY乘加计算完毕指示信号,MAC为乘加结果。图4所示场景为对4比特数据进行乘加的过程,四个时钟周期处理一个4比特数据,如图4所示,每个时钟周期接收变长数据IN[0]~IN[511]分别包括的一个单比特位,并且在每个周期分别进行各个变长数据包括的对应比特位的累加,得到累加结果S3、S2、S1、S0,然后将各个累加结果进行移位累加,最终将乘加结果(即
Figure BDA0003848052430000141
)由MAC信号线输出。
本实现方式通过在存算单元中设置时序控制单元207,可以使存内计算过程在时钟信号的控制下按照单比特位的顺序进行乘加运算,从而节约接收变长数据所占用的单比特乘法器,节约片上资源,提高运算效率。
在一些可选的实现方式中,该存算单元104还可以包括模式选择单元208,用于根据输入的模式选择信号选择存算单元当前的工作模式,工作模式包括普通读写模式和多比特乘加计算模式。例如,当模式选择信号选择当前模式为多比特乘加计算模式时,使用输入线驱动器、单比特乘法器、加法树、多比特输入转换单元等进行多比特乘加计算。
在普通读写模式下,地址译码器2071,还用于根据外部输入的写地址信号或读地址信号,从至少一个字线驱动器中选择目标字线驱动器。数据读写接口205,还用于基于写地址信号,向所选择的目标字线驱动器对应的各个计算存储单元包括的数据存储单元写入数据;或者,基于读地址信号,从所选择的目标字线驱动器对应的各个计算存储单元包括的数据存储单元读出数据。
例如,在普通读写模式下的写操作时,外部输入的地址信号首先通过时序控制单元207中的地址译码器2071转换到对应的字线驱动器,从而开启行地址所选择的字线,然后写入的数据通过数据读写接口中的写接口输送到对应的数据存储单元上的位线(BL/BLB),最后通过位线上的输入电压写入到数据存储单元。
在普通读写模式下的读操作时,外部输入的地址信号首先通过时序控制单元中的地址译码器转换到对应的字线驱动器,从而开启行地址所选择的字线,然后对应数据存储单元的存储数据表现在对应的位线(BL/BLB)上,最后通过数据读写接口中的读接口读取出来。
本实现方式通过设置模式选择单元208,可以灵活地使用计算存储单元阵列进行普通数据读写或存内多比特乘加计算,从而提高了计算存储单元阵列的使用灵活性,并丰富了计算存储单元阵列的应用场景。
在一些可选的实现方式中,加法树202包括至少两个子树,并且对于至少两个子树中的每个子树,该子树用于将各个计算存储单元输出的乘积数据包括的、与该子树对应的比特位累加,得到该子树对应的子累加结果;
存算单元104还包括:
乘法累加器,用于将各个子累加结果进行乘法累加运算,得到累加结果。
作为示例,加法树的数量可以与乘积数据的比特位数相同。例如包括四个加法树,每个加法树用于对多个乘积数据的相同位置的单比特位进行相加,得到四个累加结果s0、s1、s2、s3。利用乘法累加器进行如下计算得到累加结果:PSUM=s3*8+s2*4+s1*2+s0。
本实现方式通过将加法树设置为至少两个子树,可以对累加计算的过程进行分布计算,降低设置加法树的复杂度。
在一些可选的实现方式中,至少两个子树包括第一子树和第二子树,第一子树对应于乘积数据的、对应位数的高比特位,第二子树对应于乘积数据的、对应位数的低比特位。作为示例,第一子树对应于乘积数据的高两位,第二子树对应于乘积数据的低两位,即第一子树对各个乘积数据的高两位数据相加,第二子树对各个乘积数据的低两位数据相加。
乘法累加器包括乘法单元和第一加法单元,乘法单元用于将第一子树对应的子累加结果与预设数值相乘,第一加法单元用于将乘法单元输出的结果与第二子树对应的子累加结果相加,得到累加结果。
作为示例,假设乘积数据为4比特位数据,第一子树输出的子累加结果为a,第二子树输出的子累加结果为b,则累加结果为:PSUM=a*4+b。
本实现方式通过将加法树设置为两个子树,可以在降低设置加法树的复杂度的基础上,减少乘法运算的次数,有助于提高计算效率。
在一些可选的实现方式中,对应位数的高比特位为乘积数据的最高位,对应位数的低比特位为乘积数据中的除最高位以外的其他位。如图5所示,501为最高位对应的子树,变长数据包括Y01[3]、Y01[3]、Y02[3]、Y03[3]…,502为低三位对应的子树,变长数据包括Y01[2:0]、Y01[2:0]、Y02[2:0]、Y03[2:0]…,501输出对512个乘积数据的最高位进行累加的子累加结果PSUM_M[9:0],502输出对512个乘积数据的低三位进行累加的子累加结果PSUM_L[12:0]。基于此,如图6所示,乘法累加器包括乘法单元601和第一加法单元602,乘法单元601对PSUM_M[9:0]与预设数值相乘。当4比特乘积数据为有符号数时,最高位的权重为-8,其他位的权重依次为4、2、1,因此,预设数值为图中所示的-8。
本实现方式通过对最高位进行单独累加,可以实现在乘积数据为有符号数时对有符号的最高位的单独处理,从而提高了数据累加的灵活性。
在一些可选的实现方式中,如图7所示,多比特输入转换单元包括移位单元701和第二加法单元702,移位单元和第二加法单元用于循环执行如下操作:
将变长数据的最高比特位对应的累加结果输入移位单元,将移位后的累加结果与相邻的低比特位对应的累加结果输入第二加法单元,将相加后的累加结果输入移位单元,再次将移位后的累加结果与相邻的低比特位对应的累加结果输入第二加法单元,直到将变长数据的最低比特位对应的累加结果与移位后的累加结果输入第二加法单元,得到乘加结果。
作为示例,假设变长数据为4比特数据,最高位对应的累加结果S3首先输入移位单元701,并将S3移位后的累加结果和次高位对应的累加结果S2输入第二加法单元702,得到第一次移位累加后的数据sum1。然后,将sum1再次输入移位单元701,并将sum1移位后和累加结果S1输入第二加法单元702,得到第二次移位累加后的数据sum2。再然后,将sum2再次输入移位单元701,并将sum2移位后和累加结果S0输入第二加法单元702,得到第三次移位累加后的数据sum3,sum3即为最终的乘加结果MAC。
本实现方式通过将多比特输入转换单元设置为一个移位单元和一个加法单元的组合,可以循环地对各个累加结果进行移位累加,从而实现了使用少量的硬件完成多比特输入转换,节省了电路占用的空间,降低了硬件成本。
在一些可选的实现方式中,多比特输入转换单元包括目标数量个移位单元和第三加法单元,目标数量为变长数据包括的比特位数减一。例如,目标数量为3。
目标数量个移位单元分别用于对输入的累加结果进行对应位数的移位操作。
第三加法单元用于将目标数量个移位单元分别输出的移位后的累加结果相加,得到乘加结果。
如图8所示,移位单元和第三加法单元的数量均为3,累加结果S3输入第一个移位单元801,再将移位后的数据和累加结果S2输入第一个第三加法单元804;然后,将相加后的结果输入第二个移位单元802,再将移位后的数据和累加结果S1输入第二个第三加法单元805;最后,将相加后的结果输入第三个移位单元803,再将移位后的数据和累加结果S0输入第三个第三加法单元806,最终得到的数据即为乘加结果MAC。
在一些可选的实现方式中,单比特乘法器包括或非门,或非门用于对取反后的权重数据包括的单比特位和取反后的变长数据包括的单比特位进行或非运算,得到单比特乘积数据。
通常,可以从存储权重数据包括的单比特位W的6T SRAM中提取反相数据W_B,再对变长数据包括的单比特位IN取反,得到IN_B,然后将W_B和W_B输入或非门,输出单比特乘积数据。具体的真值表如下:
IN W IN_B WB OUT=IN×W
1 1 0 0 1
1 0 0 1 0
0 1 1 0 0
0 0 1 1 0
本实现方式通过使用或非门实现单比特乘法计算,其实现方式简单,可以降低电路的复杂度,降低电路实现的成本。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
可能以许多方式来实现本公开的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

Claims (13)

1.一种变长输入的存内计算电路,其特征在于,包括:
数据缓存单元,用于缓存一组待计算数据;其中,所述待计算数据中包括n个比特位,n的取值为整数且n≥2,所述待计算数据中根据比特位的位置分为高比特位和低比特位;
高位检测器,用于对所述数据缓存单元中的所述待计算数据进行高比特位检测,确定所述待计算数据中的高比特位是否为0;
可变长度移位寄存器,用于基于所述高位检测器的检测结果对所述待计算数据执行变长操作,得到变长数据并传输给存算单元;
所述存算单元,用于对所述变长数据和权重数据执行乘法和/或加法运算,得到计算结果。
2.根据权利要求1所述的电路,其特征在于,所述待计算数据中包括多个高比特位;
所述高位检测器,具体用于对所述待计算数据中的多个高比特位按照从高到低的顺序进行检测;确定所述待计算数据包括的高比特位中是否包括至少一个高比特位为0,并确定高比特位中连续为0的缩减位数。
3.根据权利要求2所述的电路,其特征在于,所述可变长度移位寄存器包括:
变长单元,用于响应于所述待计算数据包括至少一个高比特位为0,根据所述高位检测器传输的所述缩减位数对所述待计算数据执行变长操作,得到比特位减少了所述缩减位数的所述变长数据;
传输单元,用于将所述变长数据通过对应位数的传输单位传输给所述存算单元。
4.根据权利要求3所述的电路,其特征在于,所述传输单元,还用于将所述变长数据对应的截止标示位通过对应位数的传输单位传输给所述存算单元。
5.根据权利要求1-4任一所述的电路,其特征在于,所述存算单元包括:
计算存储单元阵列,其中,计算存储单元包括一一对应的预设数量个数据存储单元和预设数量个单比特乘法器,所述预设数量个数据存储单元分别用于存储权重数据包括的单比特位,并将存储的单比特位输入对应的单比特乘法器,所述预设数量个单比特乘法器分别用于对输入的权重数据包括的单比特位和所述变长数据包括的单比特位相乘,得到乘积数据;
加法树,用于累加多个所述计算存储单元输出的所述乘积数据,得到累加结果;
多比特输入转换单元,用于将所述加法树输出的、对应于所述变长数据包括的各个单比特位的累加结果,转换为多比特变长数据和多比特权重数据的乘加结果。
6.根据权利要求5所述的电路,其特征在于,所述存算单元还包括:
至少一个字线驱动器,分别对应于一组计算存储单元;
地址译码器,用于根据外部输入的地址信号,从所述计算存储单元阵列中选择目标计算存储单元;
数据读写接口,用于向所述目标计算存储单元写入权重数据;
至少一个输入线驱动器,用于将所述变长数据包括的各个单比特位分别输入所述预设数量个单比特乘法器。
7.根据权利要求6所述的电路,其特征在于,所述存算单元还包括:时序控制单元,用于输出时钟信号;
所述至少一个输入线驱动器,进一步用于根据所述时钟信号,依次将所述变长数据包括的各个单比特位分别输入所述预设数量个单比特乘法器;
所述加法树,进一步用于根据所述时钟信号,依次将各个计算存储单元输出的乘积数据累加,得到累加结果;
所述多比特输入转换单元,进一步用于根据所述时钟信号,依次将所述加法树输出的、对应于所述变长数据包括的各个单比特位的累加结果进行转换。
8.根据权利要求5-7任一所述的电路,其特征在于,所述加法树包括至少两个子树,并且对于所述至少两个子树中的每个子树,所述子树用于将各个计算存储单元输出的乘积数据包括的、与该子树对应的比特位累加,得到该子树对应的子累加结果;
所述存算单元还包括:
乘法累加器,用于对各个子累加结果进行乘法累加运算,得到所述累加结果。
9.根据权利要求8所述的电路,其特征在于,所述至少两个子树包括第一子树和第二子树,所述第一子树对应于所述乘积数据的、对应位数的高比特位,所述第二子树对应于所述乘积数据的、对应位数的低比特位;所述对应位数的高比特位为所述乘积数据的最高位,所述对应位数的低比特位为所述乘积数据中的除所述最高位以外的其他位;
所述乘法累加器包括乘法单元和第一加法单元,所述乘法单元用于将所述第一子树对应的子累加结果与预设数值相乘,所述第一加法单元用于将所述乘法单元输出的结果与所述第二子树对应的子累加结果相加,得到所述累加结果。
10.根据权利要求5-9任一所述的电路,其特征在于,所述多比特输入转换单元包括移位单元和第二加法单元,所述移位单元和所述第二加法单元用于循环执行如下操作:
将所述变长数据的最高比特位对应的累加结果输入所述移位单元,将移位后的累加结果与相邻的低比特位对应的累加结果输入所述第二加法单元,将相加后的累加结果输入所述移位单元,再次将移位后的累加结果与相邻的低比特位对应的累加结果输入所述第二加法单元,直到将所述变长数据的最低比特位对应的累加结果与移位后的累加结果输入所述第二加法单元,得到所述乘加结果。
11.根据权利要求5-10任一所述的电路,其特征在于,所述多比特输入转换单元包括目标数量个移位单元和第三加法单元,所述目标数量为所述变长数据包括的比特位数减一;
所述目标数量个移位单元分别用于对输入的累加结果进行对应位数的移位操作;
所述第三加法单元用于将所述目标数量个移位单元分别输出的移位后的累加结果相加,得到所述乘加结果。
12.根据权利要求6-11任一所述的电路,其特征在于,所述存算单元还包括模式选择单元,用于根据输入的模式选择信号选择所述电路当前的工作模式,所述工作模式包括普通读写模式和多比特乘加计算模式;
在所述普通读写模式下,所述地址译码器,还用于根据外部输入的写地址信号或读地址信号,从所述至少一个字线驱动器中选择目标字线驱动器;
所述数据读写接口,还用于基于所述写地址信号,向所选择的目标字线驱动器对应的各个计算存储单元包括的数据存储单元写入数据;或者,基于所述读地址信号,从所选择的目标字线驱动器对应的各个计算存储单元包括的数据存储单元读出数据。
13.根据权利要求5-12任一所述的电路,其特征在于,所述单比特乘法器包括或非门,所述或非门用于对取反后的权重数据包括的单比特位和取反后的变长数据包括的单比特位进行或非运算,得到单比特乘积数据。
CN202211123292.9A 2022-09-15 2022-09-15 变长输入的存内计算电路 Pending CN115495152A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211123292.9A CN115495152A (zh) 2022-09-15 2022-09-15 变长输入的存内计算电路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211123292.9A CN115495152A (zh) 2022-09-15 2022-09-15 变长输入的存内计算电路

Publications (1)

Publication Number Publication Date
CN115495152A true CN115495152A (zh) 2022-12-20

Family

ID=84467861

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211123292.9A Pending CN115495152A (zh) 2022-09-15 2022-09-15 变长输入的存内计算电路

Country Status (1)

Country Link
CN (1) CN115495152A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117519802A (zh) * 2024-01-08 2024-02-06 之江实验室 基于存算一体单元的数据处理装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117519802A (zh) * 2024-01-08 2024-02-06 之江实验室 基于存算一体单元的数据处理装置
CN117519802B (zh) * 2024-01-08 2024-04-30 之江实验室 基于存算一体单元的数据处理装置

Similar Documents

Publication Publication Date Title
CN112711394B (zh) 基于数字域存内计算的电路
US10936941B2 (en) Efficient data access control device for neural network hardware acceleration system
CN108564168B (zh) 一种对支持多精度卷积神经网络处理器的设计方法
WO2022037257A1 (zh) 卷积计算引擎、人工智能芯片以及数据处理方法
US20240220205A1 (en) Counter-based multiplication using processing in memory
CN112487750A (zh) 一种基于存内计算的卷积加速计算系统及方法
CN111459552B (zh) 一种内存中并行化计算的方法及装置
WO2023065701A1 (zh) 内积处理部件、任意精度计算设备、方法及可读存储介质
CN115495152A (zh) 变长输入的存内计算电路
US20210294608A1 (en) Processing in memory methods for convolutional operations
CN115879530B (zh) 一种面向rram存内计算系统阵列结构优化的方法
WO2023124371A1 (zh) 数据处理装置、方法、芯片、计算机设备及存储介质
CN113031912A (zh) 乘法器、数据处理方法、装置及芯片
CN113743046B (zh) 存算一体版图结构和数据拆分存算一体版图结构
CN111258544A (zh) 乘法器、数据处理方法、芯片及电子设备
CN109343826B (zh) 一种面向深度学习的可重构处理器运算单元
TWI749552B (zh) 內積計算裝置
CN113031916A (zh) 乘法器、数据处理方法、装置及芯片
Sonnino et al. DAISM: Digital Approximate In-SRAM Multiplier-based Accelerator for DNN Training and Inference
CN115221101B (zh) 用于优化片上系统的矩阵乘操作的方法和相关产品
CN111832717B (zh) 芯片及用于卷积计算的处理装置
US11842169B1 (en) Systolic multiply delayed accumulate processor architecture
CN118092855A (zh) 支持浮点数尾数乘法的存算一体乘法器及乘法运算方法
CN113838497A (zh) 可用于数据读取的精简化的存算一体电路
CN117369767A (zh) 基于全加器的存算架构及智能存算处理器

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