CN117636956A - 存储器内计算(imc)电路和设备、以及神经网络设备 - Google Patents

存储器内计算(imc)电路和设备、以及神经网络设备 Download PDF

Info

Publication number
CN117636956A
CN117636956A CN202310943369.5A CN202310943369A CN117636956A CN 117636956 A CN117636956 A CN 117636956A CN 202310943369 A CN202310943369 A CN 202310943369A CN 117636956 A CN117636956 A CN 117636956A
Authority
CN
China
Prior art keywords
value
imc
memory
input
circuit
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
CN202310943369.5A
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics 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
Priority claimed from US18/351,039 external-priority patent/US20240069867A1/en
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN117636956A publication Critical patent/CN117636956A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/419Read-write [R-W] circuits
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Memory System (AREA)

Abstract

提供存储器内计算(IMC)电路和设备、以及神经网络设备。所述存储器内计算(IMC)电路包括:多个存储器存储体,每个存储器存储体包括位单元和运算器,位单元被配置为存储权重值,运算器被配置为接收输入值,运算器与位单元连接,使得运算器在接收到输入值时输出输入值与权重值之间的逻辑运算结果;以及逻辑门,被配置为接收所述多个存储器存储体中的每个的逻辑运算结果。

Description

存储器内计算(IMC)电路和设备、以及神经网络设备
本申请要求于2022年8月30日在韩国知识产权局提交的第10-2022-0109261号韩国专利申请、于2023年7月18日在韩国知识产权局提交的第10-2023-0093290号韩国专利申请和于2023年7月12日提交的第18/351,039号美国专利申请的权益,所述专利申请的全部公开出于所有目的通过引用包含于此。
技术领域
下面的描述涉及用于存储器内计算(IMC)的方法和设备。
背景技术
通过机器学习和/或深度学习训练的各种类型的神经网络(NN)可在许多应用领域中使用,以提供关于例如准确度、速度和/或能量效率的高性能。实现NN的机器学习和推断的算法通常需要非常大的量的计算。然而,学习和推断算法可通过许多较不复杂的运算(诸如例如,使用两个向量的点乘和它们的值的累加和的乘法累加(MAC)运算)的处理而被执行。较不复杂的运算(诸如,MAC运算)可通过存储器内计算来实现。
发明内容
提供本发明内容来以简要的形式介绍在以下具体实施方式中进一步描述的构思的选择。本发明内容不意在确定要求保护的主题的关键特征或必要特征,并且不意在用作确定要求保护的主题的范围的帮助。
在一个总体方面,一种存储器内计算(IMC)电路,包括:多个存储器存储体,每个存储器存储体包括位单元和运算器,位单元被配置为存储权重值,运算器被配置为接收输入值,运算器与位单元连接,使得运算器在接收到输入值时输出输入值与权重值之间的逻辑运算结果;以及逻辑门,被配置为接收所述多个存储器存储体中的每个的逻辑运算结果。
所述多个存储器存储体中的每个的逻辑运算结果可以是NAND。
逻辑门可以是NAND门。
逻辑门可输出在所述多个存储体之中选择的存储器存储体的权重值与输入值之间的乘法结果。
没有被选择的存储器存储体中的每个可接收输入值“0”。
所述IMC电路还可包括:加法器,连接到逻辑门。
运算器可包括:相应的多个晶体管,被配置为输出与逐位乘法运算的结果对应的信号。
运算器可包括包含第一晶体管和第二晶体管的双晶体管(2T)电路,输入值可被施加到第一晶体管的第一栅极端子和第二晶体管的第二栅极端子,并且穿过第一栅极端子的第一晶体管的输出值可连接到穿过第二栅极端子的第二晶体管的输出值,从而输出逻辑运算结果。
基于存储在位单元中的权重值的值可被施加到第一晶体管的漏极端子,并且第一晶体管的源极端子可经由第二晶体管的漏极端子连接到逻辑门的输入端子。
第一晶体管可包括N型金属氧化物半导体(NMOS)晶体管,并且第二晶体管可包括P型金属氧化物半导体(PMOS)晶体管。
运算器可包括包含传输门和第三晶体管的三晶体管(3T)电路,输入值可被施加到传输门的使能端子和第三晶体管的第三栅极端子,并且传输门的输出值和穿过第三栅极端子的第三晶体管的输出值中的每个可连接到门逻辑电路的输入,从而输出逻辑运算结果。
逻辑门可被配置为:根据输入值是否被施加到运算器,将与位单元对应的逻辑运算结果传送到加法器。
所述IMC电路可被集成到从包括以下各项的组中选择的至少一个装置中:移动装置、移动计算装置、移动电话、智能电话、个人数字助理、固定位置终端、平板计算机、计算机、可穿戴装置、膝上型计算机、服务器、音乐播放器、视频播放器、娱乐单元、导航装置、通信装置、全球定位系统(GPS)装置、电视、调谐器、汽车、车辆部件、航空电子系统、无人机、多轴飞行器、以及医疗装置。
在一个总体方面,一种神经网络设备,包括IMC电路,所述设备包括:阵列电路,包括IMC电路;以及控制器,被配置为根据时钟信号将与所述神经网络设备的输入信号对应的第二值输入到所述IMC电路中的每个,并且控制所述多个IMC电路。所述IMC电路中的每个包括多个存储体存储体,每个存储器存储体包括位单元和运算器,位单元被配置为存储权重,运算器被配置为接收输入值,运算器连接到位单元,使得运算器在接收到输入值时输出输入值与权重值之间的逻辑运算结果;以及逻辑门,被配置为接收所述多个存储器存储体中的每个的逻辑运算结果。
所述多个存储器存储体中的每个的逻辑运算结果可以是NAND。
逻辑门可以是NAND门。
控制器可包括以下中的任何一个或任何组合:输入特征图(IFM)缓冲器,被配置为存储包括输入值的输入特征图;控制电路,被配置为控制输入值是否被施加到所述多个IMC电路;以及读写(RW)电路,被配置为读取或写入权重值。
在一个总体方面,一种IMC设备包括:存储器存储体,每个存储器存储体包括相应的位单元单位;每个位单元单位包括位单元和运算器,其中,没有位单元共享同一运算器;逻辑门,被配置为接收相应的位单元单位的运算器的输出;以及加法器,被配置为接收逻辑门的输出以执行乘法累加(MAC)运算的至少一部分。
相应的位单元单位中的每个的输出可连接到逻辑门,并且位单元中的每个可被配置为存储相应的存储值,其中,位单元单位连接到相应的输入线,相应的输入线被配置为将相应的输入值提供给位单元单位,其中,所述IMC设备被配置为使得提供给位单元单位的输入值选择位单元单位中的哪个是由其运算器对其存储的值执行的运算的目标。
不是运算的目标的位单元单位的存储值可不影响逻辑门的输出。
根据下面的具体实施方式、附图和权利要求,其他特征和方面将是清楚的。
附图说明
图1示出根据一个或多个实施例的其运算可由存储器内计算(IMC)电路执行的神经网络的示例。
图2A至图2D示出根据一个或多个实施例的示例IMC电路结构。
图3示出根据一个或多个实施例的包括四个存储器存储体的IMC电路的示例操作。
图4示出根据一个或多个实施例的示例IMC电路。
图5A和图5B示出根据一个或多个实施例的由两个晶体管组成的IMC电路的示例运算。
图6A和图6B示出根据一个或多个实施例的选择存储器存储体的IMC电路的示例。
图7示出根据一个或多个实施例的由三个晶体管组成的IMC运算器电路的示例运算。
图8示出根据一个或多个实施例的由三个晶体管组成的IMC运算器电路的运算的另一示例。
图9示出根据一个或多个实施例的包括IMC电路的神经网络设备的示例。
图10示出根据一个或多个实施例的包括神经网络设备的电子系统的示例。
图11示出根据一个或多个实施例的对IMC电路进行操作的方法的示例。
贯穿附图和具体实施方式,除非另外描述或提供,否则相同或相似的附图参考标号将被理解为表示相同或类似的元件、特征和结构。附图可不按比例,并且为了清楚、说明和方便,附图中的元件的相对大小、比例和描绘可被夸大。
具体实施方式
提供下面的具体实施方式以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,在理解本申请的公开之后,在此描述的方法、设备和/或系统的各种改变、修改和等同物将是清楚的。例如,在此描述的操作顺序仅是示例,并不限于在此阐述的那些顺序,而是除了必须以特定次序发生的操作之外,可如在理解本申请的公开之后将是清楚的那样被改变。此外,为了更加清楚和简明,在理解本申请的公开之后已知的特征的描述可被省略。
在此描述的特征可以以不同的形式被实现,而不应被解释为限于在此描述的示例。相反,在此描述的示例已被提供,以仅示出在理解本申请的公开之后将是清楚的实现在此描述的方法、设备和/或系统的许多可行方式中的一些可行方式。
在此使用的术语仅用于描述各种示例,并且不用于限制公开。除非上下文此外清楚地指示,否则单数形式也意在包括复数形式。如在此使用的,术语“和/或”包括相关联的所列项中的任何一个和任何两个或更多个的任何组合。作为非限制性示例,术语“包含”、“包括”和“具有”说明存在陈述的特征、数量、操作、构件、元件和/或它们的组合,但不排除存在或添加一个或多个其他特征、数量、操作、构件、元素和/或它们的组合。
贯穿说明书,当组件或元件被描述为“连接到”、“结合到”或“接合到”另一组件或元件时,该组件或元件可直接“连接到”、“结合到”或“接合到”该另一组件或元件,或者可合理地存在介于其间的一个或多个其他组件或元件。当组件或元件被描述为“直接连接到”、“直接结合到”或“直接接合到”另一组件或元件时,可不存在介于其间的其他组件或元件。类似地,例如“在……之间”和“紧接在……之间”以及“与……邻近”和“与……紧邻”的表述也可如前所述来解释。
尽管在此可使用术语(诸如“第一”、“第二”和“第三”、或A、B、(a)、(b)等)以描述各种构件、组件、区域、层或部分,但是这些构件、组件、区域、层或部分不应被这些术语限制。这些术语中的每个不用于定义例如相应的构件、组件、区域、层或部分的本质、次序或序列,而仅用于将相应的构件、组件、区域、层或部分与其他构件、组件、区域、层或部分区分开。因此,在不脱离示例的教导的情况下,在此描述的示例中所称的第一构件、第一组件、第一区域、第一层或第一部分也可被称为第二构件、第二组件、第二区域、第二层或第二部分。
除非另有定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与由本公开所属领域的普通技术人员通常理解以及基于对本申请的公开的理解的含义相同的含义。除非在此明确地如此定义,否则术语(诸如,在通用词典中定义的术语)应被解释为具有与它们在相关领域和本申请的公开的上下文中的含义一致的含义,并且不应被理想化或过于形式化地解释。在此关于示例或实施例的术语“可”的使用(例如,关于示例或实施例可包括或实现什么)表示存在包括或者实现这样的特征的至少一个示例或实施例,而全部示例不限于此。
图1示出根据一个或多个实施例的其运算可由存储器内计算(IMC)电路执行的神经网络的示例。参照图1,其运算可由IMC电路执行的神经网络110被示出。
IMC电路或装置可具有允许运算直接在存储数据的存储器内被执行的计算架构。IMC装置可用作存储器装置和计算(运算)装置二者。关于存储器功能,IMC装置具有通常是动态的(尽管不是唯一的)存储器(即,存储器电路系统),外部数据可被写入并存储在存储器中,并且存储器可从外部被读取并且还在可在内部(就地)被用于由IMC装置的计算功能进行的计算(运算)。关于计算(运算)功能,IMC装置还具有对就地的(即,如存储在存储器中的)数据执行运算(例如,MAC运算)并且在外部输出这样的计算的结果的计算电路系统或运算电路系统。例如,针对许多应用,IMC装置能够超过由冯诺依曼架构装置的存储器与算术单元(例如,处理器)之间的频繁数据移动导致的性能和功率限制。根据运算将在哪个域中被执行,IMC电路通常是两类(即,模拟IMC电路和数字IMC电路)中的一类。模拟IMC电路可例如在模拟域(诸如,电流、电荷、时间等)中执行运算。数字IMC电路可使用逻辑电路来在数字域中执行运算。以下的示例描述数字IMC电路。
IMC电路可加速对于人工智能(AI)学习和推断而言非常常见的矩阵运算和/或对多个乘法运算相加的乘法累加(MAC)运算。用于神经网络110的学习或推断的MAC运算可通过存储器阵列130来执行,存储器阵列130包括IMC电路中的存储器装置的位单元。在下文中,为了描述的方便,神经网络110包括全连接层的示例将被描述,但是实施方式不限于此。神经网络110可以是包括卷积层的卷积神经网络。IMC电路可通过经由存储器阵列的运算功能执行相应的MAC运算来实现神经网络110的机器学习和推断,存储器阵列包括位单元和运算器。
神经网络110可以是例如包括两个或更多个隐藏层的深度神经网络(DNN)(即,n层神经网络)。神经网络110可包括输入层(层1)、两个隐藏层(层2和层3)和输出层(层4);神经网络110仅是示例,并且在此描述的实施例不限于任何特定类型或配置的神经网络。例如,当神经网络110用DNN架构来实现时,神经网络110可包括可处理有效信息的更多数量的层,并且因此可比具有单个层的神经网络处理更复杂的数据集。尽管神经网络110在图1中被示出为包括四层,但这仅是示例,并且神经网络110可包括更少或更多的层或通道。也就是说,神经网络110可包括与在图1中示出的结构不同的各种结构的层。
包括在神经网络110中的层中的每个可包括相应的多个节点115。节点有时也被称为神经元、处理元件(PE)、单元、通道或其他类似的术语。在图1中示出的示例神经网络110包括例如包含三个节点的输入层、分别包含五个节点的两个隐藏层、以及包含三个节点的输出层。包括在神经网络110的层中的每个中的节点115可彼此连接以处理数据。例如,一个节点可从其他节点接收数据以执行运算,并且可将运算的结果输出到其他节点。
一个层的节点115可通过可具有相应的权重w的连接来连接到另外的层的节点。例如,一个节点的输出o1可基于(i)从连接到节点的前一层的其他节点传播的输入值(例如,i1、i2、i3、i4、i5)以及(ii)到节点的连接的权重w11、w21、w31、w41和w51而被确定。
例如,L个输出值之中的第l输出ol可由以下的等式1表示。在该示例中,L可以是大于或等于“1”的整数,并且l可以是大于或等于“1”且小于或等于“L”的整数。
等式1
在等式1中,ik表示P个输入之中的第k输入,并且wkl表示在第k输入与第l输出之间设置的权重。P是大于或等于“1”的整数,并且k是大于或等于“1”且小于或等于“P”的整数。
换言之,神经网络110中的节点115之间的输入和输出可被表示为输入i与权重w之间的加权和。加权和运算可被实现为多个输入与多个权重之间的乘法运算和迭代累加运算,并且也可被称为“MAC运算”。由于MAC运算使用提供有运算功能的存储器(例如,执行计算或执行运算功能的电路系统)而被执行,因此被配置为执行MAC运算的电路可被称为“IMC电路”。
神经网络110可以例如基于输入数据(例如,i1、i2、i3、i4、i5)在层中执行加权和运算,并且基于执行运算的结果(例如,o1、o2、o3、o4、o5)生成输出数据(例如,u1、u2、u3)。
图2A、图2B、图2C和图2D示出包括IMC电路的IMC宏(macro)的示例结构。参照图2A,IMC宏200可包括写入字线(WWL)驱动器210、IMC电路220、加法器230、累加器240、输入驱动器(或读取字线(RWL)驱动器)250、存储器控制器260和写入位线(WBL)驱动器270。IMC宏200可以是例如如图2A中所示的64kb SRAM IMC宏,但是不限于此。
如接下来所述,IMC电路(例如,IMC电路220)可包括位单元电路(例如,SRAM位单元电路225),并且每个位单元电路可具有位单元单位(bit cell unit)(例如,位单元单位223a至223d)。每个位单元电路的位单元单位可被包括在IMC电路的相应的存储器存储体中(例如,位单元单位223a至223d可分别被包括在Bank0至Bank3中)。每个位单元单位可包括位单元和运算器(例如,位单元单位223a可包括位单元221和运算器222)。IMC电路的位单元电路也可具有相应的门逻辑电路(例如,SRAM位单元电路225可具有相应的门逻辑电路227)。位单元电路的位单元单位可分别连接到与位单元电路对应的门逻辑电路(例如,位单元单位223a至223d可连接到门逻辑电路227)。
如上所提及的,IMC电路220可包括门逻辑电路227和SRAM位单元电路225,SRAM位单元电路225包括位单元(例如,位单元221),位单元具有布置在相应的存储器存储体中的相应的运算器;运算器(例如,运算器222)输出与对相应的位单元中的每个进行运算的运算结果对应的信号。例如,图2C示出在Bank0中分别具有位单元221-0至221-3的四个SRAM位单元电路。也就是说,位单元电路可各自被包括在4个存储器存储体(诸如,存储器存储体Bank0、存储器存储体Bank1、存储器存储体Bank2和存储器存储体Bank3)中。与相同的存储器存储体(例如,Bank0)对应的位单元单位可接收相同的输入值。
如上所提及的,例如,在SRAM位单元电路225中,与一个存储器存储体对应的一个位单元221和一个运算器222(其输出与所述一个位单元221对应的运算结果)可被称为“位单元单位223”,因为它是SRAM位单元电路225的基本存储和运算单位。一个位单元221可具有例如用于存储位值的8晶体管(8T)SRAM单元结构。一个运算器222可具有例如用于执行运算的双晶体管(2T)电路。位单元单位223可具有例如总共10个晶体管(10T)的SRAM单元结构,其中,双晶体管(2T)电路的运算器222结合到具有8晶体管(8T)SRAM单元结构的位单元221。运算器222可以是例如通用逻辑乘法器或传输晶体管逻辑。门逻辑电路227可将与“与多个存储器存储体对应的位单元221之中的属于用于乘法累加(MAC)运算的目标存储器存储体的位单元中的每个”对应的运算结果传送到加法器230。
在下文中,为了便于描述,“RWL”和“WWL”简要地被表示为“WL”(字线),并且“WWL驱动器”和“RWL驱动器”简要地被表示为“WL驱动器”(字线驱动器)。此外,“WBL”简要地被表示为“BL”。
在IMC宏200中,全部数据被表示为数字逻辑值“0”和“1”的数字运算可被执行,并且输入数据201、权重203和输出数据205可具有二进制格式。例如,输入数据201和权重203可通过激活函数(fact)被转换为输出数据205。参照图2A至图2D描述的组件可被实现为数字逻辑电路。
RWL可以是输入数据201被施加到的路径,并且因此输入驱动器250也可用作RWL驱动器。输入驱动器250可传送将对其执行IMC电路220的运算(例如,乘法运算或卷积运算)的输入数据201(即,外部运算数(operand))。RWL信号可基于输入数据201的输入值被确定。输入数据201可以是具有多位(multi-bit)输入值或单个位(single-bit)输入值的数字数据。
通过输入驱动器250读取的输入数据201可通过编码(ENC)块255被转换为IMC电路220的输入信号。ENC块255可将用于在多个存储器存储体之中选择用于MAC运算的目标存储器存储体的信号与转换后的输入信号一起提供给IMC电路220。参照图2B更详细地描述输入驱动器250的操作。此外,以下参照图2C更详细地描述运算在存储器存储体中被执行的处理,并且以下参照图2D更详细地描述将由WBL驱动器270读取的数据(例如,权重值或输入值)写入存储器存储体(位单元)的处理。
图2B示出由输入驱动器250读取的输入数据通过ENC块255被输入到IMC电路220的处理的示例。例如,当IMC宏200是如图2A中所示的64kb SRAM IMC宏时,输入驱动器250可读取64个输入数据(诸如,IN[63:0])。64个输入数据中的每个可由4位组成。输入驱动器250可顺序地将由4位组成的输入数据201(例如,“0011 0100 1010”)一次一位地输入到ENC块255。ENC块255可根据2位控制信号(例如,Bank0的“00”或Bank 2的“10”)将输入数据201(例如,“0011 0100 1010”)传送到4个存储器存储体中的一个。4个存储器存储体中的每个可与相应的位单元对应。
当第一存储器存储体(Bank0)将被用作运算器(即,是目标存储器存储体)时,IMC宏200可将2位控制信号“00”施加到ENC块255。当2位控制信号“00”被施加到ENC块255时,ENC块255可通过连接到第一存储器存储体(Bank0)的第一输出(例如,O0),顺序地将输入数据(例如,“00110100 1010”)逐位地提供给位单元单位。
当第二存储器存储体(Bank1)将被用作运算器时,IMC宏200可将2位控制信号“01”施加到ENC块255,而ENC块255可经由连接到第二存储器存储体(Bank1)的第二输出(O1)将相同的输入数据提供给第二存储器存储体(Bank1)的位单元单位。
当第三存储器存储体(Bank2)将被用作运算器时,IMC宏200可将控制信号“10”施加到ENC块255,ENC块255可经由连接到第三存储器存储体(Bank2)的第三输出(O2)将相同的输入数据提供给第三存储器存储体(Bank2)的位单元单位。
当第四存储器存储体(Bank3)将被用作运算器时,IMC宏200可将控制信号“11”施加到ENC块255,ENC块255经由连接到第四存储器存储体(Bank3)的第四输出(O3)将输入数据输出到第四存储器存储体(Bank3)。
在每种情况下,无论ENC块255的哪个输出(例如,O0)被控制信号激活以将输入数据提供给相应的目标存储器存储体/选择的存储器存储体(例如,Bank0),ENC块255导致其他输出(例如,O1、O2和O3)将“0”输出到其他(未选择的/非目标的)存储器存储体。这样,IMC宏的门逻辑电路的输出仅取决于选择的存储器存储体的运算器的相应的运算输出(如对输入位和选择的存储器存储体的位单元中的位进行运算)。
图2C示出当由输入驱动器250读取的输入数据201被传送到SRAM位单元电路225的存储器存储体时运算在每个存储器存储体中被执行的处理的示例。例如,如以上参照图2B所述,当控制信号“00”被施加到ENC块255时,ENC块255可顺序地将输入数据(例如,“00110100 1010”)逐位地提供给与IMC电路220中的第一存储器存储体(Bank0)对应的位单元单位。ENC块255可将“0”提供给其余的存储器存储体(例如,Bank1、Bank2和Bank3)。第一存储器存储体(Bank0)中的位单元单位中的每个可输出由ENC块255顺序地提供的输入数据的值与存储在位单元221-0至221-3中的每个中的权重值(例如,权重值w0、w1、w2和w3(包含任意的“0”或“1”))之间的运算(例如,乘法运算)的结果。
例如,如果存储在位单元中的权重值w0为“0”,则连接到位单元单位的门逻辑电路227可输出作为输入数据(例如,“0011 0100 1010”)与w0(“0”)之间的逐位乘法运算的结果的“0000 0000 0000”。因为除Bank0之外的存储器存储体在每个乘法运算期间全部从ENC块255接收“0”,所以这些存储器存储体的权重内容不影响用于这些运算的门逻辑电路227的输出。当权重值w0为“1”时,连接到位单元单位的门逻辑电路227可输出作为输入数据(例如,“0011 0100 1010”)与“1”之间的逐位乘法运算的结果的“0011 0100 1011”作为运算结果。同样,因为除Bank0之外的存储器存储体在每个乘法运算期间全部从ENC块255接收“0”,所以这些存储器存储体的权重内容不影响用于这些运算的门逻辑电路227的输出。
图2D示出将由WBL驱动器270读取的数据(例如,权重值或输入值)写入存储器存储体(位单元)(例如,第一存储器存储体(Bank0))的示例处理。WWL驱动器210可选择存储器存储体(并且因此选择存储器存储体的位单元),以将数据写入IMC电路220。例如,当数据将被写入第一存储器存储体(Bank0)时,WWL驱动器210可通过将“1000”施加到WWL[3:0]来选择第一存储器存储体(Bank0)。当数据将被写入第四存储器存储体(Bank3)时,WWL驱动器210可通过将“0001”施加到WWL[3:0]施加来选择第四存储器存储体(Bank3)。此外,WBL驱动器270可提供将被存储在由WWL驱动器210选择的位单元中的数据(例如,权重值)。在图2A中示出的WBL[255:0]是用于将数据写入位单元的路径。在如图2A中所示的64×64运算器中,256位数据可同时被写入每行具有4位(b)的权重(例如,w0、w1、w2和w3)的权重的64个行。根据结构,64位数据可在列方向上同时被写入。当(用于存储的)256位输入连续地将数据传递到每列(每个周期一列)时,全部运算器的数据可在总共64个周期内被记录。当WBL驱动器270执行写入操作时,全部的“0”可被输入到RWL。
输入驱动器250可从外部模块(诸如例如,处理器(例如,图10的处理器1010))接收输入数据201,或者输入数据201可从存储在输入特征图(IFM)缓冲器(例如,图9的IFM缓冲器931)中的输入特征图被读取。输入数据201的源不重要,并且任意源可被使用。
例如,如图2A中所示,当输入数据201的输入值是多位时,输入驱动器250可针对每个位位置(bit position)将多位值顺序地传送到IMC电路220。例如,当IMC宏200针对神经网络操作而进行操作时,输入驱动器250可像RWL驱动器一样进行操作。在下文中,输入驱动器250和RWL驱动器将被理解为具有相同的一般含义。
输入驱动器250可通常一层接一层地将例如从神经网络的每个层的M个节点接收的输入值施加到读取字线(例如,RWL0、RWL1至RWLM-1)。RWLm和IN[m]可与同一节点对应。
例如,第m节点的输入值可被施加到RWLm,并且施加到RWLm的输入值可以是多位或单个位。在该示例中,m可以是大于或等于“0”且小于或等于“M-1”的整数。例如,如上所述,当施加到RWLm的输入值是多位时,每个位位置的位值可被顺序地传送到IMC电路220。输入驱动器250可单独地将从前述节点接收的M个输入值传送到M个位单元。如稍后将描述的,由于M个位单元中的每个与其他位单元并行地执行乘法运算,因此M个乘法运算可针对每个位线并行地被执行。
可选地,当权重203是多位时,与用于表示权重203的位的数量一样多的输出线可被分组。分组后的输出线可被称为“输出线组”。例如,当权重203是X位时,X条输出线可被分组,并且IMC宏200可输出通过分组后的X条输出线获得的输入数据201的输入值与X位的权重203之间的乘积的组合结果。在该示例中,X可大于或等于“2”。
SRAM位单元电路225可由若干位单元组成以表示多位权重。输入(输入运算数)可同时被施加到将与多位权重(权重运算数)相乘的每个位单元。作为示例,分组为一组的X条输出线之中的第一输出线可输出与权重的最低有效位(LSB)对应的权重位值与输入位值之间的乘法的结果。类似地,第x输出线可输出第x-1位位置的权重位值与来自LSB的输入位值之间的乘法结果。在该示例中,x可大于或等于“2”且小于或等于“X”。累加器240可将(i)将与同一输出线组的输出线对应的位位置移位(shift)预定位(例如,一位)的结果施加到(ii)从相应的输出线输出的组合结果,并且通过对位位置的移位值进行累加,最终的MAC运算结果可被输出。累加器240可被实现为例如移位器和加法器,或者可由单独的累加器实现,但是不限于此。
位单元中的每个可存储例如权重203的值(例如,第一值/第一运算数)。参照图3和4更详细地描述包括多个位单元的IMC电路220的结构和操作。
IMC电路220可执行通过输入驱动器250接收的输入数据201的值(即,输入运算数)与存储在位单元中的权重203(即,存储的运算数)之间的乘法运算。IMC电路220可通过其中位单元(一个或多个)、运算器(一个或多个)和门逻辑电路被连接的结构输出与对应于位单元中的每个的运算结果(例如,逐位乘法运算结果)对应的信号。例如,如参照图3所述,作为总体运算效果,IMC电路220可将对与存储在位单元中的每个的权重203的值(例如,第一值/第一运算数)和通过字线施加到与存储器存储体对应的位单元的输入信号的输入值(例如,第二值/第二运算数)之间的乘法运算的结果对应的信号进行AND逻辑运算的结果值传送到加法器230。
运算器222可以是例如其中晶体管的数量被最小化的传输晶体管逻辑的形式。
加法器230可连接到一个或多个IMC电路220的输出端。IMC电路220的输出端可与输出线对应。一个或多个IMC电路220的输出端可连接到一个输出线。加法器230可将从一个或多个IMC电路220输出的信号相加。加法器230可对连接到同一输出线的多个IMC电路220的乘法结果进行组合。加法器230可被实现为例如全加法器、半加法器和/或触发器。加法器230可被实现为例如数字加法器(诸如,加法器树电路),但是不限于此。
此外,如上所述,在总体效果上,由于IMC电路220的输出结果是AND逻辑运算的结果值,因此加法器230可通过包括用于对每个IMC电路220的输出结果进行反相的反相器来实现。这里,加法器230可对通过将IMC电路220的输出结果进行反相而获得的值进行组合。加法器230可将通过对与位单元中的每个每个对应的乘法结果进行组合而获得的结果传送到累加器240。加法器230可针对IMC电路220的每个相应的输出线而设置。
累加器240可存储对一个或多个IMC电路220的乘法运算结果进行组合的加法器230的输出,并且累加器240可对组合结果进行累加。累加器240可在加法器230中对与位单元中的每个对应的乘法结果进行求和,并且最后对作为MAC运算结果(例如,通过Q0[13:0]至Q63[13:0])被输出的求和的结果进行组合。
例如,当输入驱动器250接收到多位形式的输入数据201时,WWL驱动器210可顺序地将输入数据201的每个位位置的位值(例如,通过写入字线WWL0[3:0]至WWL63[3:0])传送到IMC电路220。因此,IMC电路220还可输出相应的位位置的乘法运算结果。加法器230可将对相应的位位置的乘法运算结果进行组合(相加)的结果传送到累加器240。
累加器240可通过对相应的位位置的组合结果进行位移位来执行组合。累加器240可通过将下一个位位置的组合结果与相应的的位移位后的组合结果进行组合来根据位位置对乘法运算结果进行累加。如稍后所述,由于当输入驱动器250接收到单个位的输入数据时不需要位移位,因此可选地,累加器240可直接输出加法器230的组合结果,或者将组合结果存储在输出寄存器(未示出)中。
输出寄存器可存储从累加器240输出的最终乘法运算结果(例如,乘法累加结果)。因为累加器240执行移位运算和求和运算以及累加,所以它可被称为“移位和加法累加器”。存储在输出寄存器中的最终乘法累加结果(例如,MAC运算结果)可由例如电子系统的处理器(例如,图10的处理器1010)读取,并且用于其他运算。例如,当IMC宏200每次执行与神经网络的若干层对应的MAC运算时,存储在输出寄存器中的MAC运算结果可被传送到WWL驱动器210,用于将对下一层执行的运算。IMC宏200的WWL驱动器210可通过选择设置了与下一层对应的权重集合的位单元(一个或多个)来执行乘法运算。
WBL驱动器270可写入包括在IMC电路220中的一个或多个位单元的数据。WBL驱动器270可通过术语“写入电路”而简要地被表示。在下文中,“WBL驱动器”和“写入电路”可互换使用。
一个或多个位单元的数据可包括例如将在MAC运算中与输入值相乘的权重203的值。WBL驱动器270可通过位线(例如,WBL、WBLB)访问IMC电路220的位单元。当IMC电路220包括多个位单元时,WBL驱动器270可访问连接到多条字线(RWL)之中的激活的字线的位单元。WBL驱动器270可在访问的位单元中设置(写入)权重,或者读取在位单元中设置的权重。
存储器控制器260可控制WWL驱动器210、一个或多个IMC电路220、累加器240(例如,累加器<0>至累加器<63>)、加法器230、输入驱动器250和/或输出寄存器。
IMC宏200可被实现为例如神经网络设备、IMC电路、MAC算术电路和/或设备,但是不限于此。IMC宏200可通过字线接收输入值,并且通过位线输出作为输入值与存储在10TSRAM位单元中的权重之间的乘法的结果的信号。
图3示出IMC电路结构的示例。参照图3,如示例300中所示,IMC电路220可包括SRAM位单元电路225和门逻辑电路340。
SRAM位单元电路225可包括与相应的存储器存储体对应的多个位单元单位223。位单元单位223可包括一个位单元310和运算器320,运算器320输出对应于输入位与存储在该一个位单元310中的值之间的运算结果的信号。运算器320可与参照图2A描述的运算器222对应。用于存储位值的每个位单元310可具有其自身的相应的运算器320。
位单元310可包括由两个反相器311和313以及两个传输门315和317组成的字线晶体管。“传输门”可以是双向开关,其中,NMOS晶体管和PMOS晶体管并联连接,并且可通过外部施加的逻辑电平/值被控制。例如,当“1”被施加到传输门315和317的使能(E)端子时,传输门315和317可用作“闭合的”开关。可选地,当“0”被施加到传输门315和317的E端子时,传输门315和317可用作“断开的”开关。反相器311和313以及传输门315和317中的每个可包括两个晶体管。
运算器320可包括第一晶体管321和第二晶体管323。第一晶体管321和第二晶体管323可输出与存储在位单元310中的第一值(例如,内部运算数/存储的运算数)与通过输入驱动器250作为输入信号施加到位单元310的第二值(例如,外部运算数/输入的运算数)之间的逐位乘法运算的结果对应的信号。
运算器320可由如图3、图5A和/或图6A中所示的双晶体管(2T)或者如图7和/或图8中所示的三晶体管(3T)组成。
例如,如图3中所示,当运算器320由两个晶体管组成时,SRAM位单元电路225可被称为“10T SRAM单元”结构或“10T”结构,因为既可存储位(位单元310)又可对其存储的位执行乘法运算(运算器320)的位单元单位223由10个晶体管(2×2+2×2+2=10)组成。
相同的输入值可被施加到SRAM位单元电路225的位单元单位之中的相同的存储器存储体中的位单元单位。
当整个存储器区域被划分为多个块时,“存储器存储体”可与“一个块”对应。存储器存储体具有表示存储器区域的多对相同的地址,并且当64位单元输入/输出发生时,存储器存储体可与通道内的一个或多个存储器的逻辑组对应,逻辑组是共享一个数据路径的组。存储器存储体可成对或成组地使用。存储器存储体可与共享加法器230(诸如例如,加法器树)的存储器存储体对应。位单元310可与例如四个存储器存储体对应。
运算器320中的每个可包括第一晶体管321和第二晶体管323,第一晶体管321和第二晶体管323输出与第一值(存储的运算数/内部运算数)和第二值(输入的运算数/外部运算数)之间的逐位乘法运算的结果对应的信号,第一值(存储的运算数/内部运算数)被存储在与多个存储器存储体之中的相应的存储器存储体对应的位单元中的每个中,第二值(输入的运算数/外部运算数)被施加作为相应的存储器存储体的输入信号。运算器320中的每个可与相应的位单元310中的每个对应。也就是说,如上所提及的,每个位单元310可具有其自身的相应的运算器320。
门逻辑电路340可将与属于存储器存储体之中的用于MAC运算的目标存储器存储体的位单元中的每个对应的运算结果传送到加法器230。门逻辑电路340可根据第二值被施加到运算器320中的哪个来将与包括在相应的存储器存储体中的位单元中的每个对应的运算结果传送到加法器230(如下所讨论的,其他/未选择的运算器可输出“0”)。门逻辑电路340可包括例如与非(NAND)门、或非(NOR)门、异或(XOR)门、异或非(XNOR)门、与(AND)门和或(OR)门中的任何一个,但是不限于此。例如,当门逻辑电路340是NOR门、XOR门、XNOR门、AND门、或者OR门时,位单元单位223(例如,运算器320)的结构可相应地被改变,以使门逻辑电路340和运算器320在它们的组合运算中能够(从门逻辑电路340)输出乘法结果(或者可能是反相的乘法结果)。
IMC电路220中的SRAM位单元电路225的布局的大小和布线的复杂度可显著影响围绕SRAM IMC电路的功率效率和/或面积效率。
此外,存储器的面积效率DM可通过等式3被估计。
等式3
WE与用于多位数据的存储器容量对应。例如,WE可以是“8”以表示8位,并且WE可以是“4”以表示4位。
存储密度(areal density)可通过根据等式3减小存储器的面积或增加存储器存储体的数量而被改善。存储器的面积可与例如由位单元、加法器230和/或外围控制线占据的面积对应。
类似地,通过减少包括在IMC电路220中的晶体管(一个或多个)的数量、减少构成存储器单元的晶体管的数量和/或增加存储器存储体的数量,IMC电路220的面积可被减小。
例如,通过将SRAM的位单元配置为被组织成存储器存储体,并且通过由运算器320和配置有少量(例如,两个或三个)晶体管的门逻辑电路340将与存储器存储体之中的目标存储器存储体对应的运算结果传送到加法器230,较低电压的写入操作可通过减少IMC电路的控制线的数量而被提供,同时IMC电路的面积效率可被提高。在该示例中,术语“目标存储器存储体”可以指当与属于(存储器存储体之中的)相应的存储器存储体的位单元中的每个对应的运算结果用于MAC运算时的相应的存储器存储体。
以下参照图4更详细地描述IMC电路220的位单元到存储器存储体中的配置。
图4示出示例IMC电路。IMC电路的结构的示例400可包括SRAM位单元电路225和加法器440(例如,加法器树),SRAM位单元电路225包括与多个存储器存储体(例如,Bank0至Bankn)对应的SRAM位单元415(例如,图2A的位单元221)和分别与SRAM位单元415对应的运算器420(例如,图2A的运算器222)。
相同的字线(例如,IN<0:n-1><0>、……、IN<0:n-1><63>)可被应用。这里,n可以是64,但是不限于此。
参照图4,IMC电路220的SRAM位单元电路225可包括运算器420,运算器420输出对应于输入到运算器420的外部输入信号的值与存储在SRAM位单元415中的值之间的运算的结果的信号。IMC电路220可调整用于执行运算的运算器420的输入,使得与属于用于MAC运算的目标存储器存储体的SRAM位单元410中的每个对应的运算结果可被传送到加法器440(即,非目标的运算结果对运算结果没有贡献)。
运算器420中的每个的输出可通过门逻辑电路430的逻辑运算(例如,NAND逻辑运算)被传递,并且门逻辑电路430的输出被传送到加法器440(例如,加法器树)。
IMC电路220可使得与属于用于MAC运算的目标存储器存储体的位单元对应的运算结果为“0”或“1”(根据目标存储器存储体的位单元中的值和输入位值),并且使得与属于剩余的(非目标的)存储器存储体的位单元对应的运算结果为“0”。通过这样做,与目标存储器存储体对应的运算结果可用于MAC运算,并且非目标存储器存储体不影响运算结果。
例如,通过将SRAM位单元415配置为多个存储器存储体,用于控制(一个或多个)运算器420的控制线的数量可被减少,从而IMC电路220的实施面积可被减小,并且IMC电路220的面积效率可被提高。
此外,通过减少用于(一个或多个)运算器420的乘法运算的晶体管的数量,构成IMC电路220的晶体管的总数可被减少。
IMC电路220可部分地隔离施加到SRAM位单元电路225、门逻辑电路430和加法器440中的每个的电力,使得不同的电压可被施加到SRAM位单元电路225、门逻辑电路430和/或加法器440中的每个。
图5A和图5B示出当IMC电路的运算器由两个晶体管组成时的示例运算。参照图5A,包括SRAM位单元电路225和门逻辑电路430(例如,NAND门)的IMC电路的示例500结构被示出。
SRAM位单元电路225可以是通过针对SRAM位单元电路225的每个位单元单位,对由8个晶体管(8T)组成的位单元310与由双晶体管(2T)组成的运算器320和门逻辑电路430进行组合而实现的乘法单元。SRAM位单元电路225可包括例如四个位单元310和四个运算器320,四个位单元310分别与分组到对应于四位-输入信号IN0、IN1、IN2、IN3中的每个的字线的四个存储器存储体(Bank0、Bank1、Bank2、Bank3)对应,四个运算器320分别与位单元310中的每个对应。
运算器320可被构造为包括第一晶体管(N1)321和第二晶体管(P1)323的2T电路。第一晶体管321可与例如NMOS晶体管对应,但是不限于此。此外,第二晶体管323可与PMOS晶体管对应,但是不限于此。
例如,与目标存储器存储体(例如,存储器存储体0(Bank0))的输入信号对应的第二值/第二运算数(例如,输入信号IN0)可通过与存储器存储体0对应的位单元310的RWL被施加到第一晶体管321的第一栅极端子和第二晶体管323的第二栅极端子。存储在属于作为目标存储器存储体的存储器存储体0的位单元310中的权重W的反相权重可被施加到第一晶体管321的漏极端子。第一晶体管321的源极端子可经由第二晶体管323的漏极端子连接到门逻辑电路430的输入端子。
穿过第一晶体管321的第一栅极端子的第一晶体管321的输出值可连接到穿过第二晶体管323的第二栅极端子的第二晶体管323的输出值,并且被输出为与逐位乘法运算结果对应的信号(例如,O1)。
参照图5B,下面是真值表530的解释,真值表530表示当存储器存储体0(Bank0)是在图5A中示出的IMC电路中的目标存储器存储体时SRAM位单元电路225的操作。真值表530中的列标题与图5A的电路中的相同的点/线对应。
在一种情况下,与存储器存储体0(Bank0)对应的输入信号IN0为“1”,并且与存储器存储体1(Bank1)、存储器存储体2(Bank2)和存储器存储体3(Bank3)中的每个对应的输入信号IN1、IN2、IN3各自为“0”。此外,当存储在存储器存储体0(Bank0)的位单元310中的权重W为“1”时,反相权重为“0”。
在这种情况下,当输入信号IN0为“1”并且被施加到第一晶体管321(其为存储器存储体0(Bank0)的NMOS晶体管)的栅极端子时,电势差在第一晶体管321的栅极端子与源极端子之间被生成,使得沟道被形成并且第一晶体管321变为“导通(ON)”。当第一晶体管321为“ON”时,连接到第一晶体管321的漏极端子的反相权重被输出为与存储器存储体0(Bank0)对应的位单元310的运算器320的输出值O0。此外,当输入信号IN0为“1”并且被施加到第二晶体管323(其为存储器存储体0(Bank0)的PMOS晶体管)的栅极端子时,电势差不在第二晶体管323的第二栅极端子与源极端子之间被生成,使得沟道不被形成并且第二晶体管323变为“截止(OFF)”。
在这种情况下,当与非目标的存储器存储体1、存储器存储体2和存储器存储体3中的每个对应的输入信号IN1、IN2、IN3为“0”时,根据以上描述的方法,与存储器存储体1、2和3对应的位单元的运算器320的输出值O1为“1”。因此,NAND门430的输出将仅取决于输出O0。由于(在与相应的存储器存储体对应的位单元的输出值之中的)与存储器存储体0对应的位单元310的运算器320的输出值O0为“0”,因此NAND门430的输出值O为“1”。
在另外的情况下,与存储器存储体0对应的输入信号IN0为“0”,并且与存储器存储体1、2和3对应的输入信号IN1、IN2、IN3为“0”。此外,当存储在存储器存储体0的位单元310中的权重W为“0”时,反相权重可以是“1”。当为“0”的输入信号IN0被施加到第一晶体管321(其为存储器存储体0(Bank0)的NMOS晶体管)的栅极端子时,由于电势差在第一晶体管321的栅极端子与源极端子之间不发生,因此沟道不被形成并且第一晶体管321变为“OFF”。此外,当为“0”的输入信号IN0被施加到第二晶体管323(其为存储器存储体0(Bank0)的PMOS晶体管)的栅极端子时,沟道由于在第二晶体管323的第二栅极端子与源极端子之间生成的电势差而被形成,使得第二晶体管323变为“ON”。当第二晶体管323为“ON”时,与施加到第二晶体管323的源极端子的Vdd电压对应的“1”被输出作为与存储器存储体0对应的位单元310的运算器320的输出值O0
当与存储器存储体1、存储器存储体2和存储器存储体3中的每个对应的输入信号IN1、IN2、IN3为“0”时,根据以上描述的方法,与存储器存储体1、存储器存储体2和存储器存储体3对应的位单元的输出值O1可以是“1”。当与相应的存储器存储体对应的位单元的输出值全部为“1”时,NAND门430的输出值O可以是“0”,并且作为结果,与执行AND逻辑运算相同的结果可被获得。
如图5A中所示,施加到与分组到对应于输入信号IN0的RWL的存储器存储体0对应的运算器320的输入信号IN0和存储在位单元310中的权重W之间的乘法运算可通过传输晶体管逻辑结构,使用存储在位单元310中的权重W的反相权重和输入信号IN0作为输入而被执行。
传输晶体管逻辑可用于通过使用初级输入对栅极端子、源极端子和漏极端子进行驱动来减少用于实现逻辑的晶体管。在互补CMOS逻辑中,初级输入可对栅极端子进行驱动。初级输入可与例如输入、反相输入、VDD和GND对应。
如上所述,图5A示出AND功能由IMC电路使用NMOS传输晶体管被实现的示例。在NMOS传输晶体管中,当栅极输入为高时,左NMOS晶体管(即,第一晶体管321)可被导通,并且源极输入可被复制到输出。另一方面,当NMOS传输晶体管的栅极输入为低时,右NMOS传输晶体管(即,第二晶体管323)可被导通,并且可将“0”传送到输出。
图5B的真值表530示出用于上述运算的AND门的真值表。
输入信号“1”通过与用于MAC运算的存储器存储体对应的位单元的RWL被施加,并且属于相应的存储器存储体的位单元的运算结果被传送到加法器(例如,图4的加法器440),使得相应的存储器存储体如其为唯一被有效选择的存储器存储体一样被处理。另一方面,输入信号“0”被施加到与不用于MAC运算的存储器存储体对应的位单元的RWL,并且属于相应的存储器存储体的位单元的运算结果不被传送,使得相应的存储器存储体如其未被选择一样被处理。
例如,即使在没有用于读取输入信号IN0的单独的RWL控制信号的情况下,逐位乘法运算也使用由两个晶体管组成的门逻辑电路430(例如,NAND门)被执行。因此,接口的控制线的数量可被减少到每个位单元310 4条线(例如,WBL、WWL、写入位线反相(WWBL)和RWL)。
因此,构成IMC电路的晶体管的总数可以是4个存储体×(SRAM位单元(8T)+运算器(2T))+门逻辑电路(8T)=4×10T+8T=48T,并且控制线的总数可以是4个存储体×4=16。
如图5A和图5B中所示,与被分组到对应于输入信号IN0的字线的存储器存储体0对应的位单元310的乘法运算的输出值O0与其他位单元的乘法运算的输出值O1一起被传送到NAND门430。NAND门430可将对四个位单元(如真值表530中所示)的输出值O0和O1执行NAND逻辑运算的结果O传送到加法器230作为加法器230的输入,并且从而使得MAC运算被执行。
图6A和图6B示出IMC电路选择存储器存储体的方法的示例。参照图6A,IMC电路的存储器存储体0(Bank0)610被选择作为目标存储器存储体并且IMC电路的存储器存储体1(Bank1)630没有被选择作为目标存储器存储体的示例600被示出。图6B示出具有图6A的IMC电路的输入值和输出值的真值表650。在图6A中,VDD可表示电源电压。
如图6A中所示,当存储在存储器存储体0 610(其被选择作为目标存储器存储体)的位单元中的权重W为“0”,并且通过字线施加到存储器存储体0 610的输入信号IN0的值为“1”时,与存储器存储体0对应的输出O0的值为“1”。当与存储器存储体0对应的位单元的输出O0的值(其仅为输入到NAND门的位单元的输出值O0、O1中的一个)为“1”时,NAND门的输出值O变为“0”,因此加法器230中的MAC运算不被影响。
换言之,当其他存储器存储体(存储器存储体1、存储器存储体2和存储器存储体3)的相应的位单元单位具有输入“0”时,它们的相应的运算器全部将“1”输出到NAND门。因此,NAND门的输出仅由存储器存储体0 610的位单元单位的输出确定;其他存储器存储体(例如,存储器存储体1、存储器存储体2和存储器存储体3)的权重可不影响NAND门的输出。换言之,因为仅存储器存储体0的位单元单位具有输入“1”,所以存储器存储体0的位单元单位变为在四个位单元单位之中权重W可影响NAND门的输出的唯一的位单元单位。
另一方面,当存储在与存储器存储体0 610对应的位单元中的权重W为“1”,并且通过字线施加到存储器存储体0的输入信号IN0的值为“1”时,与存储器存储体0对应的输出O0的值为“0”。如上所提及的,接收到输入“0”的相应的输入存储器存储体的任何位单元的权重W不影响逻辑门/NAND门的输出(即,仅接收到输入“1”的位单元的权重W对运算有贡献)。当与存储器存储体0对应的位单元单位的输出O0的值(其只是与馈送到NAND门的每个存储器存储体对应的位单元的输出值O0、O1中的一个)为“0”时,NAND门的输出值O变为“1”,因此加法器230中的MAC运算可被影响。
如上所述,由于与被施加输入信号“1”的存储器存储体对应的输出可影响加法器中的MAC运算(例如,输入信号可在没有单独的控制信号的情况下通过RWL被施加),从而使得目标存储器存储体如其被选择用于MAC运算一样工作。
在另一示例中,如示例600中所示,当存储在与存储器存储体1对应的位单元中的权重W为“1”并且通过字线施加到存储器存储体1的输入信号IN1的值为“0”时,与存储器存储体1对应的输出O1的值可以是“1”(即,具有高电平HIGH),因此加法器230中的MAC运算可经由NAND门的输出而不被影响。
总而言之,在相应的存储器存储体的一组位单元之中,每个位单元具有其自身的相应的运算器(例如,位乘法器)。“去激活”或“控制”输入信号(“0”)可被供应给不是运算的目标的存储器存储体的位单元单位。这样的信号不是实际的输入数据信号,而是由存储器存储体目标/选择电路系统提供。实际的数据信号被供应给作为当前的运算目标的存储器存储体的位单元单位。如果数据输入为“0”,则运算结果/输出为“0”,然而,如果数据输入为“1”,则运算结果取决于存储在目标位单元中的值(例如,权重位)。如果该值为“1”,则运算结果为“1”。如果该值为“0”,则运算结果为“0”。
图7示出当IMC电路的运算器由三个晶体管组成时的运算的示例。参照图7,IMC电路的结构的示例700被示出为包括SRAM位单元电路和门逻辑电路430(例如,NAND门),SRAM位单元电路包括与被分组到对应于输入信号I0、I1、I2、I3中的每个的字线的四个存储器存储体中的每个对应的位单元310以及与位单元中的每个对应的运算器710。
运算器710可被配置为包括传输门711和第三晶体管713的3T电路。第三晶体管713可与例如PMOS晶体管对应,但是不限于此。
与目标存储器存储体(例如,存储器存储体0)的输入信号对应的第二值(例如,输入信号I0)可通过与存储器存储体0对应的位单元的RWL被施加到传输门711的E端子和第三晶体管713的栅极端子(“第三栅极端子”)。
此外,存储在属于作为目标存储器存储体的存储器存储体0的位单元310中的权重W的反相权重可被施加到传输门711的输入In。位单元310的反相输入可连接到传输门711的使能条(enable bar)和第三晶体管713的源极端子。
传输门711的输出值和穿过第三晶体管713的第三栅极端子的第三晶体管713的输出值中的每个可连接到NAND门430的输入,并且被输出作为与逐位乘法运算结果对应的信号。
例如,如表730中所示,存储在存储器存储体0的位单元310中的权重W可以是“1”,与存储器存储体0对应的输入信号I0可以是“1”,并且与存储器存储体1、存储器存储体2和存储器存储体3中的每个对应的输入信号I1、I2、I3可以是“0”。
在这种情况下,当输入信号I0“1”被施加到传输门711的E端子时,传输门711用作“闭合的”开关,因此连接到传输门711的输入端子的反相权重的值(其为“0”)被输出到传输门711的输出Out端子。此外,当输入信号I0=“1”被施加到第三晶体管713的栅极端子时,连接到第三晶体管713的源极端子的反相输入被输出作为第三晶体管713的输出值。
由于从传输门711输出的输出值(“0”)和第三晶体管713的输出值(“0”)二者为“0”,因此与存储器存储体0对应的位单元310的输出值(O0)可被输出为“0”。由于与存储器存储体0对应的运算器710的输出值O0(在与相应的存储器存储体对应的位单元的输出值之中)为“0”,因此NAND门430的输出值O为“1”。
在图7中示出的IMC电路结构中,当输入信号为“1”时,存储在位单元中的数据值通过作为开关进行操作的传输门711被传送,因此与在图5A中示出的IMC电路结构相比,在图7中示出的IMC电路结构可能够在较低的电压下进行操作。
此外,构成在图7中示出的IMC电路的单位位单元的晶体管的总数可以是4个存储体×(SRAM位单元8T+运算器3T)+门逻辑电路430(8T的NAND门)=4×11T+8T=52T,并且控制线的总数可以是4个存储体×5(例如,WBL、WWL、WWLB、RWL、读取字线反相(RWLB))=20。
图8示出当IMC电路的运算器由三个晶体管组成时的运算的另一示例。参照图8,IMC电路的结构的示例800包括SRAM位单元电路和门逻辑电路430,SRAM位单元电路包括与被分组到对应于输入信号I0、I1、I2、I3中的每个的字线的四个相应的存储器存储体中的每个对应的位单元310以及与位单元310中的每个对应的运算器810。
运算器810可被配置为包括传输门811以及与NMOS晶体管和PMOS晶体管并联连接的第四晶体管813的3T电路。传输门811可通过施加到每个晶体管的栅极的输入I而被接通或关断。第四晶体管813可与例如PMOS晶体管对应,但是不限于此。
与目标存储器存储体(例如,存储器存储体0)的输入信号对应的第二值(例如,输入信号I0)可通过与存储器存储体0对应的位单元的RWL被施加到传输门811的E端子和第四晶体管813的栅极端子(“第四栅极端子”)。
此外,存储在属于作为目标存储器存储体的存储器存储体0的位单元310中的权重W的反相权重可被施加到传输门811的输入In。位单元310的反相输入可连接到传输门811的使能条
第四晶体管813的源极端子可连接到Vdd,并且第四晶体管813的漏极端子可连接到存储在位单元310中的权重W的反相权重
传输门811的输出值和穿过第四晶体管813的第四栅极端子的第四晶体管813的输出值中的每个可连接到NAND门430的输入,并且被输出为与逐位乘法运算结果对应的信号。
例如,如表830中所示,存储在存储器存储体0的位单元310中的权重W可以是“1”,与存储器存储体0对应的输入信号I0可以是“1”,并且与存储器存储体1、存储器存储体2和存储器存储体3中的每个对应的输入信号I1、I2、I3可以是“0”。
在该示例中,当输入信号I0“1”被施加到传输门811的E端子时,传输门811用作“闭合的”开关,因此连接到传输门811的输入端子的反相权重的值(其为“0”)可被输出到传输门811的输出(Out)端子。此外,当输入信号I0=“1”被施加到第四晶体管813的栅极端子时,电势差可不在第四晶体管813的栅极端子(“第四栅极端子”)与源极端子之间被生成,使得沟道不被形成,并且第四晶体管813变为“OFF”。因此,第四晶体管813的输出值可以是“0”。
由于从传输门811输出的输出值(“0”)和第四晶体管813的输出值(“0”)二者为“0”,因此与存储器存储体0对应的位单元310的运算器810的输出值(O0)被输出为“0”。由于与存储器存储体0对应的位单元310的运算器810的输出值O0(在与相应的存储器存储体对应的位单元的输出值之中)为“0”,因此作为仅权重W(“1”)与仅数据输入(也为“1”)之间的乘法结果的NAND门430的输出值O为“1”。
图9示出包括IMC电路的神经网络设备的示例。参照图9,神经网络设备900可包括阵列电路910和控制器930。
阵列电路910可包括多个IMC电路915。IMC电路915中的每个可设置有与位单元中的每个对应的运算器,并且运算器可被配置为输出与第二值和存储在对应于多个存储器存储体之中的相应的存储器存储体的位单元中的每个中的第一值之间的运算的结果对应的信号。IMC电路915中的每个可包括SRAM位单元电路(包括运算器)、以及门逻辑电路。IMC电路915中的每个可与以上参照图2A至图8描述的任何IMC电路对应。
SRAM位单元电路可包括被组织成存储器存储体的位单元,并且位单元可被分组到用于每个存储器存储体的SRAM的字线。
运算器可输出与分别对应于运算器的位单元的运算结果对应的信号。运算器可包括相应的多个晶体管,相应的多个晶体管输出与(i)存储在(与多个存储器存储体之中的存储器存储体对应的)相应的位单元中的第一值和(ii)通过字线被施加作为相应的存储器存储体的输入信号的第二值之间的逐位乘法运算的结果对应的信号。运算器中的每个可被配置为2T电路或3T电路。
例如,运算器中的每个可被配置为包括第一晶体管和第二晶体管的2T电路。在该示例中,与相应的存储器存储体的输入信号对应的第二值可被施加到第一晶体管的第一栅极端子和第二晶体管的第二栅极端子。此外,穿过第一栅极端子的第一晶体管的输出值可连接到穿过第二栅极端子的第二晶体管的输出值,从而被输出作为与逐位乘法运算结果对应的信号。
作为另一示例,运算器中的每个可被配置为包括传输门和第三晶体管的3T电路。在该示例中,与相应的存储器存储体的输入信号对应的第二值可被施加到传输门的E端子和第三晶体管的第三栅极端子。传输门的输出值可通过第三栅极端子连接到第三晶体管的输出值,以被输出作为与逐位乘法运算结果对应的信号。
门逻辑电路(逻辑门)可将与属于用于MAC运算的目标存储器存储体的位单元中的每个对应的运算结果传送到加法器。IMC电路915中的每个可与以上参照图3至图8描述的任何IMC电路对应。
控制器930可根据时钟信号将与神经网络设备900的输入信号对应的第二值输入到IMC电路915中的每个,并且控制IMC电路915中的每个。
控制器930可包括例如存储包括第二值的输入特征图的输入特征图(IFM)缓冲器931、控制第二值中的哪些被施加到IMC电路915中的哪些的控制电路933、以及读取或写入第一值的读写(RW)电路935中的任何一个或任何组合。
控制电路933可控制第二值是否被施加到包括在运算器中的多个晶体管,使得门逻辑电路可将与属于相应的存储器存储体的位单元中的每个对应的运算结果传送到加法器。
尽管以上参照神经网络数据(诸如,权重、输入数据/映射等)描述IMC装置,但是IMC装置不限于任何特定类型的数据。也就是说,无论电路和装置用于处理的数据的类型如何,电路和装置都是新颖和有益的。神经网络数据的处理仅是许多潜在应用中的一个。
图10示出包括神经网络设备的电子系统的示例。参照图10,电子系统1000可基于人工神经网络(例如,图1的神经网络110)对输入数据进行分析并且提取有效的信息,基于提取的信息来确定情境(situation)或者((例如,实时地或即时地)控制安装有电子系统1000的电子装置的组件。例如,电子系统1000可用于控制或补充无人机、机器人设备(诸如,高级驾驶员辅助系统(ADAS))、智能TV、智能电话、医疗装置、移动装置、视频显示装置、测量装置和物联网(IoT)装置的操作,并且除此之外,可安装在各种类型的电子装置中。
电子系统1000可包括处理器1010、随机存取存储器(RAM)1020、神经网络设备1030、存储器1040、传感器模块1050和发送/接收模块1060。电子系统1000还可包括输入/输出模块、安全模块、电力控制设备等。电子系统1000的硬件组件中的一些可安装在至少一个半导体芯片上。
处理器1010可控制电子系统1000的整体操作。处理器1010可包括一个处理器核(单核)或多个处理器核(多核)。处理器1010可处理或执行存储在存储器1040中的程序和/或数据。处理器1010可通过执行存储在存储器1040中的程序来控制神经网络设备1030的功能。处理器1010可被实现为中央处理器(CPU)、图形处理器(GPU)、应用处理器(AP)等。
RAM 1020可临时存储程序、数据或指令。例如,存储在存储器1040中的程序和/或数据可根据处理器1010的控制或启动代码被临时存储在RAM 1020中。RAM 1020可被实现为例如存储器(诸如,动态RAM(DRAM)或SRAM)。
神经网络设备1030可基于接收的输入数据执行神经网络的操作,并且可基于操作的结果生成各种信息信号。神经网络可以是例如卷积神经网络(CNN)、递归神经网络(RNN)、模糊神经网络(FNN)、深度信念网络或受限玻尔兹曼机等,但是不限于此。神经网络设备1030可以是例如专用于神经网络和/或包括神经网络的设备的硬件加速器,或者可与以上参照图9描述的神经网络设备900对应。
神经网络设备1030可控制IMC电路的SRAM位单元电路共享和/或处理相同的输入数据,并且选择从SRAM位单元电路输出的运算结果的至少一部分。
信息信号可包括例如各种类型的识别信号(诸如,语音识别信号、对象识别信号、视频识别信号和生物信息识别信号)中的一种。例如,神经网络设备1030可接收包括在视频流中的帧数据作为输入数据,并且可从帧数据生成关于包括在由帧数据表示的图像中的对象的识别信号。神经网络设备1030可接收各种类型的输入数据,并且可基于安装有电子系统1000的电子装置的类型或功能根据输入数据生成识别信号。
存储器1040指的是被配置为存储数据并且可存储OS、各种类型的程序和各种类型的数据的存储设备。根据示例,存储器1040可存储在执行神经网络设备1030的操作的处理中生成的中间结果。
存储器1040可包括易失性存储器和非易失性存储器(不包括信号本身)中的任何一个或任何组合。非易失性存储器可包括例如只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)和闪存,但是不必限于此。易失性存储器可包括例如DRAM、SRAM、同步DRAM(SDRAM)、相变存储器RAM(PRAM)、磁阻式RAM(MRAM)、电阻式RAM(RRAM)和/或铁电RAM(FRAM),但是不必限于此。根据示例,存储器1040可包括硬盘驱动器(HDD)、固态驱动器(SSD)、紧凑型闪存(CF)卡、安全数字(SD)卡、微型SD、迷你SD、极限数字(Xd)图片卡和记忆棒中的任何一个或任何组合。
传感器模块1050可收集安装有电子系统1000的电子装置周围的信息。传感器模块1050可感测或接收来自电子系统1000外部的信号(例如,图像信号、语音信号、磁信号、生物信号、触摸信号等),并且将感测或接收的信号转换为数据。传感器模块1050可包括各种感测装置(诸如,麦克风、成像装置、图像传感器、光检测和测距(LIDAR)传感器、超声传感器、红外传感器、生物传感器和触摸传感器)中的任何一个或任何组合。
传感器模块1050可将转换后的数据作为输入数据提供给神经网络设备1030。例如,传感器模块1050可包括图像传感器,通过捕获电子系统1000的外部环境来生成视频流,并且将视频流的连续数据帧作为输入数据提供给神经网络设备1030。然而,示例不限于此,并且传感器模块1050可将各种类型的数据提供给神经网络设备1030。
发送/接收模块1060可包括能够与外部设备通信的各种类型的有线接口或无线接口。例如,发送/接收模块1060可包括有线局域网(LAN)、无线局域网(WLAN)(诸如,无线保真(Wi-Fi))、无线个域网(WPAN)(诸如,蓝牙)、无线通用串行总线(USB)、ZigBee、近场通信(NFC)、射频识别(RFID)、电力线通信(PLC)、移动蜂窝网络可访问的通信接口(诸如,第三代(3G)、第四代(4G)和长期演进(LTE))等。
图11示出对IMC电路进行操作的方法的示例。在下面的示例中,操作可顺序地被执行,但是不必顺序地被执行。例如,操作的顺序可被改变,并且操作中的至少两个可并行地被执行。
参照图11,IMC电路可通过经由操作1110至1140将与位单元中的每个对应的运算结果传送到加法器来执行MAC运算。IMC电路可包括SRAM位单元电路和门逻辑电路。SRAM位单元电路可包括例如与存储器存储体对应的位单元和输出与对应于位单元中的每个的运算结果对应的信号的运算器。位单元可被分组为用于每个存储器存储体的SRAM的字线。IMC电路可与例如以上参照图2A至图9描述的任何IMC电路对应,但是不必限于此。
在操作1110中,IMC电路将第一值存储在与SRAM位单元电路的存储器存储体对应的位单元中的每个中。IMC电路可使用RW电路将第一值存储在位单元中的每个中。
在操作1120中,IMC电路通过SRAM的位线施加第二值作为存储器存储体之中用于MAC运算的目标存储器存储体的输入信号。第二值可通过例如输入驱动器从存储在IFM缓冲器中的输入特征图而被读取,但是不必限于此。
在操作1130中,IMC电路通过运算器输出与位单元中的每个对应并且与第一值和第二值之间的乘法运算的结果对应的信号。运算器可包括输出与乘法运算结果对应的信号的多个晶体管。IMC电路可通过运算器输出与第一值和第二值之间的逐位乘法运算的结果对应的信号,第一值存储在与多个存储器存储体之中的相应的存储器存储体对应的位单元中的每个中,第二值通过字线作为相应的存储器存储体的输入信号被施加。
在操作1140中,IMC电路通过门逻辑电路将与包括在目标存储器存储体中的位单元中的每个对应的运算结果传送到加法器,使得加法器对运算结果执行求和运算。加法器可与例如图2A的加法器230、图3的加法器230和/或图4的加法器440对应。
此后,加法器可对在操作1140中接收的运算结果执行求和运算,并且将求和运算结果存储在累加器中。累加器可与例如图2A至图2D或图3的累加器240对应。
在此关于图1至图11描述的神经网络、神经网络设备、电子系统、IMC宏、IMC电路、IMC装置、存储器、存储装置以及其他设备、装置、单元、模块和组件由硬件组件实现或代表硬件组件。可用于执行在本申请中描述的操作的硬件组件的示例在适当的情况下包括:控制器、传感器、生成器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器以及被配置为执行在本申请中描述的操作的任何其他电子组件。在其他示例中,执行在本申请中描述的操作的硬件组件中的一个或多个通过计算硬件(例如,通过一个或多个处理器或计算机)来实现。处理器或计算机可通过一个或多个处理元件(诸如,逻辑门的阵列、控制器和算术逻辑单元、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器或被配置为以限定的方式响应并执行指令以实现期望的结果的任何其他装置或装置的组合)来实现。在一个示例中,处理器或计算机包括或连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可执行指令或软件(诸如,操作系统(OS)和在OS上运行的一个或多个软件应用),以执行在本申请中描述的操作。硬件组件还可响应于指令或软件的执行来访问、操控、处理、创建和存储数据。为简单起见,可以在本申请中描述的示例的描述中使用单数术语“处理器”或“计算机”,但是在其他示例中,可以使用多个处理器或计算机,或者处理器或计算机可以包括多个处理元件,或多种类型的处理元件,或两者。例如,单个硬件组件或者两个或更多个硬件组件可以由单个处理器、或两个或更多个处理器、或处理器和控制器来实现。一个或多个硬件组件可以由一个或多个处理器或者处理器和控制器实现,并且一个或多个其他硬件组件可以由一个或多个其他处理器或者另外的处理器和另外的控制器实现。一个或多个处理器或者处理器和控制器可以实现单个硬件组件或者两个或更多个硬件组件。硬件组件可具有不同处理配置中的任何一个或多个,不同处理配置的示例包括:单个处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理以及多指令多数据(MIMD)多处理。
执行在本申请中描述的操作的在图1至图11中示出的方法通过计算硬件(例如,通过一个或多个处理器或计算机)来执行,计算硬件被实现为如上所述地执行指令或软件,以执行在本申请中描述的由所述方法执行的操作。例如,单个操作或者两个或更多个操作可通过单个处理器、或者两个或更多个处理器、或者处理器和控制器来执行。一个或多个操作可通过一个或多个处理器、或者处理器和控制器来执行,并且一个或多个其他操作可通过一个或多个其他处理器、或者另外的处理器和另外的控制器来执行。一个或多个处理器、或者处理器和控制器可执行单个操作或者两个或更多个操作。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件被编写为计算机程序、代码段、指令或它们的任何组合,以单独地或共同地指示或配置一个或多个处理器或计算机如机器或专用计算机那样进行操作,以执行由如上所述的硬件组件和方法执行的操作。在一个示例中,指令或软件包括由一个或多个处理器或计算机直接执行的机器代码(诸如,由编译器产生的机器代码)。在其他示例中,指令或软件包括由一个或多个处理器或计算机使用解释器执行的高级代码。指令或软件可使用任何编程语言基于附图中示出的框图和流程图以及在此的相应描述来编写,附图中示出的框图和流程图以及在此的相应描述公开了执行由如上所述的硬件组件和方法执行的操作的算法。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件以及任何相关联的数据、数据文件和数据结构可被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中或一个或多个非暂时性计算机可读存储介质上。非暂时性计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-RLTH、BD-RE、蓝光或光盘存储、硬盘驱动器(HDD)、固态驱动器(SSD)、闪存、卡型存储器(诸如,多媒体卡微型或卡(例如,安全数字(SD)或极限数字(XD))、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘和任意其他装置,任意其他装置被配置为以非暂时性的方式存储指令或软件以及任何相关联的数据、数据文件和数据结构,并将指令或软件以及任何相关联的数据、数据文件以及数据结构提供给一个或多个处理器或计算机,从而一个或多个处理器或计算机能够执行指令。在一个示例中,指令或软件以及任何相关联的数据、数据文件以及数据结构被分布在联网的计算机系统上,使得指令和软件以及任何相关联的数据、数据文件以及数据结构通过一个或多个处理器或计算机以分布式的方式被存储、访问和执行。
虽然本公开包括特定的示例,但是在理解本申请的公开之后将清楚,在不脱离权利要求及它们的等同物的精神和范围的情况下,可在这些示例中进行形式和细节上的各种改变。在此描述的示例将被认为仅是描述性的,而不是出于限制的目的。每个示例中的特征或方面的描述将被认为可适用于其他示例中的类似特征或方面。如果描述的技术以不同的次序被执行,和/或如果描述的系统、架构、装置或电路中的组件以不同的方式被组合,和/或由其他组件或它们的等同物替换或补充,则可实现合适的结果。
因此,除以上公开之外,公开的范围还可由权利要求及它们的等同物限定,并且在权利要求及它们的等同物的范围内的所有变化将被解释为包括在公开中。

Claims (20)

1.一种存储器内计算电路,包括:
多个存储器存储体,每个存储器存储体包括位单元和运算器,位单元被配置为存储权重值,运算器被配置为接收输入值,运算器与位单元连接,使得运算器在接收到输入值时输出输入值与权重值之间的逻辑运算结果;以及
逻辑门,被配置为接收所述多个存储器存储体中的每个的逻辑运算结果。
2.根据权利要求1所述的存储器内计算电路,其中,所述多个存储器存储体中的每个的逻辑运算结果是输入值和权重值的与非运算的值。
3.根据权利要求1所述的存储器内计算电路,其中,逻辑门是与非门。
4.根据权利要求1所述的存储器内计算电路,其中,逻辑门输出在所述多个存储体之中选择的存储器存储体的权重值与输入值之间的乘法结果。
5.根据权利要求4所述的存储器内计算电路,其中,没有被选择的存储器存储体中的每个接收输入值“0”。
6.根据权利要求1所述的存储器内计算电路,还包括:加法器,连接到逻辑门。
7.根据权利要求1所述的存储器内计算电路,其中,运算器包括:
相应的多个晶体管,被配置为输出与逐位乘法运算的结果对应的信号。
8.根据权利要求1所述的存储器内计算电路,其中,运算器包括:双晶体管电路,包括第一晶体管和第二晶体管,并且
输入值被施加到第一晶体管的第一栅极端子和第二晶体管的第二栅极端子,并且
穿过第一栅极端子的第一晶体管的输出值连接到穿过第二栅极端子的第二晶体管的输出值,从而输出逻辑运算结果。
9.根据权利要求8所述的存储器内计算电路,其中,基于存储在位单元中的权重值的值被施加到第一晶体管的漏极端子,
并且第一晶体管的源极端子经由第二晶体管的漏极端子连接到逻辑门的输入端子。
10.根据权利要求8所述的存储器内计算电路,其中,第一晶体管包括N型金属氧化物半导体晶体管,并且
第二晶体管包括P型金属氧化物半导体晶体管。
11.根据权利要求1所述的存储器内计算电路,其中,运算器包括三晶体管电路,包括传输门和第三晶体管,并且
输入值被施加到传输门的使能端子和第三晶体管的第三栅极端子,并且
传输门的输出值和穿过第三栅极端子的第三晶体管的输出值中的每个连接到门逻辑电路的输入,从而输出逻辑运算结果。
12.根据权利要求6所述的存储器内计算电路,其中,逻辑门被配置为:
根据输入值是否被施加到运算器,将与位单元对应的逻辑运算结果传送到加法器。
13.根据权利要求1至12中的任一项所述的存储器内计算电路,其中,所述IMC电路被集成到从包括以下各项的组中选择的至少一个装置中:移动装置、移动计算装置、移动电话、智能电话、个人数字助理、固定位置终端、平板计算机、计算机、可穿戴装置、膝上型计算机、服务器、音乐播放器、视频播放器、娱乐单元、导航装置、通信装置、全球定位系统装置、电视、调谐器、汽车、车辆部件、航空电子系统、无人机、多轴飞行器、以及医疗装置。
14.一种神经网络设备,所述神经网络设备包括存储器内计算IMC电路,所述神经网络设备包括:
阵列电路,包括多个IMC电路;以及
控制器,被配置为根据时钟信号将与所述神经网络设备的输入信号对应的第二值输入到所述多个IMC电路中的每个,并且控制所述多个IMC电路;
其中,所述多个IMC电路中的每个包括多个存储体存储体,每个存储器存储体包括位单元和运算器,位单元被配置为存储权重,运算器被配置为接收输入值,运算器连接到位单元,使得运算器在接收到输入值时输出输入值与权重值之间的逻辑运算结果,以及
逻辑门,被配置为接收所述多个存储器存储体中的每个的逻辑运算结果。
15.根据权利要求14所述的神经网络设备,其中,所述多个存储器存储体中的每个的逻辑运算结果是输入值和权重值的与非运算的值。
16.根据权利要求14所述的神经网络设备,其中,逻辑门是与非门。
17.根据权利要求14所述的神经网络设备,其中,控制器包括以下中的任何一个或任何组合:
输入特征图缓冲器,被配置为存储包括输入值的输入特征图;
控制电路,被配置为控制输入值是否被施加到所述多个IMC电路;以及
读写电路,被配置为读取或写入权重值。
18.一种存储器内计算IMC设备,包括:
存储器存储体,每个存储器存储体包括相应的位单元单位,
其中,每个位单元单位包括位单元和运算器,其中,没有位单元共享同一运算器;
逻辑门,被配置为接收相应的位单元单位的运算器的输出;以及
加法器,被配置为接收逻辑门的输出以执行乘法累加运算的至少一部分。
19.根据权利要求18所述的IMC设备,其中,相应的位单元单位中的每个的输出连接到逻辑门,其中,位单元中的每个被配置为存储相应的存储值,其中,位单元单位连接到相应的输入线,相应的输入线被配置为将相应的输入值提供给位单元单位,其中,所述IMC设备被配置为使得提供给位单元单位的输入值选择位单元单位中的哪个是由其运算器对其存储的值执行的运算的目标。
20.根据权利要求19所述的IMC设备,其中,不是运算的目标的位单元单位的存储值不能影响逻辑门的输出。
CN202310943369.5A 2022-08-30 2023-07-28 存储器内计算(imc)电路和设备、以及神经网络设备 Pending CN117636956A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR10-2022-0109261 2022-08-30
US18/351,039 US20240069867A1 (en) 2022-08-30 2023-07-12 Apparatus and method with in-memory computing (imc)
US18/351,039 2023-07-12
KR10-2023-0093290 2023-07-18

Publications (1)

Publication Number Publication Date
CN117636956A true CN117636956A (zh) 2024-03-01

Family

ID=90025886

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310943369.5A Pending CN117636956A (zh) 2022-08-30 2023-07-28 存储器内计算(imc)电路和设备、以及神经网络设备

Country Status (1)

Country Link
CN (1) CN117636956A (zh)

Similar Documents

Publication Publication Date Title
TWI714806B (zh) 動態隨機存取記憶體處理單元架構
US10748603B2 (en) In-memory multiply and accumulate with global charge-sharing
CN107832081B (zh) 更新存储器中的寄存器的设备及方法
WO2018189620A1 (ja) ニューラルネットワーク回路
TWI713047B (zh) Dram式處理單元的電路和微架構
US10854247B2 (en) Apparatuses and methods to selectively perform logical operations
Jaiswal et al. I-SRAM: Interleaved wordlines for vector Boolean operations using SRAMs
US20190295631A1 (en) Method and apparatus for storing and accessing matrices and arrays by columns and rows in a processing unit
CN114286977B (zh) 人工智能加速器
US20210357739A1 (en) Memory device to train neural networks
CN114077418A (zh) 存储器内运算方法及装置、存储器及存储介质
Angizi et al. Pisa: A binary-weight processing-in-sensor accelerator for edge image processing
CN116529818A (zh) 双端口、双功能存储器装置
CN112447249A (zh) 人工智能操作的调试操作
JP6919950B2 (ja) 記憶ユニットおよびスタティックランダムアクセスメモリ
US20240069867A1 (en) Apparatus and method with in-memory computing (imc)
CN117636956A (zh) 存储器内计算(imc)电路和设备、以及神经网络设备
EP4332751A1 (en) Apparatus and method with in-memory computing (imc)
KR102665969B1 (ko) Imc(in memory computing) 회로, imc 회로를 포함하는 뉴럴 네트워크 장치, 및 imc 회로의 동작 방법
EP4384899A1 (en) Partial sum management and reconfigurable systolic flow architectures for in-memory computation
KR20220096991A (ko) 컨볼루션 sram 및 대각방향 축적 sram을 포함하는 신경망 가속기
US20240028298A1 (en) Memory device and method with in-memory computing
US20240061649A1 (en) In-memory computing (imc) processor and operating method of imc processor
US20240094988A1 (en) Method and apparatus with multi-bit accumulation
CN117422113A (zh) 存储器装置和操作其的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication