CN114675805A - 存储器中计算累加器 - Google Patents

存储器中计算累加器 Download PDF

Info

Publication number
CN114675805A
CN114675805A CN202210127624.4A CN202210127624A CN114675805A CN 114675805 A CN114675805 A CN 114675805A CN 202210127624 A CN202210127624 A CN 202210127624A CN 114675805 A CN114675805 A CN 114675805A
Authority
CN
China
Prior art keywords
bit
input
partial
weight
multiplication
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
CN202210127624.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.)
Taiwan Semiconductor Manufacturing Co TSMC Ltd
Original Assignee
Taiwan Semiconductor Manufacturing Co TSMC 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 Taiwan Semiconductor Manufacturing Co TSMC Ltd filed Critical Taiwan Semiconductor Manufacturing Co TSMC Ltd
Publication of CN114675805A publication Critical patent/CN114675805A/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/491Computations with decimal numbers radix 12 or 20.
    • G06F7/498Computations with decimal numbers radix 12 or 20. using counter-type accumulators
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/525Multiplying only in serial-serial fashion, i.e. both operands being entered serially
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/412Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger using field-effect transistors only
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/413Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
    • G11C11/417Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
    • G11C11/418Address circuits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Neurology (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)
  • Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
  • Monitoring And Testing Of Nuclear Reactors (AREA)

Abstract

本申请涉及存储器中计算累加器。存储器中计算(CIM)设备被配置为根据应用的类型确定至少一个输入,并且根据训练结果或用户的配置确定至少一个权重。CIM设备从输入的最高有效位(MSB)到输入的最低有效位(LSB)执行基于输入和权重的位串行乘法,以根据多个部分积获得结果。输入的第一位的第一部分和被左移一位,然后被与输入的第二位的第二部分积相加,以获得第二位的第二部分和。第二位是第一位之后的一位,并且结果由CIM设备输出。

Description

存储器中计算累加器
技术领域
本申请涉及存储器中计算的技术领域,并更具体地涉及存储器中计算累加器。
背景技术
本公开总体上涉及存储器内计算或存储器中计算(“CIM”),并且还涉及用于数据处理(例如乘法-累加运算,即“MAC”运算)的存储器阵列。存储器中计算或存储器内计算系统将信息存储在计算机的主随机存取存储器(RAM)中,并且以存储器单元级别执行计算,而不是对于每个计算步骤在主RAM和数据存储装置之间移动大量数据。由于当数据存储在RAM中时所存储的数据能被更快速地访问,因此存储器中计算允许数据得以被实时分析,从而在业务和机器学习应用中实现更快的报告和决策。目前正在努力提高存储器计算系统的性能。
发明内容
根据本申请的一方面,提供了一种计算方法,被配置为在存储器中计算(CIM)设备中执行位串行乘法,所述计算方法包括:根据应用的类型确定至少一个输入;根据训练结果或用户的配置确定至少一个权重;通过所述CIM设备从所述输入的最高有效位(MSB)到所述输入的最低有效位(LSB)执行基于所述输入和所述权重的位串行乘法,以根据多个部分积获得结果,其中,所述输入的第一位的第一部分和被左移一位,并且然后被与所述输入的第二位的第二部分积相加,以获得所述第二位的第二部分和,所述第二位是所述第一位之后的一位;以及通过所述CIM设备输出所述结果。
根据本申请的另一方面,提供了一种设备,包括:加法器;移位器,具有的输出端子能操作地连接到所述加法器的第一输入端子,所述移位器被配置为左移一位;第一寄存器,具有的输出端子能操作地连接到所述移位器的输入端子;第二寄存器,具有的输出端子能操作地连接到所述加法器的第二输入端子;乘法器,被配置为基于输入信号和权重信号执行位串行乘法以获得多个部分积;其中,所述第二寄存器的输入端子能操作以接收所述多个部分积中基于所述输入信号的最高有效位(MSB)的第一部分积;并且其中,所述第一寄存器的输入端子能操作以接收所述加法器的输出。
根据本申请的又一方面,提供了一种设备,包括:存储器阵列,存储权重信号;输入驱动器,被配置用于输出输入信号;乘法器,被配置用于从所述输入信号的最高有效位(MSB)到所述输入信号的最低有效位(LSB)执行所述输入信号和所述权重信号的位串行乘法以确定多个部分积;移位器,被配置用于将所述输入信号的第一位的第一部分和左移位一位;和加法器,被配置用于将经左移的第一部分和与所述输入信号的第二位的第二部分积相加,以获得所述第二位的第二部分和,其中,所述第二位是所述第一位之后的一位。
附图说明
在结合附图阅读时,可以通过下面的具体实施方式来最佳地理解本公开的各方面。要注意的是,根据行业的标准惯例,各种特征并未按比例绘制。事实上,为了讨论的清楚,各种特征的尺寸可能被任意地增大或减小。此外,作为本发明的实施例的示例的附图是说明性的,并不旨在限制。
图1是示出根据一些实施例的存储器中计算(CIM)设备的示例的框图。
图2是示出根据一些实施例的在图1的CIM设备中使用的SRAM存储器单元的示例的示意图。
图3是示出根据一些实施例的在图1的CIM设备中使用的存储器单元和非(NOR)门的示例的示意图。
图4是示出根据一些实施例的在图1的CIM设备中的SRAM存储器单元和耦合到存储器单元的NOR门的示例的示意图。
图5是示出根据一些实施例的在图1的CIM设备中使用的存储器单元和与(AND)门的示例的示意图。
图6是示出根据一些实施例的在图1的CIM设备中的SRAM存储器单元和耦合到存储器单元的AND门的示例的示意图。
图7是示出根据一些实施例的位串行乘法运算的框图。
图8是示出根据一些实施例的图7中所示的位串行乘法运算的其他方面的框图。
图9是示出根据一些实施例的方法的示例的流程图。
图10是示出根据一些实施例的图1中所示的CIM设备的其他方面的框图。
图11是示出根据一些实施例的位串行乘法运算的框图。
图12是示出根据一些实施例的图1中所示的CIM设备的其他方面的框图。
具体实施方式
下面的公开内容提供了用于实现所提供的主题的不同特征的许多不同的实施例或示例。以下描述了组件和布置的特定示例以简化本公开。当然,这些只是示例,并不旨在进行限制。例如,在下面的描述中在第二特征之上或上形成第一特征可以包括其中第一特征和第二特征以直接接触方式形成的实施例,还可以包括可以在第一特征和第二特征之间形成附加特征,使得第一特征和第二特征可以不直接接触的实施例。此外,本公开可以在各个示例中重复附图标记和/或字母。这种重复是为了简单和清楚的目的,并且其本身并不指示所讨论的各个实施例和/或配置之间的关系。
此外,本文中可以使用空间相关术语(例如,“之下”、“下方”、“下”、“上方”、“上”等),以易于描述图中所示的一个要素或特征相对于另外(一个或多个)要素或(一个或多个)特征的关系。这些空间相关术语旨在涵盖设备在使用或工作中除了图中所示朝向之外的不同朝向。装置可能以其他方式定向(旋转90度或处于其他朝向),并且本文中所用的空间相关描述符同样可能被相应地解释。
本公开总体上涉及存储器中计算(“CIM”)。应用CIM的示例是乘法-累加运算,即“MAC”运算。计算机人工智能“AI”使用深度学习技术,其中计算系统可以被组织为神经网络。神经网络涉及例如能够分析数据的多个互连的处理节点。神经网络计算“权重”以对新的输入数据执行计算。神经网络使用多层的计算节点,其中较深层基于由较高层执行的计算的结果来执行计算。
机器学习(ML)涉及可以通过经验并借助于数据的使用而自动改进的计算机算法。机器学习被视为人工智能的一部分。机器学习算法基于样本数据(称为“训练数据”)构建模型,以便做出预测或决策,而无需对其进行明确编程。
神经网络可以包括多个互连的处理节点,这些互连的处理节点能够分析数据以将输入与这样的“经训练的”数据进行比较。经训练的数据涉及对已知数据的属性进行计算分析,以开发用于比较输入数据的模型。应用AI和数据训练的一个示例是在对象识别中,其中系统分析许多(例如,数千或更多)图像的属性,以确定可用于执行统计分析以识别输入对象的模式。
如上所述,神经网络计算权重以对输入数据执行计算。神经网络使用多层的计算节点,其中较深层基于由较高层执行的计算的结果来执行计算。机器学习目前依赖于点积和向量绝对差的计算,通常通过对参数、输入数据和权重执行MAC运算来计算。大型和深度神经网络的计算通常涉及如此多的数据元素,以致于将它们存储在处理器缓存中是不实际的,因此它们通常被存储在存储器中。
因此,机器学习是计算密集型的,需要对许多不同的数据元素进行计算和比较。处理器内运算的计算速度比处理器与主存储器资源之间的数据传输速度快几个数量级。对于大多数实际系统来说,将所有数据置于更靠近处理器的缓存由于存储数据所需的存储器大小的原因而成本高昂。因此,数据传输成为AI计算的主要瓶颈。随着数据集的增加,计算系统用于移动数据的时间和功率/能量最终可能是实际执行计算所用时间和功率的多倍。
因此,CIM电路在存储器内本地地执行运算,而无需将数据发送到主机处理器。这可以减少存储器和主机处理器之间传输的数据量,从而实现更高的吞吐量和性能。数据移动的减少还降低了计算设备内整体数据移动的能耗。
根据一些公开的实施例,CIM设备包括存储器阵列,该存储器阵列具有按行和列排列的存储器单元。存储器单元被配置为存储权重信号,并且输入驱动器提供输入信号。乘法和累加(或乘法器-累加器)电路执行MAC运算,其中每个MAC运算计算两个数的乘积,并且将该乘积加到累加器(或加法器)。在一些实施例中,处理设备或专用MAC单元或设备可以包含MAC计算硬件逻辑,该MAC计算硬件逻辑包括在组合逻辑中实现的乘法器,后跟加法器和存储结果的累加器。累加器的输出可以反馈给加法器的输入端,以便在每个时钟周期,乘法器的输出被加到累加器。示例处理设备包括但不限于微处理器、数字信号处理器、专用集成电路和现场可编程门阵列。
图1是示出根据本公开的示例CIM设备100的框图。CIM存储器阵列110包括多个存储器单元,存储器单元被配置为存储权重信号W。CIM存储器阵列110可以用包括静态随机存取存储器(“SRAM”)在内的各种存储器设备来实现。在典型的SRAM设备中,在通过来自一个或多个字线(“WL”)的使能信号激活SRAM单元中的一个或多个存取晶体管时,经由一个或多个位线(“BL”)将数据写入SRAM单元以及从SRAM单元中读取数据。
图2是示出根据一些实施例的示例存储器单元112的电路图。存储器单元112包括但不限于六晶体管(6T)SRAM单元112。在一些实施例中,可以使用多于或少于六个晶体管来实现SRAM单元112。例如,在一些实施例中,SRAM单元112可以使用4T、8T或10T SRAM结构,并且在其他实施例中可以包括类似于存储器的位单元或建构单元。SRAM单元112包括由NMOS/PMOS晶体管对M1和M2形成的第一反相器、由NMOS/PMOS晶体管对M3和M4形成的第二反相器、以及访问晶体管/传输门M5和M6。
每个反相器被供电,例如,晶体管M2和M4中的每一个的第一端子耦合到电源VDD,而晶体管M1和M3中的每一个的第一端子耦合到基准电压VSS(例如,接地端)。一些数据作为节点Q处的电压电平被存储在SRAM单元112中,并且该数据可以经由位线BL被电路读取。对节点Q的访问由传输门晶体管M5控制。节点Qbar(QB)存储Q处的值的互补值(complement),例如,如果Q为“高”,QB将为“低”,并且该节点可以经由位线BLBar(BLB)被电路读取。对QB的访问由传输门晶体管M6控制。
传输门晶体管M5的栅极耦合到字线WL。传输门晶体管M5的第一源极/漏极(S/D)端子耦合到位线BL,并且传输门晶体管M5的第二S/D端子在节点Q处耦合到晶体管M1和M2的第二端子。类似地,传输门晶体管M6的栅极耦合到字线WL。传输门晶体管M6的第一S/D端子耦合到互补位线BLB,并且传输门晶体管M6的第二S/D端子在节点QB处耦合到晶体管M3和M4的第二端子。
返回到图1,CIM设备100还包括输入驱动器102和WL驱动器104。输入驱动器102驱动输入信号I,该输入信号I通过乘法电路114与存储在存储器阵列110中的权重W相乘。WL驱动器输出WL信号以激活所需行的存储器单元。存储器控制器120接收控制输入,并且向连接到存储器阵列110的位线BL、BLB的SRAM读取/写入(R/W)电路122提供控制信号,以便选择与存储的权重W相对应的适当位线BL、BLB(即列)。来自乘法电路114的输出信号被提供给部分和累加器电路124,该部分和累加器电路124将乘法电路110的部分和输出相加,如下将进一步讨论。
乘法电路114被配置为将输入信号I和权重W相乘。图3示出了乘法电路114为NOR门214的示例,该NOR门214接收来自存储器阵列112的权重信号W以及反相的选择信号SELB形式的输入信号I,以输出权重信号W和选择信号SELB的乘积P。图4示出了所公开的实施例的其他方面,其中存储器单元是如图2所示和上文所讨论的6T SRAM单元112,并且乘法电路114包括双输入NOR门214。NOR门214的一个输入端耦合到SRAM单元112的节点QB以接收反相的权重信号,而NOR门214的另一个输入端接收SELB信号。
图5示出了乘法电路114为AND门215的另一示例,该AND门215接收来自存储器阵列112的权重信号W以及选择信号SEL形式的输入信号I,以输出权重信号W和选择信号SEL的乘积P。图6示出了所公开的实施例的其他方面,其中存储器单元是如图2所示和上文所讨论的6TSRAM单元112,并且乘法电路114包括双输入AND门215。AND门215的一个输入端耦合到SRAM单元112的节点Q以接收权重信号,而AND门215的另一个输入端接收SEL信号。
在一些示例中,乘法电路114被配置为从输入的最高有效位到输入的最低有效位执行输入I和权重W的位串行乘法,从而产生多个部分积。这些部分积被输出到累加器124,其中与输入I的第一位相对应的第一部分积被左移一位,然后与输入I的第二位的第二部分积相加,其中第二位是在第一位之后的一位。这将产生第一部分和。
相比之下,常规的MAC运算从最低有效位(LSB)开始实施乘法运算。因此,产生了输入I的LSB的部分积,然后该部分积被左移以累加而得部分和。为每个输入位提供移位电路需要较大的芯片面积。此外,输入的长度可能受到移位电路的限制。
根据所公开的实施例,累加器124从乘法电路114接收部分积输入,其中第一接收输入是输入的最高有效位(MSB)与权重W相乘的部分积。例如,输入数据I可以由位0-N表示(即,N+1位输入,N>1),权重W由位0-X表示(即,X+1位权重,X>1)。位串行MAC运算从输入I的MSB(即I[N])开始。因此,根据I[N]×W[X:0]产生第一部分积。根据I[N-1]×W[X:0]产生第二部分积。在这样的实施例中,实现方式为:
第1周期I[N]×W[X:0]
第2周期I[N-1]×W[X:0]
第3周期I[N-2]×W[X:0]
第N+1周期I[0]×W[X:0]
这种实现方式的示例如图7所示,示出了输入I[N:0]和权重W[X:0],其中乘法周期300对应于输入位I[N:0]。输入I的每一位I[N:0]被串行地与权重W[X:0]相乘,从输入I的MSB(例如I[N])开始,一直进行到输入LSB I[0]。因此,如图8所示,在第一周期期间,输入I[N]的MSB与权重W[X:0]相乘以产生第一部分积310,在第二周期期间,下一位I[N-1]与权重W[X:0]相乘以产生第二部分积312,以此类推,直到第N+1周期,在第N+1周期中,输入I[0]的LSB与权重W[X:0]相乘以产生第N+1部分积314。如下文将进一步讨论的,然后部分积310-314通过累加器124被相加或累加。
图9是示出根据所公开的实施例的方法400的流程图。在操作410,例如,基于诸如机器学习、神经网络等AI应用来确定输入I。在操作412,例如,根据训练数据或用户的配置来确定权重W。如图7和图8的示例中所示,将输入和权重相乘。如上所述,执行位串行乘法,其中输入I的每一位与权重W相乘,产生部分积。更具体地,从输入I的最高有效位MSB到输入I的最低有效位LSB执行输入I和权重W的位串行乘法,从而生成多个部分积。
与上面讨论的示例一样,图9假设在操作410确定的输入数据I由位0-N表示,即I[N:0],并且在操作412确定的权重W由位0-X表示,即W[X:0]。最初,乘法周期i被设置为N。因此,位串行MAC运算从输入的MSB I[i]开始。在操作420,根据I[i]×W[X:0]产生第一部分积Partial-Product[i]。在操作422,通过将先前部分和左移一位(即,Partial-Sum[i+1]×21),并且将经左移的先前部分和与根据I[i]×W[X:0]确定的第第一部分积相加,来确定Partial-Sum[i]。
如果i>0,则i减小1(即i=i-1),并且方法400循环回到操作420。因此,在操作420,确定下一输入位I[i]的部分积。在操作422,通过将在操作420确定的先前部分和左移一位,并且将经左移的部分和与根据I[i]×W[X:0]确定的部分积相加来再次确定Partial-Sum[i]。重复操作420和422,直到i=0,即,在操作420确定输入I的LSB的部分积,并且在操作422确定对应的部分和。
当在操作422中确定了LSB(i=0)的部分和时,在操作424中,将与输入I的LSB相对应的部分和转换为总和Total-Sum[N],并且在操作426中输出总和Total-Sum[N]。
图10是示出CIM设备100的累加器124的实施例的框图。累加器124接收以MSB为开始的乘法电路112的部分积输出,并且累加器124实现图9中所示的操作422的左移位以及部分和确定。累加器124包括加法器240和移位器244,该移位器244具有的输出端可操作地连接到加法器240的第一输入端。移位器被配置为实现图9的操作424的左移位。第一寄存器242具有的输出端可操作地连接到移位器244的输入端,第二寄存器246具有的输出端可操作地连接到加法器240的第二输入端。
第二寄存器246接收乘法器114的部分积输出。如上所述,乘法电路114被配置为从输入I的MSB到LSB执行对输入I和权重W的位串行乘法,以输出部分积,这些部分积由第二寄存器246接收。因此,第二寄存器246最初在第一乘法周期i(i=N)期间接收与输入I的MSB乘以权重W相对应的部分积(即,如图9所示i=N)。初始部分积(Partial-Product[i]=I[i]×W[X:0];i=N)从第二寄存器246输出到加法器240,加法器240将输入I MSB的部分积输出到第一寄存器242。移位器244将部分和左移位一位(即,Partial-Sum[i]=Partial-Sum[i+1]×2+I[i]×W),并且将经左移位的部分和由移位器244输出到加法器240。
在下一个周期i-1期间,如图9的操作422所示,加法器240通过将由移位器244输出的经左移位的部分和与部分积I[i]×W[X:0]相加,来确定部分和。如图7和图8所示,重复此操作进行N+1个乘法周期。因此,如图9所示,当i=0时,加法器240根据图9的操作424和426,基于Total-Sum[N]=Partial-Sum[i]来输出总和。
因此,对于输入I[N:0]的每一位×W[X:0]的乘积(即每个部分积),从输入I的MSB到LSB,将每个部分和左移一位,然后将该部分和与下一位的部分积(即I[i-1]×W[X:0])相加。这根据下式有效地计算出总和:
总和=∑I[i]×W×2i;i=N~0
然而,通过首先确定输入I MSB的部分积,移位器244能够完成移位运算以便进行总和计算。相比之下,常规MAC实现方式(其从输入的LSB到MSB来确定部分积)可能需要多个移位器和相关电路以进行对应的多个移位运算,这取决于输入的长度。这进而使电路设计复杂化,需要额外的芯片空间,消耗额外的功率等,并可能导致有限的输入长度。
图7和图8示出了累加器124累加单个输入I的部分积的示例。在其他实现方式中,可以由输入激活驱动器102生成多个输入I。图11示出了多个输入I1-In各自乘以权重W[X:0]的这样一个实施例。
在图11中,多个输入I1[N:0]…In[N:0]中的各输入与权重W1[X:0]…Wn[X:0]相乘。乘法周期300对应于相应的输入I1…In的每一位[N:0]。从各个输入I1…In的MSB开始一直进行到输入LSB I[0],各个输入I1…In的每一位[N:0]串行地与权重W1[X:0]…Wn[X:0]相乘。因此,在第一周期期间,将各个输入I1…In的MSB与权重W1[X:0]…Wn[X:0]相乘以产生相应的部分积。在第二周期期间,将各个输入I1…In的下一位与对应的权重W1[X:0]…Wn[X:0]相乘以产生第二部分积,以此类推,直到第N+1周期(其中,输入I[0]的LSB与权重W[X:0]相乘,以产生第N+1部分积)。
图12示出了累加器124和乘法电路114的示例。在图11和图12的示例中,由乘法电路114对每个乘法周期中产生的部分积求和。乘法电路114可以包括例如用于对各个输入的部分积求和的加法器电路。然后,由乘法电路114将各部分积的和输出到累加器124。与图10的示例一样,图12中所示的累加器124接收乘法电路114的经求和的部分积输出,其中以与输入I1…In的MSB相对应的经求和的部分积作为开始。累加器124被配置为实现图9所示的操作422的左移位以及部分和确定。
移位器244具有的输出端可操作地连接到加法器240的第一输入端,并且移位器被配置为实现图9的操作424的左移位。第一寄存器242具有的输出端可操作地连接到移位器244的输入端,并且第二寄存器246具有的输出端可操作地连接到加法器240的第二输入端。第二寄存器246接收乘法器114的经求和的部分积输出。如上所述,乘法电路114被配置为从每个输入I1…In的MSB到LSB执行对各个输入I1…In和权重W的位串行乘法,以输出经求和的部分积,该经求和的部分积由第二寄存器246接收。因此,第二寄存器246最初接收与在第一乘法周期i(i=N)期间各输入I1…In的MSB与权重W相乘(即i=N,如图9所示)相对应的经求和的部分积。初始部分积(Partial-Product[i]=I[i]×W[X:0];i=N)从第二寄存器246输出到加法器240,加法器240将输入I MSB的部分积输出到第一寄存器242。移位器244将该部分积左移一位(即,Partial-Product[i]=I[i]×W[X:0]×21),并且经左移的部分积由移位器244输出到加法器240。
在下一个周期i-1期间,加法器240通过将由移位器244输出的经左移位的部分积与部分积I[i+1]×W[X:0]相加来确定部分和,如图9的操作422所示。如图11所示,重复此操作进行N+1个乘法周期。因此,如图9所示,当i=0时,加法器240根据图9的操作424和426,基于Total-Sum[N]=Partial-Sum[i]来输出总和。
因此,所公开的实施例包括一种计算方法,该方法被配置为在存储器中计算(CIM)设备中执行位串行乘法。CIM设备根据应用的类型接收至少一个输入,并且根据训练数据或用户的配置接收至少一个权重。CIM设备从输入的最高有效位(MSB)到输入的最低有效位(LSB)执行基于输入和权重的位串行乘法,以根据多个部分积获得结果。输入的第一位的第一部分和被左移一位,然后被与输入的第二位的第二部分积相加,以获得第二位的第二部分和。第二位是第一位之后的一位,并且结果由CIM设备输出。
根据其他方面,CIM设备包括加法器和移位器,该移位器具有的输出端子可操作地连接到加法器的第一输入端子。移位器被配置为左移一位。第一寄存器具有的输出端子可操作地连接到移位器的输入端子。第二寄存器具有的输出端子可操作地连接到加法器的第二输入端子。乘法器被配置为基于输入信号和权重信号执行位串行乘法以获得多个部分积。第二寄存器的输入端子可操作用于接收多个部分积中基于输入信号的最高有效位(MSB)的第一部分积。第一寄存器的输入端子可操作用于接收加法器的输出。
根据又一些其他公开的方面,CIM设备包括存储权重信号的存储器阵列。输入驱动器被配置为输出输入信号。乘法器被配置为从输入信号的MSB到输入信号的LSB执行输入信号和权重信号的位串行乘法以确定多个部分积。移位器被配置为将输入信号的第一位的第一部分和左移一位。加法器被配置为将经左移的第一部分和与输入信号的第二位的第二部分积相加,以获得第二位的第二部分积,第二位为第一位之后的一位。
下面提供一些示例。
示例1.一种计算方法,被配置为在存储器中计算(CIM)设备中执行位串行乘法,所述计算方法包括:
根据应用的类型确定至少一个输入;
根据训练结果或用户的配置确定至少一个权重;
通过所述CIM设备从所述输入的最高有效位(MSB)到所述输入的最低有效位(LSB)执行基于所述输入和所述权重的位串行乘法,以根据多个部分积获得结果,其中,所述输入的第一位的第一部分和被左移一位,并且然后被与所述输入的第二位的第二部分积相加,以获得所述第二位的第二部分和,所述第二位是所述第一位之后的一位;以及
通过所述CIM设备输出所述结果。
示例2.根据示例1所述的方法,其中,执行所述位串行乘法包括:
通过由乘法电路将所述输入的MSB I[N](N>0)与所述权重的每一位相乘,来确定所述第一位的第一部分积。
示例3.根据示例1所述的方法,其中,所述输入包括多个输入,并且其中,执行所述位串行乘法包括:
通过由乘法电路将所述多个输入中的各个输入的MSB与所述权重的每一位相乘,来确定针对所述第一位的多个第一部分积;以及
将所述多个第一部分积求和。
示例4.根据示例2所述的方法,其中,执行所述位串行乘法包括:
通过累加器电路将所述第一部分和左移一位;
通过由所述乘法电路将所述输入的下一位I[N-1]与所述权重的每一位相乘,来确定所述第二位的所述第二部分积。
示例5.根据示例4所述的方法,其中,执行所述位串行乘法包括:
通过所述累加器电路将经左移的第一部分和与所述第二部分积相加,以获得所述下一位I[N-1]的第一部分和。
示例6.根据示例5所述的方法,其中,执行所述位串行乘法包括:
通过所述累加器电路将所获得的所述下一位I[N-1]的第一部分和左移一位;
通过由所述乘法电路将所述输入的再下一位I[N-2]与所述权重的每一位相乘,来确定所述再下一位I[N-2]的第二部分积;以及
通过所述累加器电路将所获得的所述下一位I[N-1]的经左移的第一部分和与所述再下一位I[N-2]的第二部分积相加,以获得所述再下一位I[N-2]的第一部分和。
示例7.根据示例5所述的方法,其中,执行所述位串行乘法包括:
通过所述累加器电路将所获得的所述下一位I[N-1]的第一部分和左移一位;
通过由所述乘法电路将所述输入的LSB I[0]与所述权重的每一位相乘,来确定所述LSB I[0]的第二部分积;以及
通过所述累加器电路将所获得的所述下一位I[N-1]的经左移的第一部分和与所述LSB I[0]的第二部分积相加,以获得总和。
示例8.一种设备,包括:
加法器;
移位器,具有的输出端子能操作地连接到所述加法器的第一输入端子,所述移位器被配置为左移一位;
第一寄存器,具有的输出端子能操作地连接到所述移位器的输入端子;
第二寄存器,具有的输出端子能操作地连接到所述加法器的第二输入端子;
乘法器,被配置为基于输入信号和权重信号执行位串行乘法以获得多个部分积;
其中,所述第二寄存器的输入端子能操作以接收所述多个部分积中基于所述输入信号的最高有效位(MSB)的第一部分积;并且
其中,所述第一寄存器的输入端子能操作以接收所述加法器的输出。
示例9.根据示例8所述的设备,还包括第三寄存器,具有的输入端子能操作地连接到所述加法器的输出端。
示例10.根据示例8所述的设备,其中,所述乘法器包括非门。
示例11.根据示例8所述的设备,其中,所述乘法器包括与门。
示例12.根据示例8所述的设备,还包括被配置用于存储所述权重信号的存储器阵列。
示例13.根据示例12所述的设备,其中,所述存储器阵列包括多个SRAM单元。
示例14.根据示例8所述的设备,还包括被配置用于存储所述权重信号的存储器阵列。
示例15.根据示例8所述的设备,其中,所述乘法器被配置为通过将所述输入的MSBI[N](N>0)与所述权重信号的每一位相乘来确定所述多个部分积中的所述第一部分积。
示例16.根据示例15所述的设备,其中:
所述移位器被配置用于将基于所述多个部分积中的所述第一部分积的第一部分和左移一位;
所述乘法器被配置用于通过将所述输入信号的下一位I[N-1]与所述权重信号的每一位相乘来确定所述多个部分积中的第二部分积;并且
所述加法器被配置用于将经左移的第一部分和与所述多个部分积中的所述第二部分积相加,以获得所述下一位I[N-1]的第二部分和。
示例17.根据示例16所述的设备,其中:
所述移位器被配置用于将所获得的所述下一位I[N-1]的第二部分和左移一位;
所述乘法器被配置用于通过将所述输入信号的LSB I[0]与所述权重信号的每一位相乘来确定所述多个部分积中所述输入信号的LSB I[0]的的下一部分积;并且
所述加法器被配置为将所获得的所述下一位I[N-1]的经左移的第二部分和与所述多个部分积中所述LSB I[0]的下一部分积相加以获得总和。
示例18.一种设备,包括:
存储器阵列,存储权重信号;
输入驱动器,被配置用于输出输入信号;
乘法器,被配置用于从所述输入信号的最高有效位(MSB)到所述输入信号的最低有效位(LSB)执行所述输入信号和所述权重信号的位串行乘法以确定多个部分积;
移位器,被配置用于将所述输入信号的第一位的第一部分和左移位一位;
加法器,被配置用于将经左移的第一部分和与所述输入信号的第二位的第二部分积相加,以获得所述第二位的第二部分和,其中,所述第二位是所述第一位之后的一位。
示例19.根据示例18所述的设备,还包括:
第一寄存器,具有输出端子和输入端子,所述输出端子能操作地连接到所述移位器的输入端子,所述输入端子能操作地连接到所述加法器的输出端;
第二寄存器,具有的输出端子能操作地连接到所述加法器的第二输入端子,其中,所述第二寄存器的输入端子能操作地连接到所述乘法器的输出端子。
示例20.根据示例19所述的设备,还包括第三寄存器,具有的输入端子能操作地连接到所述加法器的输出端子。
本公开概述了若干实施例的特征,以使本领域技术人员可以更好地理解本公开的各方面。本领域技术人员应当理解,他们可以容易地使用本公开作为基础,用于设计或者修改其他工艺和结构,以实现与本文引入的实施例相同的目的和/或达到与本文引入的实施例相同的优点。本领域技术人员还应当认识到,这些等同构造并不脱离本公开的精神和范围,并且他们可以在不脱离本公开的精神和范围的情况下在本文中进行各种改变、替换和变更。

Claims (10)

1.一种计算方法,被配置为在存储器中计算(CIM)设备中执行位串行乘法,所述计算方法包括:
根据应用的类型确定至少一个输入;
根据训练结果或用户的配置确定至少一个权重;
通过所述CIM设备从所述输入的最高有效位(MSB)到所述输入的最低有效位(LSB)执行基于所述输入和所述权重的位串行乘法,以根据多个部分积获得结果,其中,所述输入的第一位的第一部分和被左移一位,并且然后被与所述输入的第二位的第二部分积相加,以获得所述第二位的第二部分和,所述第二位是所述第一位之后的一位;以及
通过所述CIM设备输出所述结果。
2.根据权利要求1所述的方法,其中,执行所述位串行乘法包括:
通过由乘法电路将所述输入的MSB I[N](N>0)与所述权重的每一位相乘,来确定所述第一位的第一部分积。
3.根据权利要求1所述的方法,其中,所述输入包括多个输入,并且其中,执行所述位串行乘法包括:
通过由乘法电路将所述多个输入中的各个输入的MSB与所述权重的每一位相乘,来确定针对所述第一位的多个第一部分积;以及
将所述多个第一部分积求和。
4.根据权利要求2所述的方法,其中,执行所述位串行乘法包括:
通过累加器电路将所述第一部分和左移一位;
通过由所述乘法电路将所述输入的下一位I[N-1]与所述权重的每一位相乘,来确定所述第二位的所述第二部分积。
5.根据权利要求4所述的方法,其中,执行所述位串行乘法包括:
通过所述累加器电路将经左移的第一部分和与所述第二部分积相加,以获得所述下一位I[N-1]的第一部分和。
6.根据权利要求5所述的方法,其中,执行所述位串行乘法包括:
通过所述累加器电路将所获得的所述下一位I[N-1]的第一部分和左移一位;
通过由所述乘法电路将所述输入的再下一位I[N-2]与所述权重的每一位相乘,来确定所述再下一位I[N-2]的第二部分积;以及
通过所述累加器电路将所获得的所述下一位I[N-1]的经左移的第一部分和与所述再下一位I[N-2]的第二部分积相加,以获得所述再下一位I[N-2]的第一部分和。
7.根据权利要求5所述的方法,其中,执行所述位串行乘法包括:
通过所述累加器电路将所获得的所述下一位I[N-1]的第一部分和左移一位;
通过由所述乘法电路将所述输入的LSB I[0]与所述权重的每一位相乘,来确定所述LSBI[0]的第二部分积;以及
通过所述累加器电路将所获得的所述下一位I[N-1]的经左移的第一部分和与所述LSBI[0]的第二部分积相加,以获得总和。
8.一种设备,包括:
加法器;
移位器,具有的输出端子能操作地连接到所述加法器的第一输入端子,所述移位器被配置为左移一位;
第一寄存器,具有的输出端子能操作地连接到所述移位器的输入端子;
第二寄存器,具有的输出端子能操作地连接到所述加法器的第二输入端子;
乘法器,被配置为基于输入信号和权重信号执行位串行乘法以获得多个部分积;
其中,所述第二寄存器的输入端子能操作以接收所述多个部分积中基于所述输入信号的最高有效位(MSB)的第一部分积;并且
其中,所述第一寄存器的输入端子能操作以接收所述加法器的输出。
9.根据权利要求8所述的设备,还包括第三寄存器,具有的输入端子能操作地连接到所述加法器的输出端。
10.一种设备,包括:
存储器阵列,存储权重信号;
输入驱动器,被配置用于输出输入信号;
乘法器,被配置用于从所述输入信号的最高有效位(MSB)到所述输入信号的最低有效位(LSB)执行所述输入信号和所述权重信号的位串行乘法以确定多个部分积;
移位器,被配置用于将所述输入信号的第一位的第一部分和左移位一位;
加法器,被配置用于将经左移的第一部分和与所述输入信号的第二位的第二部分积相加,以获得所述第二位的第二部分和,其中,所述第二位是所述第一位之后的一位。
CN202210127624.4A 2021-02-19 2022-02-11 存储器中计算累加器 Pending CN114675805A (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US202163151328P 2021-02-19 2021-02-19
US63/151,328 2021-02-19
US202163162818P 2021-03-18 2021-03-18
US63/162,818 2021-03-18
US17/558,105 US20220269483A1 (en) 2021-02-19 2021-12-21 Compute in memory accumulator
US17/558,105 2021-12-21

Publications (1)

Publication Number Publication Date
CN114675805A true CN114675805A (zh) 2022-06-28

Family

ID=82071444

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210127624.4A Pending CN114675805A (zh) 2021-02-19 2022-02-11 存储器中计算累加器

Country Status (5)

Country Link
US (1) US20220269483A1 (zh)
KR (1) KR20220118924A (zh)
CN (1) CN114675805A (zh)
DE (1) DE102022100920A1 (zh)
TW (1) TWI784879B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220244916A1 (en) * 2021-01-29 2022-08-04 Taiwan Semiconductor Manufacturing Company, Ltd. Compute in memory
KR20240041036A (ko) * 2022-09-22 2024-03-29 삼성전자주식회사 메모리 프로세서 연산 방법 및 장치
US20240119562A1 (en) * 2022-10-11 2024-04-11 Samsung Electronics Co., Ltd. Least significant bit (lsb) information preserved signal interpolation with low bit resolution processors

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10748603B2 (en) * 2018-09-28 2020-08-18 Intel Corporation In-memory multiply and accumulate with global charge-sharing
US11048434B2 (en) * 2018-09-28 2021-06-29 Intel Corporation Compute in memory circuits with time-to-digital computation
US10877752B2 (en) * 2018-09-28 2020-12-29 Intel Corporation Techniques for current-sensing circuit design for compute-in-memory
US11145339B2 (en) * 2019-05-31 2021-10-12 Taiwan Semiconductor Manufacturing Company, Ltd. Device and method for computing-in-memory

Also Published As

Publication number Publication date
US20220269483A1 (en) 2022-08-25
KR20220118924A (ko) 2022-08-26
DE102022100920A1 (de) 2022-08-25
TW202234298A (zh) 2022-09-01
TWI784879B (zh) 2022-11-21

Similar Documents

Publication Publication Date Title
CN114675805A (zh) 存储器中计算累加器
KR101686827B1 (ko) 인공 신경망의 뉴로모픽 하드웨어 구현 방법
US11966714B2 (en) Ternary in-memory accelerator
Jain et al. TiM-DNN: Ternary in-memory accelerator for deep neural networks
US20230297819A1 (en) Processor array for processing sparse binary neural networks
US20220244916A1 (en) Compute in memory
US10853066B1 (en) Memory processing units and methods of computing DOT products including zero bit skipping
TWI815312B (zh) 記憶體裝置、記憶體內計算裝置及方法
CN114723031B (zh) 一种计算装置
TWI771014B (zh) 記憶體電路及其操作方法
US11996137B2 (en) Compute in memory (CIM) memory array
US20230161557A1 (en) Compute-in-memory devices and methods of operating the same
KR20190114208A (ko) 저전력 및 고속 연산을 위한 dram용 비트와이즈 컨볼루션 회로
US11853596B2 (en) Data sequencing circuit and method
CN220773595U (zh) 可重配置处理电路以及处理核心
US20220398067A1 (en) Multiply-accumlate device
US20230418600A1 (en) Non-volatile memory die with latch-based multiply-accumulate components
US20230131308A1 (en) Memory devices, computing devices, and methods for in-memory computing
Lee et al. ReQUSA: A novel ReRAM-based hardware accelerator architecture for high-speed quantum computer simulation
Rashed et al. Path-Based Processing using In-Memory Systolic Arrays for Accelerating Data-Intensive Applications
JP2024013205A (ja) インメモリコンピューティングのためのメモリ装置及びその動作方法
CN115394337A (zh) 一种存内计算电路及方法
CN110660417A (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