内存计算的制作方法

文档序号:30389600发布日期:2022-06-11 13:41阅读:194来源:国知局
内存计算的制作方法

1.本公开总体涉及内存计算。


背景技术:

2.本公开总体涉及内存计算或计算内存(“cim”),并进一步涉及在数据处理中使用的存储阵列,例如,乘法-累加(“mac”)运算。计算内存或内存计算系统将信息存储在计算机的主随机存取存储器(ram)中并在存储单元级别执行计算,而不是为每个计算步骤在主ram和数据存储装置之间移动大量数据。由于经存储数据在存储于ram中时被快得多地访问,因此计算内存允许实时分析数据,从而在商业和机器学习应用中实现更快的报告和决策。正在努力提高计算内存系统的性能。


技术实现要素:

3.根据本公开的一个实施例,提供了一种内存计算(cim)器件,包括:存储阵列,包括按行和列布置的多个存储单元,所述多个存储单元包括在所述存储阵列的第一行和第一列中的第一存储单元、以及在所述存储阵列的所述第一行和第二列中的第二存储单元,所述第一存储单元和所述第二存储单元被配置为存储各自的第一权重信号和第二权重信号;输入驱动器,被配置为提供多个输入信号;第一逻辑电路,耦合到所述第一存储单元并被配置为基于所述第一权重信号和来自所述输入驱动器的第一输入信号来提供第一输出信号;以及第二逻辑电路,耦合到所述第二存储单元并被配置为基于所述第二权重信号和来自所述输入驱动器的第二输入信号来提供第二输出信号。
4.根据本公开的另一实施例,提供了一种内存计算(cim)器件,包括:存储阵列,包括按行和列布置的多个存储单元,所述多个存储单元被配置为存储具有w位的权重信号,其中,w是正整数,所述存储阵列包括w列,所述存储单元中的每一个被配置为存储所述权重信号的一位;多个乘法电路,所述存储单元中的每一个耦合到所述乘法电路中的相应的一个乘法电路,并且所述多个乘法电路被配置为基于接收到的输入信号和存储在相应的存储单元中的所述权重信号来提供乘积信号;以及加法器电路,被配置为将所述乘积信号相加并输出部分和信号。
5.根据本公开的又一实施例,提供了一种内存计算(cim)方法,包括:将多个权重信号存储在多个存储单元中,其中,所述权重信号中的每一个具有w位,w是正整数,并且其中,所述存储单元中的每一个存储所述w位权重信号的一位;提供多个逻辑电路,所述多个逻辑电路连接到所述多个存储单元中的相应的存储单元;将输入信号提供给所述多个逻辑电路,以将所述权重信号乘以所述输入信号以提供多个乘积信号;将所述多个乘积信号从所述多个逻辑电路输出到加法器树;提供权重符号信号,所述权重符号信号被配置为指示所述权重信号是否是有符号的;以及通过所述加法器树基于所述乘积信号和所述权重符号信号来输出部分和信号。
附图说明
6.在结合附图阅读时,可以从下面的具体实施方式最佳地理解本公开的各方面。应注意,根据行业的标准做法,各种特征不是按比例绘制的。事实上,为了讨论的清楚起见,各种特征的尺寸可能被任意地增大或减小了。此外,附图作为本发明的实施例的示例是说明性的,而不旨在进行限制。
7.图1是示出根据一些实施例的计算内存(cim)器件的示例的框图。
8.图2是示出根据一些实施例的在图1的cim器件中使用的sram存储单元的示例的示意图。
9.图3是示出根据一些实施例的在图1的cim器件中使用的存储单元和nor门的示例的示意图。
10.图4是示出根据一些实施例的耦合到图1的cim器件中的存储单元的sram存储单元和nor门的示例的示意图。
11.图5是示出根据一些实施例的在图1的cim器件中使用的存储单元和and门的示例的示意图。
12.图6是示出根据一些实施例的耦合到图1的cim器件中的存储单元的sram存储单元和and门的示例的示意图。
13.图7是示出根据一些实施例的cim存储阵列的示例的示意图。
14.图8是示出根据一些实施例的加法器树的示例的框图。
15.图9是示出根据一些实施例的累加器的示例的框图。
16.图10是示出根据一些实施例的用于cim输出计算的时序的时序图。
17.图11是示出根据一些实施例的在其中组合多个权重列的cim存储阵列的部分的框图。
18.图12是示出根据一些实施例的与有符号/无符号权重格式相组合的加法器电路的框图。
19.图13是示出根据一些实施例的二进制加法器电路的框图。
20.图14是示出根据一些实施例的二进制补码加法器电路的框图。
21.图15是示出根据一些实施例的加法器电路配置的框图。
22.图16是根据一些实施例的全加器电路的真值表。
23.图17是示出根据所公开实施例的简化加法器电路的示例的示意图。
24.图18是示出根据所公开实施例的全加器的示例的示意图。
25.图19是示出根据所公开实施例的修改的全加器的示例的示意图。
26.图20是示出根据所公开实施例的cim方法的流程图。
具体实施方式
27.下面的公开内容提供了用于实现所提供的主题的不同特征的许多不同的实施例或示例。下文描述了组件和布置的具体示例以简化本公开。当然,这些仅是示例而不旨在进行限制。例如,在下面的描述中,在第二特征上方或之上形成第一特征可以包括以直接接触的方式形成第一特征和第二特征的实施例,并且还可以包括可在第一特征和第二特征之间形成附加特征,使得第一特征和第二特征可以不直接接触的实施例。此外,本公开在各个示
例中可重复附图标记和/或字母。这种重复是为了简单性和清楚性的目的,并且其本身不指示所讨论的各个实施例和/或配置之间的关系。
28.此外,本文中可能使用了空间相关术语(例如,“下方”、“之下”、“低于”、“以上”、“上部”等),以易于描述图中所示的一个要素或特征相对于另外(一个或多个)要素或(一个或多个)特征的关系。这些空间相关术语旨在涵盖器件在使用或工作中除了图中所示朝向之外的不同朝向。装置可能以其他方式定向(旋转90度或处于其他朝向),并且本文中所用的空间相关描述符同样可被相应地解释。
29.本公开总体上涉及计算内存(“cim”)。cim应用的一个示例是乘法-累加(“mac”)运算。计算机人工智能(“ai”)使用深度学习技术,其中计算系统可被组织为神经网络。例如,神经网络是指能够分析数据的多个互连处理节点。神经网络计算“权重”以对新输入数据执行计算。神经网络使用多层计算节点,其中较深层基于由较高层执行的计算的结果来执行计算。
30.cim电路在存储器内本地执行运算,而不必将数据发送到主机处理器。这可以减少在存储器和主机处理器之间传输的数据量,从而实现更高的吞吐量和性能。数据移动的减少还降低了计算设备内的整体数据移动的能耗。
31.根据一些公开的实施例,cim器件包括存储阵列,该存储阵列具有按行和列布置的存储单元。存储单元被配置为存储权重信号,并且输入驱动器提供输入信号。每个存储单元耦合到相应第一逻辑电路,例如,乘法电路,其基于来自输入驱动器的输入信号和存储在相应存储单元中的权重信号来提供输出信号。逻辑单元的输出被累加或相加以获得系统输出值。
32.mac运算的数学描述的示例如下所示。
[0033][0034]
在以上等式(1)中,ai是第i个输入,wij是与第i个输入和第j个权重列相对应的权重。oj是第j个权重列的mac输出,以及h是累加数。
[0035]
图1是示出根据本公开的示例cim器件100的框图。cim存储阵列110包括被配置为存储权重信号w的多个存储单元112。cim可以用各种存储器件来实现,包括静态随机存取存储器(“sram”)。在典型的sram器件中,当sram单元中的一个或多个存取晶体管由来自一条或多条字线(“wl”)的使能信号激活时,数据经由一条或多条位线(“bl”)写入sram单元、以及从sram单元读取。
[0036]
图2是示出根据一些实施例的示例存储单元112的电路图。存储单元112包括但不限于六晶体管(6t)sram单元212。在一些实施例中,可以使用多于或少于六个晶体管来实现sram单元212。例如,在一些实施例中,sram单元212可以使用4t、8t或10t sram结构,并且在其他实施例中,可以包括存储器式位单元或构建单元。sram单元212包括:由nmos/pmos晶体管对m1和m2形成的第一反相器、由nmos/pmos晶体管对m3和m4形成的第二反相器、以及存取晶体管/传输门m5和m6。
[0037]
每个反相器被供电,例如,晶体管m2和m4中的每一个的第一端耦合至电源vdd,而晶体管m1和m3中的每一个的第一端耦合至参考电压vss,例如,地。一位数据存储在sram单元212中作为节点q处的电压电平,并且可以通过位线bl由电路读取。对节点q的访问由传输门晶体管m5控制。节点qbar(qb)存储q处的值的补码,例如如果q为“高”,则qb将为“低”,并
且可通过位线blbar(blb)由电路读取。对qb的访问由传输门晶体管m6控制。
[0038]
传输门晶体管m5的栅极耦合到字线wl。传输门晶体管m5的第一源极/漏极(s/d)端耦合到位线bl,以及传输门晶体管m5的第二s/d端在节点q处耦合到晶体管m1和m2的第二端。类似地,传输门晶体管m6的栅极耦合到字线wl。传输门晶体管m6的第一s/d端耦合到补码位线blb,以及传输门晶体管m6的第二s/d端在节点qb处耦合到晶体管m3和m4的第二端。
[0039]
返回图1,cim器件100还包括输入驱动器102和wl驱动器104。输入驱动器102将输入信号a驱动到逻辑电路114。wl驱动器输出wl信号以激活存储单元110的期望行i,从而将存储的权重信号w提供给逻辑电路114。存储控制器120接收控制输入,并且将控制信号提供给连接到存储阵列110的位线bl、blb的sram读取/写入电路122,以选择与存储的权重w相对应的适当位线bl、blb(即列)。在所示示例中,采用4位权重w[0:3],因此存储单元100的四列和逻辑电路被用于存储各个权重值。因此,具有w位的权重值使用存储单元100的w列和对应的逻辑电路。来自逻辑电路114的输出信号被提供给加法器电路116,该加法器电路将各个逻辑电路114的输出相加。累加器电路耦合到加法器电路116并被配置为提供mac输出oj。
[0040]
如上所述,在一些实施例中,逻辑电路114是乘法器电路,其被配置为计算上述等式1的ai×
wij部分。图3示出了示例,其中逻辑电路114是nor门214,它从其对应的存储单元112接收权重信号w,以及反相选择信号selb形式的输入信号a,以输出权重信号w和选择信号selb的乘积p。图4示出了所公开实施例的其他方面,其中存储单元是如图2所示和上面讨论的6t sram单元212,并且乘法器电路114包括双输入nor门214。nor门214的一个输入耦合至sram单元212的节点qb以接收反相权重信号,而nor门214的另一输入接收selb信号。
[0041]
图5示出了另一示例,其中乘法器电路114是and门215,and门215从其对应的存储单元112接收权重信号w,以及选择信号sel形式的输入信号a,以输出权重信号w和选择信号sel的乘积p。图6示出了所公开实施例的其他方面,其中存储单元是如图2所示和上面讨论的6t sram单元212,并且乘法器电路114包括双输入and门215。and门215的一个输入耦合至sram单元212的节点q以接收权重信号,而and门215的另一输入接收sel信号。
[0042]
图7示出了示例cim存储阵列110的各方面。存储单元112可以包括上面讨论的sram电路212或其他合适的存储电路。乘法器电路114由nor门214实现,但其他逻辑电路可用于乘法器电路,例如and门215。在图7中,每个存储单元112存储一位权重信号w。在该示例中,使用4位输入a和4位权重w,因此使用存储单元112的四列j和相关联的nor门214(即,乘法器电路)来在每个输入行i中存储4位权重。换言之,权重信号是w位权重,其中w=4。阵列110的所示部分因此包括“相乘”部分130,其代表4位权重值的一个权重列j,其中使用nor门214(或其他合适的逻辑电路)将存储在存储单元112中的权重w乘以所接收的输入a。换言之,权重列j具有存储单元112的w列j和对应的nor门214。
[0043]
注意,在本公开中,存储单元112的列和相关联的逻辑电路214被指定小写“j”。如上所述,在具有4位权重w[0:3]的所示示例中,cim或具有存储单元的四列j的“权重列”(即相乘部分130)被指定大写字母j。“累加”部分132接收来自相乘部分130的乘积以对接收的乘积进行移位和相加,如将在下面进一步讨论的。因此,图7实现如下表示的mac运算:
[0044][0045]
其中ai是第i个输入,wi是所示列中对应于第i个输入的权重,o是加法器树116的输出,以及h是累加数。在所示示例中,使用多周期“逐位”乘法,其中4位权重信号w[0:3]的
每一位依次与输入信号a的每一位相乘以提供部分和。
[0046]
在所示示例中,来自相邻行i的nor门214的乘积输出通过线218和219耦合到加法器电路116。更具体地,第一行i-1的nor门214的乘积输出由行218接收并传送到加法器树116,而相邻行i-2中的nor门214的乘积输出在行219上传送到加法器树116。
[0047]
图8示出了加法器电路116的加法器树220的示例的各方面。加法器树220包括八个加法器树分支,包括将阵列110的两个相邻行的乘积输出相加的“求和2”分支222。如上所述,乘积值包括权重w[3:0]和由输入激活驱动器102提供的输入乘数。在图8中,输入值被标记为a0

a255(即h-1)。求和2分支222的5位加法器224各自将乘法器电路214的两个相邻行的两个乘积输出相加。因此,第一输入a0和权重w[3:0]的乘积通过加法器树116的求和2分支222中的最高5位加法器224添加到第二输入a1和对应权重w[3:0]的乘积。
[0048]
加法器树还包括具有6位加法器电路228的“求和4”分支226、具有7位加法器电路232的“求和8”分支230、具有8位加法器电路236的“求和16”分支234、具有9位加法器电路240的“求和32”分支238、具有10位加法器电路244的“求和64”分支242、具有11位加法器电路248的“求和128”分支246、以及具有12位加法器电路252的“求和256”分支250。
[0049]
求和4分支226的每个6位加法器电路228接收求和2分支222的两个相邻5位加法器224的输出,求和8分支230的每个7位加法器电路232接收求和4分支226的两个相邻6位加法器228的输出,求和16分支234的每个8位加法器电路236接收求和8分支230的两个相邻7位加法器232的输出,求和32分支238的每个9位加法器电路240接收求和16分支234的两个相邻8位加法器236的输出,求和64分支242的每个10位加法器电路244接收求和32分支238的两个相邻9位加法器240的输出,求和128分支246的每个11位加法器电路248接收求和64分支242的两个相邻10位加法器244的输出,以及求和256分支250的12位加法器电路252接收求和128分支246的相邻11位加法器248的输出。
[0050]
由十二位加法器电路252输出的12位部分和psum[11:0]被提供给累加器124,其在所示示例中包括部分和加法器与移位器。如下文将进一步讨论的,除了乘积输出之外,每个加法器电路还接收权重符号位ws,其指示权重是有符号的(即负)还是无符号的。因此例如4位权重w[3:0]乘以输入ai,以及相应的权重符号位ws被5位加法器224接收。权重符号ws例如可以存储在与cim存储阵列110相关联的寄存器中。
[0051]
在一些公开的示例中,多周期“逐位”乘法被用于可配置的n位有符号/无符号输入。如下文将讨论的,计算是通过对输入进行逐位移位来实现的。以下示出了具有4位输入a和4位权重w的示例。
[0052][0053]
上面的等式3可以重新表述如下。
[0054][0055][0056][0057][0058]
对于有符号输入,可以采用二进制补码加法器配置。因此,如果权重输入有符号
(ws=1),则最高有效位(msb)计算结果变为负(即,将结果取反并加1)。
[0059]
图9示出了cim器件100的示例,包括累加器124的其他方面。如前所述,cim存储阵列110包括被配置为存储权重信号w的存储单元112的阵列。输入信号ai存储在输入寄存器312中并乘以存储在阵列110中的权重w[0:3],并且加法器树116提供如图7所示的12位部分和psum[11:0]。wl驱动器104输出wl信号以激活存储阵列110,并且存储控制器120接收控制输入并将控制信号提供给连接到存储阵列110的位线的sram读取/写入电路122。来自逻辑电路阵列110的输出信号被提供给加法器电路116,并且累加器电路124耦合到加法器电路116并被配置为提供mac输出oj。
[0060]
来自加法器树116的部分和被输出到部分和电路310的第一寄存器314。第一mux 316接收部分和输出psum[11:0]及其逆(inverse),并基于权重符号输入ws和最高有效权重位的乘积signed*msb来输出所选输入。因此,如果psum输入的msb有符号(即ws=1),则通过将结果取反并加1来将msb结果变为负。该部分和318被提供给20位加法器310的一个输入。
[0061]
20位加法器310的输出由第二部分和寄存器320接收,第二部分和寄存器320的输出由移位器322接收并左移1位(即乘以21),并在20位加法器310的第二输入处接收并与下一个部分和318相加。输出寄存器330在其d输入处接收20位加法器310的输出,并在其q输出端提供累加器的输出q[19:0]。
[0062]
图10是示出加法器树116和累加器124的运算的时序图。在上面讨论的示例中,示出了4位权重w[0:3],但其他权重配置在本公开的范围内。图10示出了5周期运算。输入包括时钟信号clk、标记5周期运算的开始和结束的imcen信号、以及输入信号a[1023:0]。4位输入信号a[3:0]的每一位都乘以权重信号w[3:0]。在第一运算周期350期间,由cim阵列110的逻辑电路114将输入a的msb乘以权重w[3:0]的每一位以产生部分乘积,这些部分乘积由加法器树116相加得到12位部分和s3。
[0063]
在第二运算周期352期间,由cim阵列110的逻辑电路114将输入a的第二msb乘以权重w[3:0]的每一位以产生部分乘积,这些部分乘积由加法器树116相加得到12位部分和s2。在第三运算周期354期间,由cim阵列110的逻辑电路114将输入a的第三msb乘以权重w[3:0]的每一位以产生部分乘积,这些部分乘积由加法器树116相加得到12位部分和s1,并且在第四运算周期356期间,由cim阵列110的逻辑电路114将输入a的lsb乘以权重w[3:0]的每一位以产生部分乘积,这些部分乘积由加法器树116相加得到12位部分和s0。
[0064]
部分和psum[11:0]输出s3、s2、s1和s0被延迟一个周期,因此分别在第二运算周期352、第三运算周期354、第四运算周期356和第五运算周期358期间被输出到第一部分和寄存器314。因此,在第一运算周期350,没有从第一部分和寄存器314到20位加法器310的部分和输入。也没有从加法器310到寄存器320和移位器322的输出,并且因此在第二运算周期352,sum[15:0]=0。
[0065]
如上所述,在第二运算周期352,s3部分和被提供给第一寄存器314并输入到加法器310的第一输入。加法器310的先前输出(即,和=0)由第二寄存器320接收,由移位器322左移1位,并输入到加法器310的第二输入。加法器310在第三运算周期354期间输出的sum[15:0]因此是s3部分和。在第三运算周期354,第二msb的第二部分和s2由加法器树116输出并由第一寄存器314接收并输入到加法器310。加法器310在第三运算周期354期间输出的和(即,s3部分和)由寄存器320输出并由移位器322左移。在第四运算周期356期间,经移位的
和因此被添加到s2部分和。
[0066]
在第四运算周期356,第三msb的下一个部分和s1由加法器树116输出并由第一寄存器314接收并输入到加法器310。加法器310在第四运算周期356期间输出的和由寄存器320输出并由移位器322左移。在第五运算周期358期间,经移位的和因此被添加到s1部分和。
[0067]
在第五运算周期358,lsb的下一个部分和s0由加法器树116输出并由第一寄存器314接收并输入到加法器310。加法器310在第五运算周期358期间输出的和由寄存器320输出并由移位器322左移。在下一运算的第一运算周期360期间,经移位的和因此被添加到s0部分和。srdy信号在该周期期间被断言,并且响应于此,最终和q[19:0]由输出寄存器330输出。
[0068]
可以使用上文公开的可编程有符号/无符号权重来支持可配置的n位权重。换言之,可以组合多个cim或权重列j以存储期望数目n的权重位。返回参考图7,所示的阵列100包括4位权重列j。因此,权重列j具有存储单元112的四列和相关联的nor门214以存储4位权重值的每一位。如果需要更大的权重值,则可以组合多个权重列j。例如,可以组合两个4位权重列j以提供8位权重值。以下示出了具有带符号msb的8位权重的示例。
[0069][0070]
这样的8位有符号权重可划分为4位有符号权重加上4位无符号权重,如下所示(从前4位权重析出(factor out)16)。
[0071][0072]
mac运算因此可表示为如下。
[0073][0074]
图11示出了示例cim存储阵列111,其中四个4位权重列j-1、j-2、j-3、j-4被组合以提供十六位有符号权重值。图11中所示的权重列j-1、j-2、j-3、j-4中的每一个都具有四个存储阵列列j,用于存储图7所示示例中的4位权重。第一权重列j-1是有符号的,而其余的权重列j-2、j-3和j-4是无符号的,因为仅权重值的msb是有符号的。输入驱动器102控制乘以权重值的输入信号ai的激活。权重列j-1、j-2、j-3、j-4的乘积输出由与权重列j中的每一个相关联的树116部分求和,并且这些部分和被提供给累加器124以进行移位/相加运算,以计算最终cim输出。
[0075]
图12示出了加法器树220的求和2分支222的5位加法器电路224的示例。如上所述,在所示示例中,来自阵列的相邻行的4位乘积输出被输出到加法器树116的5位加法器电路224。在图8中,相邻行218、219的乘积输出由5位加法器224接收。在图12中,相邻行218、219的这些输入分别标记为a和b。例如,行i-1的nor门214的4位输出在图12中被标记为a[3:0],而行i-2的nor门214的4位输出被标记为b[3:0]。
[0076]
5位加法器电路224包括半加器电路ha0,其接收第一输出位a[0]和b[0],并提供位
0和输出s[0]以及第一进位输出c[1]。5位加法器电路224还包括四个全加器电路fa1、fa2、fa3和fa4。第一全加器fa1接收位1nor门的输出a[1]和b[1],以及来自半加器ha0的第一进位输出c[1]。第一全加器fa1将输入a[1]和b[1]相加,并提供位1和输出s[1]以及第二进位输出c[2]。第二全加器fa2接收位2nor门的位2输出,以及来自第一全加器fa1的第二进位输出c[2]。第二全加器fa2将输入a[2]和b[2]相加,并提供位2和输出s[2]以及第三进位输出c[3]。第三全加器fa3接收位3nor门214的输出a[3]和b[3],以及来自第二全加器fa2的第三进位输出c[3]。第三全加器fa3将位3输入a[3]和b[3]相加,并提供位3和输出s[3]以及第四进位输出c[4]。
[0077]
第四全加器fa4接收两个and门270和272的输出,以及来自第三全加器fa3的第四进位输出c[4]。and门270在其输入处接收a[3]信号和a输入的权重符号wsa,而and门272在其输入处接收b[3]信号和b输入的权重符号wsb。通过提供被配置为接收权重符号指示符ws的and门270和272,加法器电路224变为对于有符号权重格式和无符号权重格式“可切换”,如下文将进一步讨论的。
[0078]
更具体地,如果权重是无符号的,则可以使用4位二进制加法器224a将4位权重值相加,如图13所示。二进制加法器224a包括半加器电路ha0,其接收第一输出位a[0]和b[0],并提供位0和输出s[0]以及第一进位输出c[1]。然而,二进制加法器224a仅使用三个全加器电路fa1、fa2和fa3。三个全加器电路fa1、fa2、fa3以及半加器ha0能够将无符号4位输入a[3:0]和无符号4位b[3:0]输入相加。
[0079]
对于有符号权重输入,使用二进制补码加法器电路224b来将由权重符号扩展ws指示的负值相加,如图14所示。二进制补码加法器224b包括半加器电路ha0,其接收第一输出位a[0]和b[0],并提供位0和输出s[0]以及第一进位输出c[1]。5位加法器电路224还包括四个全加器电路fa1、fa2、fa3和fa4。第一全加器fa1接收位1nor门的输出a[1]和b[1],以及来自半加器ha0的第一进位输出c[1]。第一全加器fa1将输入a[1]和b[1]相加,并提供位1和输出s[1]以及第二进位输出c[2]。第二全加器fa2接收位2nor门的位2输出,以及来自第一全加器fa1的第二进位输出c[2]。第二全加器fa2将输入a[2]和b[2]相加,并提供位2和输出s[2]以及第三进位输出c[3]。第三全加器fa3接收位3nor门214的输出a[3]和b[3],以及来自第二全加器fa2的第三进位输出c[3]。第三全加器fa3将位3输入a[3]和b[3]相加,并提供位3和输出s[3]以及第四进位输出c[4]。
[0080]
第四全加器fa4接收位3nor门214的输出a[3]和b[3],以及来自第三全加器fa3的第四进位输出c[4]。第三全加器fa3将位3输入a[3]和b[3]相加,并提供位3和输出s[3]以及第四进位输出c[4]。
[0081]
返回图12,and门270和272的相加使加法器224“可切换”,使得如果msb权重输入a[3]、b[3]都没有符号,则and门270和272均输出0,并且第四全加器fa4被有效地从电路中取出,第四进位输出c[4]提供第五和位s[4]。替代地,如果权重输入a[3]、b[3]中任一个有符号,则and门270、272基于msb权重输入a[3]、b[3]来提供输出。第四全加器fa4的s[4]输出提供和输出s[3]的符号扩展。
[0082]
图12所示的5位加法器224用于图8所示的加法器树220的求和2分支222。5位加法器224的5位输出s[4:0]由加法器树220的求和4分支226的6位加法器228接收。图15示出了在加法器树220中使用的加法器的通用形式225。每个加法器接收各自的乘积位a[0:n]和b
[0:n],并且msb加法器n还接收一位权重符号ws。例如,5位加法器224接收4位乘积信号a[0:3]和b[0:3],以及一位权重符号扩展ws。因此,5位加法器224采用一个半加器ha和四个全加器fa1-fa4。
[0083]
因此,图15所示的通用加法器电路225具有提供n个和输出的n个加法器。该n个加法器包括半加器加法器0,其接收a[0]和b[0]乘积输入并输出s[0]和输出。该n个加法器还包括n-1个全加器。第一全加器加法器1接收a1和b1输入,以及来自半加器加法器0的进位输出co。每个全加器接收适当的a和b输入以及来自前一加法器的进位输入位ci,并输出相应的和输出和进位输出位co。
[0084]
第n个加法器(全加器)从n-1加法器接收符号扩展ws和进位输入位,以及an和bn输入,并且加法器n输出进位输出位co和s[n]和位,即ws位。在所示示例中,加法器n在其进位输入处接收加法器n-1的进位输出位的逆(即进位输入条(carry in bar)cib)。
[0085]
图16示出了图15中所示的加法器电路225的第n个加法器的真值表。如结合图12所讨论的,第n个加法器(即fa4)接收c[4]进位输入位ci和and门270和272的输出。and门270和272分别接收msb乘积位a[3]和b[3],以及相应的权重符号扩展位wsa和wsb。图16示出了与a、b和ci的各种输入组合相对应的无符号权重(ws=0)和有符号权重(ws=1)的和输出。
[0086]
如果ws位是1—即权重是有符号的,则对于第n个加法器(图12中的fa4)将不会出现a=b=0、ci=1和a=b=1、ci=0的情况,因为and门270、272的输出将跟随a和b输入。例如,参考图12,当wsa和wsb扩展为1(有符号权重)时,fa3和fa4全加器(即第n-1个和第n个加法器)两者都接收a[3]和b[3]输入。如果a[3]=b[3]=0,则fa3加法器的进位输出位co将为0。因此,对于fa4加法器将从不出现a=b=0、ci=1的情况。类似地,如果a[3]=b[3]=1,则fa3加法器的进位输出位co将为1,并且对于fa4加法器也将从不出现a=b=1、ci=0的情况。更进一步,第n个加法器的溢出(即进位)被丢弃。因此,可以简化第n个加法器电路的电路,从而减少用于实现该全加器的晶体管的数量。
[0087]
图17示出了用于第n个加法器的加法器电路280的示例,例如图12中所示的5位加法器224的全加器fa4。与将两个and门270、272与传统的全加器电路结合相比,在一些示例中,图17所示的电路将晶体管数量减少了22个晶体管。图17的加法器电路280使用实现输入电路282的10个晶体管,该输入电路282被配置为接收a和b输入位以及cib信号(即从n-1加法器接收的反相ci信号)。基于这些输入,在节点284处提供中间信号。节点284是输出电路286的输入,该输出电路286还接收cib信号以及sign扩展信号及其逆signb,以提供sn和输出。
[0088]
如上所述,简化的加法器电路280从前一全加器(n-1加法器)接收进位输出信号co的逆。因此,n-1加法器被修改以输出co信号的逆(即cib信号)。图18是示出全加器电路的示例的示意图,例如图15中所示的加法器1全加器。所示的加法器1电路包括反相器290,其在进位输出端292处提供进位输出信号co。进位输出位co被输出到后续加法器的进位输入端ci。
[0089]
然而,最后一个全加器(加法器n)从前一加法器(加法器n-1)接收进位输出位co的逆。图19示出了加法器n-1的示例,其中反相器290被取消,使得在进位输出端292处输出进位输出信号的逆,进位输出端292将反相进位输入cib提供给最终全加器(加法器n)。如前所述,图17的简化加法器电路280中示出了最终加法器(加法器n)的示例。
[0090]
图20是示出根据所公开实施例的cim方法的示例的流程图。进一步参考图7和图8,方法400包括在操作410,将多个权重信号w[3:0]存储在多个存储单元112中。每个存储单元112存储w位权重信号的一位。在操作412中,提供多个逻辑电路214,其连接到多个存储单元中的相应存储单元。在操作414中,向多个逻辑电路214提供输入信号ai。在操作416,逻辑电路214被配置为将权重信号w[3:0]乘以输入信号ai以提供多个乘积信号。在操作418,多个乘积信号从多个逻辑电路214输出到加法器树220。在操作420,提供权重符号信号ws。权重符号信号ws被配置为指示权重信号是有符号的还是无符号的。在操作422,加法器树220基于乘积信号和权重符号信号来输出部分和信号。
[0091]
因此,本公开提供了一种cim系统,其包括用于存储cim权重的存储单元,以及耦合到每个存储单元的乘法电路。所公开的系统被配置为使用多周期输入来将输入信号与基于列的存储权重相乘。输入信号和/或权重信号可以是有符号的或无符号的,并且乘法电路的乘积输出由加法器树和累加器累加。
[0092]
所公开的实施例包括具有存储阵列的cim器件,该存储阵列具有按行和列布置的多个存储单元。多个存储单元包括在存储阵列的第一行和第一列中的第一存储单元、以及在存储阵列的第一行和第二列中的第二存储单元。第一存储单元和第二存储单元被配置为存储各自的第一权重信号和第二权重信号。输入驱动器被配置为提供多个输入信号,以及第一逻辑电路耦合到第一存储单元以基于第一权重信号和来自输入驱动器的第一输入信号来提供第一输出信号。第二逻辑电路耦合到第二存储单元并基于第二权重信号和来自输入驱动器的第二输入信号来提供第二输出信号。
[0093]
根据进一步的实施例,一种cim器件包括存储阵列,该存储阵列具有按行和列布置的多个存储单元。多个存储单元存储具有w位的权重信号,其中w是正整数。存储阵列具有w列,并且每个存储单元被配置为存储权重信号的一位。每个存储单元耦合到相应的乘法电路,该乘法电路被配置为基于接收到的输入信号和存储在相应的存储单元中的权重信号来提供乘积信号。加法器电路被配置为将乘积信号相加并输出部分和信号。
[0094]
根据更进一步的实施例,一种cim方法包括将多个权重信号存储在多个存储单元中,其中每个权重信号具有w位(w是正整数)。每个存储单元存储w位权重信号的一位。多个逻辑电路连接到多个存储单元中的相应的存储单元。输入信号被提供给多个逻辑电路,以将权重信号乘以输入信号从而提供多个乘积信号。多个乘积信号从多个逻辑电路输出到加法器树。权重符号信号指示权重信号是否是有符号的。加法器树基于乘积信号和权重符号信号来输出部分和信号。
[0095]
本公开概述了各种实施例,使得本领域技术人员可以更好地理解本公开的各方面。本领域技术人员应当理解,他们可以容易地使用本公开作为设计或修改其他工艺和结构以实现本文介绍的实施例的相同目的和/或实现本文介绍的实施例的相同优点的基础。本领域技术人员还应该认识到,这样的等同构造不脱离本公开的精神和范围,并且他们可以在不脱离本公开的精神和范围的情况下在本文中进行各种改变、替换和变更。
[0096]
示例1是一种内存计算(cim)器件,包括:存储阵列,包括按行和列布置的多个存储单元,所述多个存储单元包括在所述存储阵列的第一行和第一列中的第一存储单元、以及在所述存储阵列的所述第一行和第二列中的第二存储单元,所述第一存储单元和所述第二存储单元被配置为存储各自的第一权重信号和第二权重信号;输入驱动器,被配置为提供
多个输入信号;第一逻辑电路,耦合到所述第一存储单元并被配置为基于所述第一权重信号和来自所述输入驱动器的第一输入信号来提供第一输出信号;以及第二逻辑电路,耦合到所述第二存储单元并被配置为基于所述第二权重信号和来自所述输入驱动器的第二输入信号来提供第二输出信号。
[0097]
示例2是示例1所述的器件,其中,所述第一逻辑电路和所述第二逻辑电路各自包括乘法电路。
[0098]
示例3是示例2所述的器件,其中,所述乘法电路包括nor门。
[0099]
示例4是示例2所述的器件,其中,所述乘法电路包括and门。
[0100]
示例5是示例1所述的器件,其中,所述第一存储单元和所述第二存储单元各自包括sram单元。
[0101]
示例6是示例1所述的器件,其中,所述第一权重信号和所述第二权重信号中的至少一个是有符号权重。
[0102]
示例7是示例1所述的器件,还包括:在所述存储阵列的第二行和所述第一列中的第三存储单元、以及在所述存储阵列的所述第二行和所述第二列中的第四存储单元,所述第三存储单元和所述第四存储单元被配置为存储各自的第三权重信号和第四权重信号;第三逻辑电路,耦合到所述第三存储单元并被配置为基于所述第三权重信号和来自所述输入驱动器的第三输入信号来提供第三输出信号;以及第四逻辑电路,耦合到所述第四存储单元并被配置为基于所述第四权重信号和来自所述输入驱动器的第四输入信号来提供第四输出信号。
[0103]
示例8是示例7所述的器件,还包括:加法器电路,被配置为将所述第一输出信号、所述第二输出信号、所述第三输出信号和所述第四输出信号相加。
[0104]
示例9是示例8所述的器件,其中,所述加法器电路被配置为将与所述第一权重信号、所述第二权重信号、所述第三权重信号和所述第四权重信号相关联的权重符号信号相加。
[0105]
示例10是一种内存计算(cim)器件,包括:存储阵列,包括按行和列布置的多个存储单元,所述多个存储单元被配置为存储具有w位的权重信号,其中,w是正整数,所述存储阵列包括w列,所述存储单元中的每一个被配置为存储所述权重信号的一位;多个乘法电路,所述存储单元中的每一个耦合到所述乘法电路中的相应的一个乘法电路,并且所述多个乘法电路被配置为基于接收到的输入信号和存储在相应的存储单元中的所述权重信号来提供乘积信号;以及加法器电路,被配置为将所述乘积信号相加并输出部分和信号。
[0106]
示例11是示例10所述的器件,其中,存储所述w位的所述权重信号的存储单元在所述存储阵列的一行中。
[0107]
示例12是示例10所述的器件,其中,所述存储单元被配置为存储多个所述权重信号,并且其中,存储所述w位的所述多个权重信号的存储单元和对应的乘法电路在所述存储阵列的相应的多个行中。
[0108]
示例13是示例12所述的器件,其中,所述加法器电路各自被配置为从所述存储阵列的两行接收所述乘积信号。
[0109]
示例14是示例13所述的器件,其中,所述加法器电路各自被配置为接收对应于所述权重信号的权重符号。
[0110]
示例15是示例13所述的器件,其中,所述加法器电路各自包括一个半加器电路和w个全加器电路。
[0111]
示例16是示例10所述的器件,还包括:累加电路,被配置为对所述部分和信号进行移位和相加以产生cim输出。
[0112]
示例17是一种内存计算(cim)方法,包括:将多个权重信号存储在多个存储单元中,其中,所述权重信号中的每一个具有w位,w是正整数,并且其中,所述存储单元中的每一个存储所述w位权重信号的一位;提供多个逻辑电路,所述多个逻辑电路连接到所述多个存储单元中的相应的存储单元;将输入信号提供给所述多个逻辑电路,以将所述权重信号乘以所述输入信号以提供多个乘积信号;将所述多个乘积信号从所述多个逻辑电路输出到加法器树;提供权重符号信号,所述权重符号信号被配置为指示所述权重信号是否是有符号的;以及通过所述加法器树基于所述乘积信号和所述权重符号信号来输出部分和信号。
[0113]
示例18是示例17所述的方法,还包括:通过累加器对所述部分和信号进行移位和相加以产生cim输出。
[0114]
示例19是示例17所述的方法,其中,所述存储单元按行和列的矩阵来布置,其中,所述加法器树包括多个加法器电路,并且其中,将所述多个乘积信号从所述多个逻辑电路输出包括:将来自相邻行的所述乘积信号输出到所述加法器电路中的每一个。
[0115]
示例20是示例17所述的方法,还包括:组合多个所述w位权重信号。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1