存储器电路及其操作方法

文档序号:170898 发布日期:2021-10-29 浏览:36次 >En<

阅读说明:本技术 存储器电路及其操作方法 (Memory circuit and operation method thereof ) 是由 池育德 藤原英弘 史毅骏 李伯浩 陈炎辉 李嘉富 张琮永 于 2021-07-13 设计创作,主要内容包括:一种存储器电路包括选择电路、存储器单元的列和加法器树。选择电路被配置为接收输入数据元素,每个输入数据元素包括等于H的位数,并输出输入数据元素的H位中的所选择的第k位的集合。存储器单元的列的每个存储器单元包括被配置为存储第一权重数据元素的第一存储器单元和被配置为基于第一权重数据元素和所选集合的第k位生成第一乘积数据元素的第一乘法器第k位。加法器树被配置为基于第一乘积数据元素中的每个生成求和数据元素。本发明的实施例还涉及操作存储器电路的方法。(A memory circuit includes a selection circuit, a column of memory cells, and an adder tree. The selection circuitry is configured to receive input data elements, each input data element comprising a number of bits equal to H, and to output a selected set of kth bits of the H bits of the input data element. Each memory cell of the column of memory cells includes a first memory cell configured to store a first weight data element and a first multiplier kth bit configured to generate a first product data element based on the first weight data element and the kth bit of the selected set. The adder tree is configured to generate a summation data element based on each of the first product data elements. Embodiments of the invention also relate to methods of operating memory circuits.)

存储器电路及其操作方法

技术领域

本发明的实施例涉及存储器电路及其操作方法。

背景技术

存储器阵列通常用于存储和存取用于各种类型计算(例如逻辑或数学操作)的数据。为了执行这些操作,数据位在用于执行计算的存储器阵列和电路之间移动。在一些情况下,计算包括多个操作层,并且第一个操作的结果用作第二个操作中的输入数据。

发明内容

根据本发明实施例的一个方面,提供了一种存储器电路,包括:

选择电路,被配置为:接收多个输入数据元素,多个输入数据元素的每个输入数据元素包括等于H的位数量,和输出多个数据元素的每个输入数据元素的H个位的第k位的所选择的集合;

存储器单元的列,存储器单元的列的每个存储器单元包括:第一存储单位,用于存储第一权重数据元素;和第一乘法器,被配置为基于第一权重数据元素和第k位的所选择的集合的相应的第一第k位来生成第一乘积数据元素;以及

加法器树,被配置为基于第一乘积数据元素的每个生成求和数据元素。

根据本发明实施例的另一个方面,提供了一种操作存储器电路的方法,方法包括:在存储器单元的列处接收多个输入数据元素的H个位数量的每个输入数据元素的第k位的集合;使用存储器单元的列的每个存储器单元将多个数据元素的相应的输入数据元素的第k位与存储在存储器单元中的第一权重数据元素相乘,从而生成相应的第一乘积数据元素;以及使用加法器树来基于第一乘积数据元素的每个生成求和数据元素。

根据本发明实施例的又一个方面,提供了一种存储器电路,包括:选择电路,被配置为对于分别包括H个位的多个输入数据元素将所选择的第k位的集合顺序地输出到多个存储器单元的列的每个存储器单元的列的相应存储器单元;多个加法器树,多个加法器树中的每个加法器树耦接到多个存储器单元的列的相应的存储器单元的列;和多个累加器,多个累加器中的每个累加器耦接到多个加法器树中的相应的加法器树,

其中,每个存储器单元的列的每个存储器单元包括乘法器,乘法器被配置为基于所选择的第k位的集合中的相应的第k位和存储在存储器单元中的权重数据元素来生成乘积数据元素,多个加法器树中的每个加法器树被配置为对于每个顺序地输出的第k位的集合基于相应的存储器单元的列的乘积数据元素中的每个生成求和数据元素,以及多个累加器中的每个累加器被配置为基于由多个加法器树中的相应的加法器树生成的求和数据元素来生成部分和。

附图说明

当结合附图进行阅读时,从以下详细描述可最佳理解本发明的各个方面。应该强调,根据工业中的标准实践,各个部件未按比例绘制并且仅用于说明的目的。实际上,为了清楚的讨论,各个部件的尺寸可以任意地增大或减小。

图1A和图1B是根据一些实施例的存储器电路的图。

图2是根据一些实施例的选择电路的图。

图3A和图3B是根据一些实施例的存储器单元的图。

图4是根据一些实施例的加法器树的图。

图5是根据一些实施例的累加器的图。

图6是根据一些实施例的存储器阵列的部分的图。

图7A和图7B是根据一些实施例的存储器电路的部分的图。

图8是根据一些实施例的存储器电路工作电压的图。

图9是根据一些实施例的操作存储器电路的方法的流程图。

图10是根据一些实施例的操作存储器电路的方法的流程图。

具体实施方式

以下公开内容提供了许多用于实现本发明的不同特征不同的实施例或实例。下面描述了组件和布置的具体实施例或实例以简化本发明。当然,这些仅是实例而不旨在限制。例如,在以下描述中,在第二部件上方或者上形成第一部件可以包括第一部件和第二部件直接接触形成的实施例,并且也可以包括在第一部件和第二部件之间可以形成额外的部件,从而使得第一部件和第二部件可以不直接接触的实施例。此外,本发明可以在各个示例中重复参考数字和/或字母。该重复是为了简单和清楚的目的,并且其本身不指示讨论的各个实施例和/或配置之间的关系。

此外,为了便于描述,本文中可以使用诸如“在…下方”、“在…下面”、“下部”、“在…上面”、“上部”等的间隔关系术语,以描述如图中所示的一个元件或部件与另一元件或部件的关系。除了图中所示的方位外,间隔关系术语旨在包括器件在使用或操作工艺中的不同方位。装置可以以其它方式定位(旋转90度或在其它方位),并且在本文中使用的间隔关系描述符可以同样地作相应地解释。

在各种实施例中,存储器电路的存储器阵列包括存储器存储单元和数学操作单元,并且由此被配置为执行存储器内计算,由此基于输入数据元素和存储的权重数据元素生成部分和。与其中存储器阵列不包括被配置为执行存储器内计算的元件的方法相比,这种存储器电路能够使用更小的面积和更低的功率水平生成部分和。在各种应用中,例如卷积神经网络(CNN)应用中,存储器电路使存储的权重数据元素阵列能够有效地应用于一组或多组输入数据元素的乘法和累加(MAC)操作。

图1A和图1B是根据一些实施例的相应存储器电路100A和100B的图。每个存储器电路100A和100B包括耦接到输入数据总线IDB和相应存储器阵列120A或120B的选择电路110、输入/输出(I/O)电路130和耦接到存储器阵列120A或120B的相应存储器阵列的M个累加器140,以及通过控制信号总线CTRLB耦接到选择电路110、相应的存储器阵列120A或120B、I/O电路130和每个累加器140中的每个的控制电路150。

每个存储器阵列120A和120B包括对应于M个累加器140的M列C1-CM。存储器阵列120A包括N行存储器单元BCX,每行包括单个输入端子(未标记)和单个输出端子(未标示),每个输入端子因而对应于存储器阵列120B的N行数据中的一个。存储器阵列120B包括N/2行存储器单元BX2,每行包括两个输入端子(未标记)和单个输出端子(未标记),每个输入端子由此对应于存储器阵列120B的N行数据中的一个。如下所述,每个存储器电路100A和100B由此被配置为在输入数据总线IDB上接收多个N个输入数据元素A1-AN,每个输入数据元素A1-AN包括位的数量等于H。

表1描绘了输入数据元素A1-AN的数据结构,其中N个输入数据元素A1-AN中的每个包括H位数据。

表1

数据元素 位1 位2 .. 位H
A1 A11 A12 .. A1H
A2 A21 A22 .. A2H
: : : : :
AN AN1 AN2 .. ANH

如下所述,存储器电路100A和100B被配置为使得在操作中,每个存储器阵列120A和120B的每个列C1-CM同时接收每个输入数据元素A1-AN的相同编号位(第k位),即,来自选择电路110的位A1k-ANk的集合。每列基于接收的位A1k-ANk的集合和存储在相应存储器单元BCX或BX2中的权重数据元素执行数学操作,从而生成数量M个对应于列C1-CM的求和数据元素SD1-SDM。

计数器k通过H位中的每个(例如从1到H)循环,使得选择电路110以顺序选择的方式输出位A1k-ANk的集合,并且每一列对所选的计数器k的每个值的位A1k-ANk的集合进行重复数学操作,从而生成H个求和数据元素SD1-SDM的序列。累加器140被配置为基于求和数据元素SD1-SDM的序列生成相应的部分和PS1-PSM,并在相应的输出端口O1-OM上输出部分和PS1-PSM。

在图1A所示的实施例中,存储器阵列120A包括存储器单元BCX,其被配置为分别接收输入数据元素A1-AN的顺序选择的第k位的集合中的一位,并且在图1B所示的实施例中,存储器阵列120B包括存储器单元BX2,其被配置为分别接收输入数据元素A1-AN的顺序选择的第k位的集合的相邻数据元素的两个位。每个存储器电路100A和100B由此被配置为能够执行通过它们执行存储器计算的一些或全部方法,例如,下面关于图9和图10讨论的方法900或1000中的一个或两个。

在各种实施例中,存储器电路100A或100B被包括在神经网络(例如,CNN)、传感器(例如,磁、图像、振动或陀螺仪传感器)、射频(RF)器件、或其他集成电路(IC)器件中。

为了说明的目的,简化了每个存储器电路100A和100B。在各种实施例中,存储器电路100A或100B中的一个或两个包括除图1A和图1B中描绘的元件之外的各种元件,或以其他方式布置以执行下面讨论的操作。

两个或多个电路元件被认为是基于一个或多个直接信号连接和/或一个或多个间接信号连接而耦接的,这些连接包括一个或多个逻辑器件,例如,在两个或多个电路元件之间的反相器或逻辑门。在一些实施例中,两个或多个耦接电路元件之间的信号通信能够被一个或多个逻辑器件修改,例如,反相或有条件地进行。

选择电路110是一种电子电路,包括耦接到输入数据总线IDB的一个或多个数据寄存器(图1A和图1B中未示出),以及耦接到一个或多个数据寄存器和控制信号总线CTRLB的一个或多个多路复用器或类似电路(图1A和图1B中未示出)。

数据寄存器(在一些实施例中也称为缓冲器)是被配置为临时存储一个或多个数据元素中的一些或全部的电子电路,例如,每个输入数据元素A1-AN的H位。在各种实施例中,数据寄存器包括被配置为输入和输出数据位的端子的单个集合,或被配置为输入和输出数据位的端子的分离集合。

多路复用器是一种电子电路,包括配置为接收多个信号(例如,输入数据元素A1-AN中的一个的H位)的第一组端子、被配置为接收一个或多个控制信号(例如控制信号CTRL)的一个或多个开关器件(例如晶体管),并且至少一个端子被配置为响应于一个或多个控制信号而输出所接收信号中的所选择的一个。

选择电路110由此被配置为存储在输入数据总线IDB上接收的每个输入数据元素A1-AN的H位,并且响应于在控制信号总线CTRLB上接收的一个或多个控制信号CTRL,输出所选择的第k位A1k-ANk的集合到相应的存储器阵列120A或120B中的一个。对于每个输入数据元素A1-AN,相应的所选择的第k位A1k-ANk是总K位中相同的第k位。在一些实施例中,选择电路110包括下面关于图2讨论的选择电路200。

在一些实施例中,选择电路110被配置为接收数量N的输入数据元素A1-AN,其范围从4到512。在一些实施例中,选择电路110被配置为接收数量N的输入数据元素A1-AN,其范围从32到128。

在一些实施例中,选择电路110被配置为接收范围从1到16的每个输入数据元素A1-AN的数量H个位。在一些实施例中,选择电路110被配置为接收范围从4到8的每个输入数据元素A1-AN的数量H个位数。

在各种实施例中,一个或多个控制信号CTRL被配置为在操作中使选择电路110从最低有效位(LSB)到最高有效位(MSB)或从MSB到LSB顺序地输出第k位的集合A1k-ANk。在各种实施例中,一个或多个控制信号CTRL被配置为使选择电路110顺序地输出H个位的集合的整体或H个位的集合的子集。在一些实施例中,每个输入数据元素A1-AN包括少于H个位的数量,并且一个或多个控制信号CTRL被配置为使选择电路110顺序地输出接收位数量的全部或子集.

在各种实施例中,一个或多个控制信号CTRL被配置为使选择电路110对于计数器k的每个值输出相应的所选择的第k位A1k-ANk集合的整体或子集。在一些实施例中,多个输入数据元素包括小于N的数量的数据元素,并且一个或多个控制信号CTRL被配置为对于计数器k的每个值,使选择电路110输出接收到的数据元素数量的相应第k位集合A1k-ANk的整体或子集。

每个存储器阵列120A和120B是包括M列C1-CM的电子电路,每个列C1-CM包括加法器树122,如下所述,以及耦接到加法器树122的相应存储器单元BCX或BX2。每列C1-CM的存储器单元BCX或BX2进一步耦接到选择电路110,并由此在操作中被配置为每列C1-CM基于计数器k同时接收从选择电路110输出的所选择的第k位集合A1k-ANk。

因为每个存储器单元BCX被配置为接收单个数据元素A1-AN的位,所以存储阵列120A包括总共N行R1-RN的存储器单元BCX,使得每行R1-RN对应于存储阵列120A的数据的行。因为每个存储器单元BX2被配置为接收两个数据元素A1-AN的位,所以存储阵列120B包括总共L行R1-RL的存储器单元BX2,数量L等于N/2,使得每行R1-RL对应存储器阵列120B的数据的两行。在图1A和图1B中描绘的实施例中,存储器单元BCX或BX2的每个实例包括位置指示符,例如21,对应于给定实例所在的列和行。

在一些实施例中,存储器阵列120A或120B包括范围从2到512的列C1-CM的数量M。在一些实施例中,存储器阵列120A或120B包括范围从16到128的列C1-CM的数量M。

在图1A和图1B所示的实施例中,每个存储器阵列120A和120B包括行R1-RN或R1-RL和列C1-CM的单个阵列层。在一些实施例中,存储器阵列120A或120B中的一个或两个包括一个或多个阵列层(未示出),除了图1A和图1B中描绘的单层的行和列之外,还包括除这些单层之外的行和列。

存储器单元BCX包括耦接到乘法器(图1A和图1B中未示出)的存储元件。存储元件是被配置为存储由逻辑状态表示的一个或多个数据位的电气、机电、电磁或其他器件。在一些实施例中,逻辑状态对应于存储在部分或全部存储元件中的电荷的电压电平。在一些实施例中,逻辑状态对应于存储元件的一部分或全部的物理特性,例如电阻或磁取向。

在一些实施例中,存储元件包括一个或多个静态随机存取存储器(SRAM)单元。在各种实施例中,SRAM单元(例如五晶体管(5T)、六晶体管(6T)、八晶体管(8T)或九晶体管(9T)SRAM单元)包括范围从两个到十二个的晶体管。在一些实施例中,SRAM单元包括多轨SRAM单元。在一些实施例中,SRAM单元包括比宽度大至少两倍的长度。

在一些实施例中,存储元件包括一个或多个动态随机存取存储器(DRAM)单元、电阻式随机存取存储器(RRAM)单元、磁阻式随机存取存储器(MRAM)单元、铁电随机存取存储器(FeRAM)单元、NOR闪存单元、NAND闪存单元、导电桥接随机存取存储器(CBRAM)单元、数据寄存器、非易失性存储器(NVM)单元、3DNVM单元或其他能够存储位数据的存储器单元类型。

在一些实施例中,存储元件被配置为存储范围从1到16的多个数据位。在一些实施例中,存储元件被配置为存储范围从4到8的多个数据位。

存储元件包括一个或多个I/O连接(未示出),通过这些I/O连接在写操作中对逻辑状态进行编程并在读操作中存取,例如乘法操作。

乘法器是一种电子电路,包括一个或多个逻辑门,逻辑门被配置为基于接收到的数据位(例如,所选择的第k位A1k-ANk中的一个)和接收到的数据元素(例如,存储在存储元件中的多位权重数据元素)执行数学操作(例如乘法),从而生成等于输入数据位和输入数据元素的乘积的乘积数据元素。在一些实施例中,乘法器被配置为生成包括与接收到的数据元素的位数相等的位数的乘积数据元素。在各种实施例中,乘法器包括一个或多个AND(与)门或NOR(或非)门或适合于执行一些或全部乘法操作的其他电路。

通过包括耦接到乘法器并被配置为存储权重数据元素的存储元件,以及耦接到选择电路110并被配置为接收所选择的第k位A1k-ANk集合中的一位的乘法器,每个存储器单元BCX被配置为基于所选择的第k位集合A1k-ANk中的一位和对应于给定存储器单元BCX在存储器阵列120A内的位置的权重数据元素来生成乘积数据元素P11-PMN。在一些实施例中,存储器单元BCX包括以下关于图3A讨论的存储器单元300A。

存储器单元BX2包括耦接到第一乘法器的第一存储元件、耦接到第二乘法器的第二存储元件以及耦接到第一和第二乘法器的加法器(图1A和图1B中未示出)。第一存储元件和乘法器被配置为生成如上关于存储器单元BCX讨论的第一乘积数据元素,并且第二存储元件和乘法器被配置为生成如以上关于存储器单元BCX讨论的第二乘积数据元素。

加法器是包括一个或多个逻辑门的电子电路,逻辑门被配置为基于接收的第一和第二数据元素(例如由第一和第二乘法器生成的第一和第二乘积数据元素)执行数学操作(例如加法),从而生成与接收到的第一和第二数据元素之和相等的求和数据元素。在一些实施例中,加法器被配置为生成包括比接收到的第一和第二数据元素中的每个的位数大一的位数的求和数据元素。在各种实施例中,加法器包括一个或多个全加器门、半加器门、纹波进位加法器电路、进位保存加法器电路、进位选择加法器电路、进位超前加法器电路或其他适合于执行部分或全部加法操作的电路。

通过包括被配置为基于所选择的第k位集合A1k-ANk的第一位和第一存储的权重数据元素生成第一乘积数据元素的第一乘法器,被配置为基于所选择的第k位A1k-ANk集合的第二位生成第二乘积数据元素的第二乘法器,以及耦接到第一和第二乘法器中的每个的加法器,每个存储器单元BX2被配置为基于所选择的一组第k位A1k-ANk和对应于存储阵列120B内的给定存储器单元BX2的位置的第一和第二权重数据元素生成求和数据元素S11-SML。在一些实施例中,存储器单元BX2包括以下关于图3B讨论的存储器单元300B。

加法器树122是包括多层加法器(图1A和图1B中未示出)的电子电路,其中第一层被配置为接收多个数据元素,例如乘积数据元素P11-PMN或求和数据元素S11-SML,并且最后一层包括单个加法器,该加法器被配置为基于接收到的多个数据元素生成数据元素,例如求和数据元素SD1-SDM。在一些实施例中,第一层和最后一层之间的一个或多个连续层中的每一层被配置为接收由前一层生成的第一数量的求和数据元素,并基于第一数量的求和数据元素生成第二数量的求和数据元素。第二个数量是第一数量的一半。因此,总层数包括第一层和最后一层以及每个连续层(如果存在)。在一些实施例中,加法器树122包括下面关于图4讨论的加法器树400。

加法器树122由此被配置为接收具有等于二的数量的多个数据元素,该数据元素的幂等于总层数,从而数据元素的数量是总层数的二进制指数。在图1A所示的实施例中,存储器阵列120A包括加法器树122的每个实例,其包括层的总数使得二的层总数次幂等于N个乘积数据元素,例如P11-P1N。在图1B所示的实施例中,存储器阵列120B包括加法器树122的每个实例,其包括层的总数使得二的层总数次幂等于L个求和数据元素,例如S11-S1L。

在一些实施例中,加法器树122包括范围从2到9的层总数。在一些实施例中,加法器树122包括范围从4到7的层总数。

在一些实施例中,加法器树122的每一层中的每个加法器被配置为生成相应的求和数据元素,其包括比前一层的求和数据元素的位数大一的位数,或者,在第一层的情况下,接收多个数据元素中的数据元素。

在图1A中描绘的一些实施例中,加法器树122包括被配置为接收乘积数据元素P11-PMN的第一层,其包括与存储在每个存储器单元BCX中的权重数据元素的位数相等的第一位数量,以及被配置为生成求和数据元素SD1-SDM的最后一层,求和数据元素SD1-SDM包括等于第一位数量加上等于加法器树122中的总层数的值的第二位数量。

在图1B中描绘的一些实施例中,加法器树122包括被配置为接收求和数据元素S11-SML的第一层,其包括比存储在每个存储器单元BX2中的权重数据元素的位数大一的第一位数量,以及被配置为生成求和数据元素SD1-SDM的最后一层,求和数据元素SD1-SDM包括等于第一位数量加上等于加法器树122中的总层数的值的第二位数量。

I/O电路130是通过一个或多个字线、一个或多个位线和/或一个或多个数据线(未示出)耦接到控制信号总线CTRLB和存储器阵列120A的每个存储器单元BCX或存储器阵列120B的每个存储器单元BX2中的每个存储元件的一个或多个I/O连接的电子电路。I/O电路130从而被配置为响应于在控制信号总线CTRLB上接收到的一个或多个控制信号CTRL,在写操作中将每个存储器单元BCX或BX2编程为一个或多个逻辑状态并且使一个或多个逻辑状态被存储在读取操作中要存取的每个存储器单元BCX或BX2中。

累加器140是耦接到控制信号总线CTRLB并包括一个或多个加法器、一个或多个数据寄存器和一个或多个移位器(图1A和图1B中未示出)的电子电路,这些移位器以反馈布置共同耦接。一个或多个加法器耦接到加法器树122并由此被配置为接收求和数据元素SD1-SDM中的一个,每个求和数据元素SD1-SDM是顺序的H个求和数据元素SD1-SDM的序列中的一个,其对应于基于计数器k从选择电路110输出的所选择的第k位集合A1k-ANk。

一个或多个加法器还被配置为接收从一个或多个移位器输出的移位数据元素,并基于移位数据元素和求和数据元素SD1-SDM中的一个生成内部求和数据元素。一个或多个数据寄存器被配置为从一个或多个加法器接收内部求和数据元素,存储内部求和数据元素,并将存储的内部求和数据元素输出到一个或多个移位器和相应的输出端口O1-OM中的一个。一个或多个移位器被配置为接收从一个或多个数据寄存器输出的存储的内部数据元素,并通过在MSB方向或LSB方向上将存储的内部数据元素移位一位来生成移位的数据元素。

累加器140由此被配置为响应于在控制信号总线CTRLB上接收到的一个或多个控制信号CTRL,执行累加操作,由此存储的内部求和数据元素随着求和数据元素SD1-SDM的序列中的每个而增加。一个或多个控制信号CTRL是基于和/或包括计数器k信息,从而被配置为使累加操作与第k位集合A1k-ANk的顺序选择相协调,使得存储的内部数据元素与第k个位组A1k-ANk的顺序生成的时序和MSB/LSB方向同步被移位并添加到接收的求和数据元素SD1-SDM。

在操作中,基于循环计数器k在第k位集合A1k-ANk的H位跨度和求和数据元素SD1-SDM的相应H个实例的跨度上执行累加操作,导致内部数据元素被存储在一个或多个数据寄存器中,以在相应的输出端口O1-OM上输出作为部分和PS1-PSM中相应的一个。

控制电路150是被配置为通过生成控制信号CTRL并在控制信号总线CTRLB上输出控制信号CTRL来控制存储器电路100A或100B的操作的电子电路。在操作中,根据上面和下面讨论的实施例,选择电路110、存储器阵列120A或120B、I/O电路130和累加器140从控制信号总线CTRLB接收控制信号CTRL。在一些实施例中,控制电路150被配置为生成包括和/或基于一个或多个时钟信号的控制信号CTRL。

在各种实施例中,控制电路150包括硬件处理器152和非暂时性计算机可读存储介质154。除其他外,计算机可读存储介质154编码有(即,存储)计算机程序代码(即一组可执行指令)。硬件处理器152对指令的执行代表(至少部分地)存储器电路操作工具,其实现例如下面关于图9讨论的方法900和/或下面关于图10讨论的方法1000(下文中,提到的过程和/或方法)的部分或全部。

在各种实施例中,处理器152通过I/O接口电耦接到计算机可读存储介质154,并通过总线电耦接到网络(细节未示出)。网络接口连接到网络(未示出),使得处理器152和计算机可读存储介质154能够经由网络连接到外部元件。处理器152被配置为执行在计算机可读存储介质154中编码的计算机程序代码,以便使控制电路150和存储器电路100A或100B可用于执行部分或全部所述过程和/或方法。在一个或多个实施例中,处理器152是中央处理单元(CPU)、多处理器、分布式处理系统、专用集成电路(ASIC)和/或合适的处理单元。

在一个或多个实施例中,计算机可读存储介质154是电子、磁、光、电磁、红外线和/或半导体系统(或装置或器件)。例如,计算机可读存储介质154包括半导体或固态存储器、磁带、可移动计算机软盘、RAM、SRAM、DRAM、只读存储器(ROM)、硬磁盘、和/或光盘。在使用光盘的一个或多个实施例中,计算机可读存储介质154包括光盘只读存储器(CD-ROM)、光盘读/写(CD-R/W)和/或数字视频光盘(DVD)。

在一个或多个实施例中,计算机可读存储介质154存储计算机程序代码,该计算机程序代码被配置为使控制电路150生成控制信号,以便可用于执行部分或全部所述过程和/或方法。在一个或多个实施例中,计算机可读存储介质154还存储有助于执行部分或全部所述过程和/或方法的信息。

通过上述配置,每个存储器电路100A和100B在操作中能够在输入数据总线IDB上接收输入数据元素A1-AN,使用选择电路110顺序地选择第k位集合A1k-ANk,接收在存储器单元BCX或BX2的每一列C1-CM处的所选择的位集合A1k-ANk的序列,并使用存储器单元BCX或BX2和相应的加法器树122执行一系列同步的数学操作,由此部分和PS1-PSM在输出端口O1-OM上输出。通过包括存储器阵列120A或120B,相应的存储器电路100A或100B被配置为执行存储器内计算,由此基于输入数据元素A1-AN和存储的权重数据元素生成至少一个部分和PS1-PSM。与其中存储器阵列不包括被配置为执行存储器内计算的元件的方法相比,这种存储器电路能够使用更小的面积和更低的功率水平生成部分和。

图2是根据一些实施例的选择电路200的图。选择电路200(在一些实施例中也称为多路复用电路200)可用作上面关于图1A和图1B讨论的选择电路110。选择电路200包括耦接到输入数据总线IDB的数据寄存器200R,以及耦接到数据寄存器200R和控制信号总线CTRLB的多个N个多路复用器M1-MN。

数据寄存器200R包括耦接到输入数据总线IDB的第一组端子(未示出)并且由此被配置为接收包括H位的每个输入数据元素A1-AN的位数据,并且临时存储位数据。在各种实施例中,数据寄存器200R被配置为在操作中并行或串行接收位数据。数据寄存器200R包括耦接到多路复用器M1-MN的第二组端子(未标出)并且由此被配置为在操作中将H位的每个输入数据元素A1-AN中的每个(如图2所示为A11-A1H、A21-A2H、...AN1-ANH)输出到多路复用器M1-MN。

多路复用器M1-MN对应于输入数据元素A1-AN,使得每个多路复用器M1-MN包括一组端子(未标记),其被配置为接收相应数据元素A1-AN的H位。每个多路复用器M1-MN包括相应的输出端M10-MNO,并由此被配置为在操作中响应于在控制信号总线CTRLB上接收到的一个或多个控制信号CTRL在相应的输出端O1-ON上输出相应数据元素A1-AN的所选择的第k位A1k-ANk。多路复用器M1-MN和一个或多个控制信号CTRL被配置为在操作中同时输出每个数据元素A1-AN的相同第k位,从而如上所述基于计数器k生成第k位集合A1k-ANk。

选择电路200由此被配置为能够执行上面关于选择电路110以及图1A和图1B讨论的操作。通过包括选择电路200作为选择电路110,每个存储器电路100A和100B都能够实现上面讨论的益处。

图3A和图3B是根据一些实施例的相应存储器单元300A和300B的图。存储器单元300A,在一些实施例中也称为位单元300A,可用作上文关于图1A讨论的存储器单元BCX的一个或多个实例。存储器单元300B,在一些实施例中也称为位单元300B,可用作以上关于图1B讨论的存储器单元BX2的一个或多个实例。

为了说明的目的,简化了每个存储器单元300A和300B。在各种实施例中,存储器单元300A或300B中的一个或两个包括除图3A和图3B中描绘的那些之外的各种元件,或者以其他方式布置以执行下面讨论的操作。在各种实施例中,存储器单元300A或300B包括到一个或多个字线、一个或多个位线和/或一个或多个数据线(未示出)的多个电连接,从而电连接到I/O电路130,上面关于图1A和图1B讨论,通过它们存储和/或存取下面讨论的权重数据元素WTmn和WTm(n+1)。

每个存储器单元300A和300B包括耦接到乘法器MUL1的存储单元SU1。存储器单元300B还包括耦接到乘法器MUL2的存储单元SU2和耦接到乘法器MUL1和MUL2中的每个的加法器ADD。

存储单元SU1被配置为存储权重数据元素WTmn,并且存储单元SU2被配置为存储权重数据元素WTm(n+1)。在一些实施例中,指示符m对应于列C1-CM的数量M中的一个,而指示符n对应于存储器阵列120A或120B的数据行的数量N中的一个。

在各种实施例中,每个存储单元SU1和SU2被配置为存储包括单个位或多个位的相应权重数据元素WTmn或WTm(n+1)。在一些实施例中,存储单元SU1或SU2中的一个或两个被配置为存储相应的权重数据元素WTmn或WTm(n+1),其包括范围从1到16的多个位。在一些实施例中,存储器单元中的一个或两个单元SU1或SU2被配置为存储相应的权重数据元素WTmn或WTm(n+1),包括范围从4到8的位数。在一些实施例中,存储单元SU1或SU2中的一个或两者被配置为存储相应的权重数据元素WTmn或WTm(n+1),其包括可编程的位数。

每个乘法器MUL1和MUL2被配置为执行乘法操作,该乘法操作包括与给定乘法器MUL1或MUL2耦接的相应存储单元SU1或SU2的位数相等的位数。乘法器MUL1被配置为接收来自存储单元SU1的权重数据元素WTmn和第k位A1k-ANk中的第一个,如图3A和图3B示为Ank,并将乘积输出为乘积数据元素Pmn。

在一些实施例中,例如,在其中存储器单元300A用作存储器单元BCX的那些实施例中,基于指示符m和n,乘积数据元素Pmn对应于上文关于图1A讨论的乘积数据元素P11-PMN中的一个。存储器单元300A由此被配置为能够执行上面关于存储器单元BCX和图1A讨论的操作。

乘法器MUL2被配置为接收来自存储单元SU2的权重数据元素WTm(n+1)和第k位A1k-ANk中的第二个,如图3B示为A(n+1)k,并将乘积作为乘积数据元素Pm(n+1)输出。

加法器ADD被配置为接收具有相应乘法器MUL1或MUL2的位数的每个乘积数据元素Pmn和Pm(n+1),执行加法操作,并将和作为求和数据元素Sml输出,其具有比每个乘积数据元素Pmn和Pm(n+1)的位数大1的位数。在一些实施例中,指示符l对应于存储器阵列120B的L行存储器单元BX2中的一个。

在一些实施例中,例如,其中存储器单元300B用作存储器单元BX2的那些实施例中,基于指示符m和l的求和数据元素Sml对应于上文关于图1B讨论的求和数据元素S11-SML中的一个。存储器单元300B由此被配置为能够执行以上关于存储器单元BX2和图1B所讨论的操作。

通过将存储器单元300A包括为存储器单元BCX的一个或多个实例或将存储器单元300B包括为存储器单元BX2的一个或多个实例,相应的存储器电路100A或100B能够实现上述的益处。

图4是根据一些实施例的加法器树400的图。加法器树400可用作上面关于图1A和图1B所讨论的加法器树122。加法器树400包括u层的加法器ADD1-ADDu。

第一层加法器包括加法器ADD1,其被配置为接收数量U(=2u)的求和数据元素SUM11-SUM1U,从而第一层包括数量U/2的加法器ADD1。在一些实施例中,例如,在其中加法器树400用作存储器阵列120A的列C1-CM中的加法器树122的那些实施例中,求和数据元素SUM11-SUM1U对应于由相应的存储器列输出的多个乘积数据元素单元BCX,例如,由列C1输出的乘积数据元素P11-P1N,上面关于图1A进行了讨论。在一些实施例中,例如,在存储器阵列120B的列C1-CM中使用加法器树400作为加法器树122的那些实施例中,求和数据元素SUM11-SUM1U对应于由相应的存储器列输出的多个求和数据元素单元BX2,例如,对列C1输出的数据元素S11-S1L求和,如上面关于图1B所讨论的。

每个加法器ADD1被配置为对求和数据元素SUM11-SUM1U的相应接收的求和数据元素对(例如SUM11和SUM12)执行加法操作,并将和作为求和数据元素SUM21-SUM2(U/2)中的相应一个输出。加法器ADD1被配置为接收包括第一位数量的求和数据元素SUM11-SUM1U,例如,上面关于图1A讨论的乘积数据元素P11-PMN或上面关于图1B讨论的求和数据元素S11-SML的位数量,并且输出求和数据元素SUM21-SUM2(U/2),求和数据元素SUM21-SUM2(U/2)包括比第一位数量大一的第二位数量。

第二层加法器包括数量为U/4的加法器ADD2。每个加法器ADD2被配置为对求和数据元素SUM21-SUM2(U/2)的相应接收的求和数据元素对(例如SUM21和SUM22)执行加法操作,并将和作为求和数据元素SUM31-SUM3(U/4)中的相应一个输出。加法器ADD2被配置为接收包括第二位数量的求和数据元素SUM21-SUM2(U/2)和输出包括比第二位数量大一的第三位数量的求和数据元素SUM31-SUM3(U/4)。

最后一层加法器包括单个加法器ADDu,该加法器被配置为对从前一层加法器接收的求和数据元素对SUMu1和SUMu2执行加法操作,并将该和作为求和数据元素SDm输出。加法器ADDu被配置为接收包括第四位数量的求和数据元素SUMu1和SUMu2,并且输出包括比第四位数量大并且等于第一位数量加上数值u的第五位数量的求和数据元素SDm。在一些实施例中,例如,在其中使用加法器树400作为加法器树122的那些实施例中,求和数据元素SDm对应于上文关于图1A和图1B讨论的求和数据元素SD1-SDM中的一个。

在各种实施例中,加法器树400包括一个或多个附加的加法器层,位于图4所示的第二层和最后一层之间,每个附加层被配置为与上面讨论的第一层、第二层和最后层的配置一致,使得在操作中,基于接收的求和数据元素SUM11-SUM1U生成求和数据元素SDm。在一些实施例中,加法器树400不包括第二层加法器ADD2,因此包括总共u=2层,使得在操作中,基于总共U=4个求和数据元素SUM11-SUM1U生成求和数据元素SDm。

在一些实施例中,加法器树400从而包括范围从2到9的层总数。在一些实施例中,加法器树400从而包括范围从4到7的层总数。

加法器树400由此被配置为能够执行上面关于加法器树122和图1A和图1B讨论的操作。通过包括加法器树400作为加法器树122,每个存储器电路100A和100B都能够实现上面讨论的好处。

图5是根据一些实施例的累加器500的图。累加器500,在一些实施例中也称为部分求和电路500,可用作上文关于图1A和图1B所讨论的累加器140。累加器500包括耦接到数据寄存器R1和移位器SH1中的每个的加法器ADDA。移位器SH1还耦接到数据寄存器R1,从而加法器ADDA、数据寄存器R1和移位器SH1由此共同耦接在反馈布置中。

加法器ADDA被配置为在操作中接收求和数据元素SDm,如上文关于图4所讨论的。在一些实施例中,例如,在其中使用累加器500作为累加器140的那些实施例中,求和数据元素SDm对应于上文关于图1A和图1B讨论的求和数据元素SD1-SDM中的一个。

加法器ADDA还被配置成在操作中接收从移位器SH1输出的移位数据元素SDE,并基于移位数据元素SDE和求和数据元素SDm生成内部求和数据元素IDE。数据寄存器R1被配置为从加法器ADDA接收内部求和数据元素IDE,存储内部求和数据元素IDE,并将存储的内部求和数据元素IDE输出到移位器SH1和输出端口Om。移位器SH1被配置为接收从数据寄存器R1输出的存储内部数据元素IDE,并通过在MSB方向或LSB方向上将存储的内部数据元素IDE移位一位来生成移位数据元素SDE。

因此,累加器500被配置为响应于在控制信号总线CTRLB(图5中未示出)上接收到的一个或多个控制信号CTRL,执行累加操作,由此存储的内部求和数据元素IDE随着接收的求和数据元素SDm的序列中的每个而增加。在求和数据元素SDm的多个实例上执行累加操作,从而导致存储在数据寄存器R1中的内部数据元素IDE在输出端口Om上输出作为求和数据元素SDm的多个实例的部分和PSm。

在一些实施例中,例如,在将累加器500用作累加器140的那些实施例中,输出端口Om上的部分和PSm对应输出到关于图1A和图1B所讨论的相应输出端口O1-OM上的部分和PS1-PSM输出中的一个。

累加器500由此被配置为能够执行上文关于累加器140和图1A和图1B所讨论的操作。通过包括累加器500作为累加器140,每个存储器电路100A和100B都能够实现上面讨论的好处。

图6是根据一些实施例的存储器阵列120A或120B(120A/120B)的部分的图。图6包括存储器单元BCX或BX2(BCX/BX2)的多个实例和加法器树122的实例,每个都在上面关于图1A和图1B讨论。在图6所示的实施例中,存储器阵列120A/120B还包括耦接在存储器单元BCX/BX2和加法器树122之间的多路复用器MA。为了说明的目的简化了图6。

多路复用器MA被配置为选择性地将一个或多个存储器单元BCX/BX2耦接到加法器树122,使得在操作中,响应于在控制信号总线CTRLB(图6中未示出)上接收到的一个或多个控制信号CTRL,从存储器单元BCX/BX2输出的数据元素(例如乘积数据元素P11-PMN或上面关于图1A和图1B讨论的和数据元素S11-SML)被选择性地传播到加法器树122。在各种实施例中,存储器单元BCX/BX2被包括在同一列C1-CM中或被包括在分离的列C1-CM中,从而加法器树122在两个列C1-CM之间共享。

通过上述配置,存储器电路100A或100B包括存储器阵列120A/120B,该存储器阵列120A/120B包括在多个存储器单元BCX/BX2之间共享的至少一个加法器树122。在这样的实施例中,与其中存储器阵列不包括在多个存储器单元之间共享的至少一个加法器树的方法相比,存储器电路100A或100B由此能够使用更小的面积生成部分和。

图7A和图7B是根据一些实施例的存储器电路100A或100B(100A/100B)的部分的图。图7A和图7B描绘了其中组合两个或更多个部分和PS1-PSM的非限制性示例,并且为了说明的目的而被简化。

在图7A所示的实施例中,存储器电路100A/100B包括相应的存储器阵列120A/120B和累加器140的两个实例,每个实例都在上面关于图1A和图1B进行了讨论。在图7A所示的实施例中,累加器140的第一实例的输出端口O2耦接到累加器140的第二实例,使得在操作中,部分和PS2被累加器140的第二实例接收并且包括的部分和PS1在输出端口O1上输出。在一些实施例中,例如响应于在控制信号总线上接收的一个或多个控制信号CTRLCTRLB(图7A或图7B中未示出),累加器140的两个实例被配置为在操作中选择性地输出部分和PS1和PS2而不在部分和PS1中包括部分和PS2。

在图7B所示的实施例中,存储器电路100A/100B包括列C1-C4(包括累加器140的相应实例)中的每一列,其被配置为在操作中接收输入数据总线IDB上的输入数据元素A1-AN并输出相应的部分和PS1-PS4,如上面关于图1A和图1B讨论的。在图7B所示的实施例中,存储器电路100A/100B还包括加法器ADDSUM,其被配置为在操作中接收每个部分和PS1-PS4,并基于每个部分和PS1-PS4生成组合部分和OSUM。在一些实施例中,例如响应于在控制信号总线CTRLB上接收的一个或多个控制信号CTRL,存储器电路100A/100B被配置为在操作中选择性地输出部分和PS1-PS4而不输出部分和OSUM。

在图7A和图7B中描绘的每个非限制性示例中,在操作中,从存储器电路100A/100B输出的部分和PS1或OSUM是基于每个输入数据元素A1-AN与列C1-CM中的两个或多个列中的存储器单元BCX/BX2组合。部分和PS1或OSUM由此基于存储在存储器单元BCX/BX2中的权重数据元素的组合位生成,使得与部分和是基于与列C1-CM中的单个列组合的输入数据元素A1-AN的实施例相比,部分和PS1或OSUM的分辨率或精度增加PS1-PSM。

在一些实施例中,存储器单元BCX/BX2包括权重数据元素,该权重数据元素包括总共四个位,使得在操作中,在图7A中描绘的实施例中,部分和PS1是基于总共八位权重数据元素而输出的,并且在图7B所示的实施例中,部分和OSUM基于总共十六位的权重数据元素被输出。

图7A和图7B中描绘的实施例是为了说明的目的而提供的非限制性示例。在各种实施例中,存储器电路100A/100B被另外配置以基于组合存储的权重数据元素生成一个或多个部分和,从而与部分和与不基于组合权重数据元素的实施例相比提高分辨率。

图8是根据一些实施例的存储器电路工作电压VDD的图。在图8所示的实施例中,工作电压VDD是存储器电路100A或100B在其中操作的电源域的电源电压,如上面关于图1A和图1B所讨论的。工作电压VDD包括三个电源电压电平0V、VDD1和VDD2,其中电源电压电平VDD1大于电源电压电平VDD2。图8中描绘的电压电平和时序关系,例如相对持续时间和/或幅度以及序列是为说明目的而提供的非限制性示例。

电源电压电平0V代表断电模式,其中不执行存储器电路操作。在一些实施例中,存储器阵列120A或120B包括存储单元SU1和SU2(如果存在的话),包括非易失性存储器单元,使得在操作电压VDD的整个一个或多个周期期间权重数据元素WTmn和/或WTm(n+1)被保留具有电压电平为0V。

电源电压电平VDD1代表I/O模式,在此期间,一个或多个权重元件WTmn和/或WTm(n+1)在一个或多个写操作和/或在一个或多个读操作中存取。

电源电压电平VDD2代表计算模式,在该模式期间执行一个或多个存储器内计算操作,如上文关于图1A和图1B所讨论的和/或如下文关于方法900和1000所讨论的。

在图8所示的实施例中,通过以低于电源电压电平VDD1的电源电压电平VDD2执行存储器计算,与在具有与输入输出模式的电源电压电平相同的电压电平的计算模式下执行存储器计算的方法相比,降低了功耗。

图9是根据一些实施例的操作存储器电路的方法900的流程图。方法900可与存储器电路一起使用,例如上面关于图1A和图1B讨论的存储器电路100A或100B。

图9中描述了方法900的操作的顺序。图9仅作说明;方法900的操作能够同时执行或以不同于图9所示的顺序执行。在一些实施例中,除了图9中描绘的那些操作之外,还可以在图9所示操作之前、之间、期间和/或之后执行进行操作。在一些实施例中,方法900的操作是操作IC(例如传感器、RF器件、处理器、逻辑或信号处理电路等)的方法的子集。在各种实施例中,方法900的一个或多个操作是下面关于图10讨论的方法1000的子集。

方法900是部分和计算的非限制性示例,其中针对列C1-CM中的相应第m列计算部分和PS1-PSM的实例PSm,如以上关于图1A-图5所讨论的。在图9所示的实施例中,计数器k循环通过每个输入数据元素A1-AN的H位中的每个。在计数器k的每个值处,计算对应于求和数据元素SD1-SDM的实例的求和数据元素Pk,作为相应的第k位和权重数据元素Wmn的N个乘积之和。部分和PSm是通过累加数据元素Pk生成的,如下所述。

在操作910,计数器k被初始化为零。在一些实施例中,初始化计数器k包括使用上面关于图1A-图5讨论的控制电路150。

在一些实施例中,将计数器k初始化为零包括将一个或多个数据寄存器的内容设置为零。在一些实施例中,将计数器k初始化为零包括将数据寄存器R1的内部数据元素IDE设置为零,如上文关于累加器500和图5所讨论的。

在操作920处,计数器k增加1,并且基于计数器k的值生成求和数据元素Pk。生成求和数据元素Pk包括在从n=1到N定义的范围内对对应于存储器阵列120A或120B中的N行数据中的每一行的乘积数据元素进行求和。每个第n乘积数据元素是对应于计数器n和k的输入数据元素An的第k位Ank,乘以相应的权重数据元素Wmn或Wm(n+1)。对范围n=1到N上的所得乘积数据元素求和从而生成与求和数据元素SD1-SDM的实例相应的求和数据元素Pk

在一些实施例中,生成求和数据元素Pk包括使用对应于列C1-CM中的第m列的加法器树122来求和由存储器单元BCX在n=1至n=N的范围内输出的乘积数据元素Pmn,如上文关于存储器电路100A和图1A-图5所讨论的。在一些实施例中,生成求和数据元素Pk包括使用存储器单元BX2在l=1到l=L的范围内生成求和数据元素Sm1-Sml,并且使用对应于列C1-CM中的第m个的加法器树122对由存储器单元BX2输出的和积数据元素Sm1-Sml求和,如上面关于存储器电路100B和图1A-图5讨论的。

在操作930处,基于计数器k的值生成部分求和数据元素Ok。生成部分求和数据元素Ok包括在计数器k具有值1时将部分求和数据元素Ok初始化为求和数据元素Pk的第一个值,并且当计数器k的值不是1时,将数据元素Ok的先前值移位(Ok-1)并添加求和数据元素Pk的当前值。

移位部分求和数据元素Ok的先前值对应于将先前值增加或减少有效位。在一些实施例中,将计数器k从1增加到H对应于增加输入数据元素A1-AN的有效位,并且移位部分求和数据元素Ok的先前值对应于将先前值增加一个有效位,即将先前值乘以二。在一些实施例中,将计数器k从1增加到H对应于减少输入数据元素A1-AN的有效位,并且移位部分求和数据元素Ok的先前值对应于将先前值减少一个有效位,即,将先前值除以2。

在一些实施例中,生成部分求和数据元素Ok包括通过将相应求和数据元素SD1-SDM的第一实例存储为相应求和数据元素SD1-SDM的第一实例,将部分求和数据元素PS1-PSM设置为数据寄存器R1中的内部数据元素IDE,使用移位器SH1来移位内部数据元素IDE,并将求和数据元素SD1-SDM的后续实例添加到移位器数据元素SDE,如上面关于图1A-图5所讨论的。

在操作940处,将计数器k与数H进行比较。如果计数器k小于数H,则方法900返回到操作920,并且如果计数器k等于数H,则方法900继续到操作950。

在操作950处,部分求和数据元素PSm被设置为对应于计数器k=H的部分求和数据元素Ok的最终值。在一些实施例中,数量H=4,递增计数器k对应于增加输入数据元素A1-AN的有效位,并且将部分求和数据元素PSm设置为部分求和数据元素Ok的最终值由下式给出:PSm=

其中计数器k=1对应于LSB,系数为20,计数器k=4对应于MSB,系数为23

在一些实施例中,将部分求和数据元素PSm设置为部分求和数据元素Ok的最终值包括在相应的第m个输出端口O1-OM上输出第m个部分求和数据元素PS1-PSM,如上文关于图1A-图5所讨论的。

通过使用存储器电路100A或100B执行方法900的一些或全部操作,基于存储器内计算生成部分和,从而实现上文关于存储器电路100A和100B讨论的益处。

图10是根据一些实施例的操作存储器电路的方法1000的流程图。方法1000可与存储器电路一起使用,例如上文关于图1A和图1B讨论的存储器电路100A或100B。

方法1000的操作的顺序在图10中描述仅供说明;方法1000的操作能够以不同于图10所示的顺序执行。在一些实施例中,在图10所示的操作之前、之间、期间和/或之后执行除了图10中所描绘的那些操作。在一些实施例中,方法1000的操作是操作IC例如传感器、RF器件、处理器、逻辑或信号处理电路等的方法的子集。在一些实施例中,方法1000的操作是操作CNN或其他神经网络的方法的子集。

在操作1010,在一些实施例中,第一权重数据元素被存储在存储器单元的列的每个存储器单元中。在一些实施例中,在存储器单元的列的每个存储器单元中存储第一权重数据元素包括在多个存储器单元的列中存储权重数据。在各种实施例中,在存储器单元的列的每个存储器单元中存储第一权重数据元素包括使用I/O电路130将权重数据元素WTmn和/或WTm(n+1)存储在列C1-CM的存储器单元BCX或BX2中,如上面关于图1A-图5所讨论的。

在一些实施例中,在存储器单元的列的每个存储器单元中存储第一权重数据元素包括在大于第二电源电压电平的第一电源电压电平下操作存储器电路,在该第一电源电压电平下执行操作1020-1070的一些或所有。在一些实施例中,以第一电源电压电平操作存储器电路包括以电源电压电平VDD1操作存储器电路,并且以第二电源电压电平操作存储器电路包括以电源电压电平VDD2操作存储器电路,如上面关于图8所讨论的。

在操作1020处,在一些实施例中,从选择电路同时输出多个输入数据元素的H位每个输入数据元素的第k位的集合。在一些实施例中,同时输出多个输入数据元素的H位每个输入数据元素的第k位的集合包括从选择电路110输出输入数据元素A1-AN的第k位集合A1k-ANk,如上关于图1A-图5所讨论的。

在各种实施例中,同时输出多个输入数据元素的H位每个输入数据元素的第k位集合是通过从LSB递增到MSB或从MSB递增来顺序地输出第k位集合的部分到LSB。

在一些实施例中,同时输出多个输入数据元素的每个输入数据元素的第k位集合包括在选择电路处接收多个输入数据元素。在一些实施例中,同时输出多个输入数据元素的每个输入数据元素的第k位集合包括将多个输入数据元素存储在选择电路中,例如,存储在一个或多个数据寄存器中。在一些实施例中,同时输出多个输入数据元素的每个输入数据元素的第k位的集合包括使用上面关于图1A和图1B讨论的选择电路110来接收和存储输入数据元素A1-AN。在一些实施例中,同时输出多个输入数据元素的每个输入数据元素的第k位集合包括使用上面关于图2讨论的选择电路200。

在一些实施例中,同时输出多个输入数据元素的每个输入数据元素的H位的第k位的集合包括生成和响应一个或多个控制信号,例如,一个或多个控制信号CTRL由控制电路150上面关于图1A-图5讨论的。

在一些实施例中,同时输出多个输入数据元素的H位每个输入数据元素的第k位集合包括执行下面关于图9讨论的方法900的一些或全部。

在操作1030处,在存储器单元的列处接收第k位集合。在各种实施例中,在存储器单元的列处接收第k位的集合包括在存储器单元BCX或BX2列处接收第k位集合A1k-ANk,上面关于图1A-图5讨论。

在一些实施例中,在存储器单元的列处接收第k位的集合包括在多个列的每一列处接收第k位集合。在一些实施例中,在多个列处接收第k位的集合包括在上文关于图1A-图5讨论的列C1-CM中的每一列处接收第k位的集合A1k-ANk。

在一些实施例中,在存储器单元的列处接收第k位的集合包括执行下面关于图9讨论的方法900的一些或全部。

在操作1040处,存储器单元的列的每个存储器单元用于将相应输入数据元素的第k位与存储在存储器单元中的第一权重数据元素相乘,从而生成相应的第一乘积数据元素。在各种实施例中,使用存储器单元将相应输入数据元素的第k位与存储在存储器单元中的第一权重数据元素相乘包括使用存储器单元BCX或BX2将第k位A1k-ANk与第一权重数据元素相乘,如上面关于图1A-图5所讨论的。

在一些实施例中,将相应输入数据元素的第k位与存储在存储器单元中的第一权重数据元素相乘,从而生成相应的第一乘积数据元素包括将位Ank与权重数据元素WTmn相乘,从而生成乘积数据元素Pmn,如上文关于存储器单元300A和300B以及图3A和图3B所讨论的。

在一些实施例中,使用存储器单元的列的每个存储器单元将多个数据元素的相应输入数据元素的第k位与第一权重数据元素相乘包括使用存储器单元的列的每个存储器单元将多个数据元素的另一个相应输入数据元素的第k位与存储在存储器单元中的第二权重数据元素相乘,从而生成第二乘积数据元素,并将第一乘积数据元素与第二乘积数据元素相加以生成求和数据元素。

在一些实施例中,将多个数据元素的另一个相应输入数据元素的第k位与存储在存储器单元中的第二权重数据元素相乘从而生成第二乘积数据元素,并将第一乘积数据元素第二乘积数据元素相加生成求和数据元素包括将位A(n+1)k与权重数据元素WTm(n+1)相乘,从而生成乘积数据元Pm(n+1),并将乘积数据元素Pmn与成绩数据元素Pm(n+1)相加以生成求和数据元素Sml,如上面关于存储器单元300B和图3B讨论的。

在一些实施例中,使用存储器单元的列将相应输入数据元素的第k位与存储在存储器单元中的第一权重数据元素相乘包括使用多个存储器单元的列(例如上面关于图1A-图5讨论的列C1-CM),将相应输入数据元素的第k位与多个第一权重数据元素的相应第一权重数据元素相乘。

在一些实施例中,使用存储器单元的列将相应输入数据元素的第k位与存储在存储器单元中的第一权重数据元素相乘包括生成和响应一个或多个由上面关于图1A-图5讨论的控制电路150生成的一个或多个控制信号(例如一个或多个控制信号CTRL)。

在一些实施例中,使用存储器单元的列将相应输入数据元素的第k位与存储在存储器单元中的第一权重数据元素相乘包括执行下面关于图9讨论的方法900的一些或全部。

在操作1050处,使用加法器树来基于每个第一乘积数据元素生成求和数据元素。在一些实施例中,使用加法器树基于第一乘积数据元素中的每个生成求和数据元素包括使用加法器树122基于乘积数据元素Pmn和/或Pm(n+1)生成求和数据元素SD1-SDM的实例,如上面关于图1A-图5讨论。

在一些实施例中,使用加法器树来生成求和数据元素包括使用上面关于图4讨论的加法器树400。

在一些实施例中,使用加法器树来生成求和数据元素包括使用多个加法器树来生成多个求和数据元素,例如上面关于图1A-图5讨论的求和数据元素SD1-SDM。

在一些实施例中,使用加法器树来生成求和数据元素包括在加法器树处接收第一乘积数据元素。在一些实施例中,在加法器树处接收第一乘积数据元素包括在加法器树122处接收乘积数据元素P11-PMN,如上文关于图1A-图5所讨论的。

在一些实施例中,使用加法器树来生成求和数据元素包括在加法器树处接收求和数据元素。在一些实施例中,在加法器树处接收求和数据元素包括在加法器树122处接收如上文关于图1A-图5所讨论的求和数据元素S11-SML。

在一些实施例中,使用加法器树来生成求和数据元素包括使用多路复用器来将加法器树耦接到所选择的存储器单元,例如,使用上文关于图1A-图5讨论的多路复用器MA。

在一些实施例中,使用加法器树基于每个第一乘积数据元素生成求和数据元素包括生成和响应一个或多个由上面关于图1A-图5讨论的控制电路150生成的一个或多个控制信号(例如一个或多个控制信号CTRL)。

在一些实施例中,使用加法器树基于第一乘积数据元素中的每个生成求和数据元素包括执行下面关于图9讨论的方法900的一些或全部。

在操作1060处,累加器用于基于求和数据元素生成部分和。在一些实施例中,使用累加器基于求和数据元素生成部分和包括使用累加器140基于相应的求和数据元素SD1-SDM来生成部分和PS1-PSM,如上文关于图1A-图5所讨论的。

在一些实施例中,使用累加器生成部分和包括将第一求和数据元素添加到存储在数据寄存器中并由移位器移位的第二求和数据元素。在一些实施例中,将第一求和数据元素添加到第二求和数据元素与顺序地输出第k位集合的选择电路同步。在一些实施例中,使用累加器来生成部分和包括使用累加器500来生成部分和PSm,如上面关于图5所讨论的。

在一些实施例中,使用累加器来基于求和数据元素生成部分和包括使用多个累加器来生成多个部分求和数据元素,例如,上文关于图1A-图5讨论的部分求和数据元素PS1-PSM。

在一些实施例中,使用多个累加器来生成多个部分和包括使用第一累加器基于由第二累加器生成的第二部分和来生成第一部分和,例如,使用累加器的第一实例140基于部分和PS2生成部分和PS1,如上面关于图7A所讨论的。

在一些实施例中,使用多个累加器来生成多个部分和包括使用加法器基于由多个累加器生成的多个部分和来生成部分和,例如,使用加法器ADDSUM基于部分和PS1-PS4来生成部分和OSUM,如上面关于图7B所讨论的。

在一些实施例中,使用累加器基于求和数据元素来生成部分和包括生成和响应一个或多个由上面关于图1A-图5讨论的控制电路150生成的一个或多个控制信号(例如一个或多个控制信号CTRL)。

在一些实施例中,使用累加器基于求和数据元素生成部分和包括执行下面关于图9讨论的方法900的一些或全部。

在操作1070处,在一些实施例中,重复操作1010-1060中的一些或全部。在一些实施例中,重复操作1010-1060中的一些或全部包括同步操作1010-1060中的一些或全部的执行。在一些实施例中,重复操作1010-1060中的一些或所有操作包括递增计数器,例如上面关于图1A-图9讨论的计数器k。在一些实施例中,重复操作1010-1060中的一些或全部包括生成一个或多个控制信号,例如使用控制电路150生成一个或多个控制信号CTRL,如上文关于图1A-图5所讨论的。

在一些实施例中,重复操作1010-1060中的一些或全部包括执行上面关于图9讨论的方法900的一些或全部。

在一些实施例中,重复一些或所有操作1010-1060包括使用累加器基于H个求和数据元素生成部分和,例如,使用累加器140基于H个实例生成部分和PS1-PSM相应的求和数据元素SD1-SDM,如上面关于图1A-图5所讨论的。

在一些实施例中,重复操作1010-1060中的一些或所有操作包括将选择电路输出的第k位集合与相应的第一权重数据元素顺序相乘,从而生成多个第一乘积数据元素,例如上面关于图3A和图3B讨论的第一乘积数据元素Pmn。

在一些实施例中,重复操作1010-1060中的一些或所有操作包括将选择电路输出的第k位集合与相应的第二权重数据元素顺序相乘,从而生成多个第二乘积数据元素,例如上面关于图3B讨论的第二乘积数据元素Pm(n+1)。

在一些实施例中,重复操作1010-1060中的一些或所有操作包括使用加法器树基于多个第一乘积数据元素生成H个求和数据元素,并且在一些实施例中,进一步基于多个第二乘积数据元素。

在一些实施例中,多个输入数据元素是多个输入数据元素的集合的第一多个输入数据元素,并且重复操作1010-1060中的一些或全部包括顺序地接收多个输入数据元素的每个多个输入数据元素的集合,并且执行操作1010-1060中的一些或全部以基于多个输入数据元素的集合的每个多个输入数据元素和单个多个权重数据生成一个或多个部分和元素。

通过执行方法1000的一些或全部操作,基于存储器计算生成部分和,从而实现上文关于存储器电路100A和100B讨论的益处。在基于多个输入数据元素的集合的每个多个输入数据元素和单个多个权重数据元素生成一个或多个部分和的实施例中,与单个多个权重数据元素不会重用于多个存储器内部分和计算的方法相比,进一步降低了功率水平。

在一些实施例中,一种存储器电路包括:选择电路,被配置为:接收多个输入数据元素,多个输入数据元素的每个输入数据元素包括等于H的位数量,和输出多个数据元素的每个输入数据元素的H个位的第k位的所选择的集合;存储器单元的列,存储器单元的列的每个存储器单元包括:第一存储单位,用于存储第一权重数据元素;和第一乘法器,被配置为基于第一权重数据元素和第k位的所选择的集合的相应的第一第k位来生成第一乘积数据元素;以及加法器树,被配置为基于第一乘积数据元素的每个生成求和数据元素。在一些实施例中,每个权重数据元素是多位数据元素。在一些实施例中,存储器单元的列的每个存储器单元还包括:第二存储单位,被配置为存储第二权重数据元素;第二乘法器,被配置为基于第二权重数据元素和第k位的所选择的集合的相应的第二第k位来生成第二乘积数据元素;和加法器,被配置为从第一乘积数据元素和第二乘积数据元素生成求和数据元素,其中,加法器树被配置为基于求和数据元素中的每个生成求和数据元素。在一些实施例中,求和数据元素是H个求和数据元素中的一个求和数据元素,选择电路被配置为顺序地从第一位到第H位输出第k位的集合,加法器树被配置为基于顺序地输出的第k位的集合生成H个求和数据元素中的每个,并且存储器电路还包括累加器,累加器被配置为基于H个求和数据元素生成部分和。在一些实施例中,存储器电路还包括控制电路,控制电路被配置为生成由选择电路和累加器接收的一个或多个控制信号,从而存储器电路被配置为生成与顺序地输出的第k位的集合的选择电路同步的部分和。在一些实施例中,存储器单元的列是多列存储器单元中的一列,每一列存储器单元被配置为接收每一多个位的H位的所选择的第k位的集合,加法器树是耦接到多列存储器单元的相应列的多个加法器树中的一个加法器树,累加器是多个累加器中的一个累加器,耦接到多个加法器树中的相应加法器树,并且多个累加器中的每个累加器被配置为基于由多个加法器树中的相应加法器树生成的H个求和数据元素来生成相应的部分和。在一些实施例中,多个累加器中的至少一个累加器被配置为基于由多个累加器中的另外累加器生成的部分和来生成相应的部分和。在一些实施例中,每个第一存储器单元包括被配置为存储第一权重数据元素的一些或全部的静态随机存取存储器(SRAM)器件。在一些实施例中,存储器电路还包括被配置为将每个第一权重数据元素存储在相应的第一存储器单元中的输入/输出(I/O)电路。

在一些实施例中,一种操作存储器电路的方法包括:在存储器单元的列处接收多个输入数据元素的H个位数量的每个输入数据元素的第k位的集合;使用存储器单元的列的每个存储器单元将多个数据元素的相应的输入数据元素的第k位与存储在存储器单元中的第一权重数据元素相乘,从而生成相应的第一乘积数据元素;以及使用加法器树来基于第一乘积数据元素的每个生成求和数据元素。在一些实施例中,使用存储器单元的列的每个存储器单元将多个数据元素的相应的输入数据元素的第k位与第一权重数据元素相乘包括使用存储器单元的列的每个存储器单元进行:将多个数据元素的另外相应的输入数据元素的第k位与存储在存储器单元中的第二权重数据元素相乘,从而生成第二乘积数据元素;和将第一个乘积数据元素添加到第二个乘积数据元素以生成求和数据元素,其中,使用加法器树来生成求和数据元素是基于相应的求和数据元素的每个。在一些实施例中,方法还包括:使用选择电路顺序地输出多个输入数据元素的每个输入数据元素的H个位的第k位的集合;和使用累加器来基于H个求和数据元素生成部分和,其中使用存储器单元的列的每个存储器单元将多个数据元素的相应的输入数据元素的第k位与第一权重数据元素相乘包括顺序地将每个第k位与第一权重数据元素相乘,从而生成多个第一乘积数据元素,以及使用加法器树来基于第一乘积数据元素的每个生成求和数据元素包括使用加法器树来基于多个第一乘积数据元素生成H个求和数据元素。在一些实施例中,接收多个输入数据元素的每个输入数据元素的第k位的集合包括在多个存储器单元的列的每个存储器单元的列处接收第k位的集合,使用存储器单元的列的每个存储器单元将第k位与第一权重数据元素相乘包括使用多个存储器单元的列的每个存储器单元的列的每个存储器单元将第k位与存储在存储器单元中的相应的第一权重数据元素相乘权重数据元素,从而生成相应的第一乘积数据元素,使用加法器树来生成求和数据元素包括使用多个加法器树来基于第一乘积数据元素生成多个求和数据元素,以及使用累加器生成部分和包括使用多个累加器来基于相应的H个求和数据元素生成多个部分和。在一些实施例中,使用多个累加器生成多个部分和包括使用第一累加器基于由第二累加器生成的第二部分和来生成第一部分和。在一些实施例中,使用累加器来生成部分和包括将第一求和数据元素添加到存储在数据寄存器中并由移位器移位的第二求和数据元素,以及将第一求和数据元素添加到第二求和数据元素与选择电路顺序地输出第k位的集合同步。在一些实施例中,使用选择电路顺序地输出多个输入数据元素的每个输入数据元素的H个位的第k位的集合包括从最低有效位(LSB)到最高有效位(MSB)输出第k位的集合。在一些实施例中,方法还包括:基于第一电源电压电平在存储器单元的列的每个存储器单元中存储第一权重数据元素,其中,使用存储器单元的列的每个存储器单元将第k位与第一权重数据元素相乘以及使用加法器树来生成求和数据元素中的每个是基于低于第一电源电压电平的第二电源电压电平。

在一些实施例中,存储器电路包括:选择电路,被配置为对于分别包括H个位的多个输入数据元素将所选择的第k位的集合顺序地输出到多个存储器单元的列的每个存储器单元的列的相应存储器单元;多个加法器树,多个加法器树中的每个加法器树耦接到多个存储器单元的列的相应的存储器单元的列;和多个累加器,多个累加器中的每个累加器耦接到多个加法器树中的相应的加法器树,其中每个存储器单元的列的每个存储器单元包括乘法器,乘法器被配置为基于所选择的第k位的集合中的相应的第k位和存储在存储器单元中的权重数据元素来生成乘积数据元素,多个加法器树中的每个加法器树被配置为对于每个顺序地输出的第k位的集合基于相应的存储器单元的列的乘积数据元素中的每个生成求和数据元素,以及多个累加器中的每个累加器被配置为基于由多个加法器树中的相应的加法器树生成的求和数据元素来生成部分和。多个加法器树中的每个加法器树包括:第一加法器,被配置为接收第一求和数据元素和第二求和数据元素,并且输出具有第一数量的位的求和数据元素;以及第二加法器和第三加法器,被配置为基于相应的存储器单元的列的乘积数据元素输出第一求和数据元素和第二求和数据元素,第一求和数据元素和第二求和数据元素中的每个具有比第一数量的位少一个的第二位数量的位。在一些实施例中,多个加法器树中的至少一个加法器树通过多路复用器耦接到多个存储器单元的列的相应的存储器单元的列。

上述概述了几个实施例的特征,以便本领域技术人员可以更好地理解本公开的各个方面。本领域技术人员应当理解,他们可以容易地使用本公开作为设计或修改用于实现本文所介绍的实施例的相同目的和/或实现其相同优点的其它过程和结构的基础。本领域技术人员还应当认识到,此类等效结构不背离本发明的精神和范围,并且它们可以在不背离本发明的精神和范围的情况下在本发明中进行各种改变、替换以及改变。

32页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:电路边界阵列架构中的动态资源管理

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!