一种支持内部数据更新的存内计算流水乘加电路



1.本发明属于存内计算技术领域,具体涉及一种支持内部数据更新的存内计算流水乘加电路


背景技术:



2.存内计算技术通过将电路的存储电路和计算电路紧密结合起来,通过减少数据的频繁移动来提升电路能效;此外,存内计算电路还具有高并行度的特点。因此,存内计算技术是一种较好的神经网络加速器实现方案。当前存内计算电路中的存储电路通常是指静态随机存储器sram。典型的sram存储器每次访问(读或写)时都需要对位线进行一次预充电,把位线强制拉到高电平,然后才是字线选通,让位线与sram存储单元内部导通;最后写缓冲电路根据输入数据对位线拉低或者保持不变,即可完成写操作;灵敏放大器根据sram存储单元的值对位线拉低或者保持不变,即可完成读操作。
3.存内计算电路中的计算部分主要完成乘加运算,该运算的数学实质是对两个n元数组和进行乘加计算,即。计算时,存储的神经网络参数(一般情况下是权重)直接从存储单元经专用的数据通路送到计算单元,与输入完成乘加运算。yu-der chih等人(yu-der chih et al. an 89tops/w and 16.3tops/mm
2 all-digital sram-based full-precision compute-in memory macro in 22nm for machine-learning edge applications. isscc 2021.)提出了一种用于机器学习边缘端应用,能效89tops/w、面效比16.3tops/ mm2,基于sram的22纳米全精度数字存内计算宏电路,该电路是一种基于6t-sram的电路设计,这些设计为每个6t-sram单元配备一个单比特乘法单元电路,以产生多比特乘法的部分和,然后将部分和送入加法树和累加器,得到最终的乘加计算结果。这种方案(即一个存储单元对应一个乘法单元)在使用时,需要经历四个步骤:(1)将权重写入存储单元;(2)计算;(3)更新存储单元的值;(4)计算;这种方案每个步骤均需要单独的若干个时钟周期。
4.在公开号为cn114281301a、申请名称为“支持内部数据乒乓的高密度存内计算乘加单元电路”专利中采用乒乓的方式让计算和更新存储单元的值能够同时进行,有效提高了计算效率。不过当前存内计算电路还存在如下问题:(1)当前一些典型的神经网络模型都很大,如vgg-16,resnet-50等。即使是轻量化网络mobilenet,也有4209088个权重参数,如果这些参数采用8比特整型表示,则保存所有权重需要4.014mb的存储空间,这超过了绝大多数片上sram缓存的大小。故完整的模型参数只能保存在大容量片外存储器中,如dram,硬盘等。(2)和片上电路相比,片外存储器访问速度较慢;此外,在大多数情况下,片外存储器需要采用分时复用的方式为多个任务提供数据访问服务,故神经网络权重参数可能要隔几千甚至几万个时钟周期,才从片外存储器中读取一次。这种超长的片外存储器访问延迟会导致权重更新不及时,从而影响算力。非存内计算方式实现神经网络加速器采用在片上加
权重sram缓冲的方式来解决此问题。这时权重的转移路径为:a. 从片外存储器到片内sram缓冲;b. 从片内sram缓冲到再到计算单元。对于存内计算电路而言,该专利采用了内部数据乒乓的方式进行数据更新。这种方式让计算和权重更新能够同时进行,消除了权重更新导致的计算暂停。但这种方式缓冲能力非常有限,无法消除片外存储器访问对整个计算的影响,很可能出现乒乓结构中的两个权重都已经使用完毕,但新的权重仍未到来。故这时仍然需要一个片上权重sram缓冲。但加了权重sram缓冲之后,现有技术中权重转移的路径和非存内计算方式相同,都是从片外存储器到片上sram缓冲,再从片上sram缓冲到存内计算内部存储单元,然后用于计算。这样存内计算电路权重总的移动次数并没有得到减少,故电路总能效基本不会有提升。
5.因此,需要一种新的设计来增大存内计算电路的缓冲能力,同时又能将电路能效维持在较高水平。


技术实现要素:



6.针对背景技术所存在的问题,本发明的目的在于提供一种支持内部数据更新的存内计算流水乘加电路。该电路在每列sram的同一条位线上除了设置有用于计算的乒乓结构的sram单元组之外,还设置若干个只支持存储的普通sram单元,作为权重缓冲单元;此外,电路中的乘法部分采用流水线工作方式,减小了后续加法树等组合逻辑的规模,让电路能以更低的电压或者更高的频率工作。两种方式的设计,使得电路减少了更新的能量消耗,且提升了最大算力。
7.为实现上述目的,本发明的技术方案如下:一种支持内部数据更新的存内计算流水乘加电路,包括控制电路、多个存内计算块和一个加法树;每个存内计算块包含存储电路和乘法电路两部分;所述存储电路包括n列sram与若干个数据选择器,每列sram包含2个用于计算的存储单元(bit cell)和若干个普通存储单元,同一行存储单元共用同一字线,同一列存储单元共用同一位线;两个用于计算的存储单元构成一个乒乓组(group);每个乒乓组中存储的权重数据通过数据选择器传输到乘法电路,普通存储单元中的权重通过内部数据更新的方式送到乒乓组;所述乘法电路采用移位累加,并进行流水化,从而划分为t个阶段,其中t为数据宽度;每个阶段对权重和输入激活值进行一次移位累加,经过t次移位累加之后,得到t比特权重和t比特输入激活值的乘法结果;所有乘法结果送入加法树,得到最终的乘加运算结果;所述控制电路包括地址译码器、读写控制器和计算控制器;其中,所述地址译码器完成地址到sram阵列字线的转换,以选中每列sram中的一个存储单元;读写控制器包括预充电电路、写缓冲电路、灵敏放大器以及读写模式选择电路;预充电电路将位线上拉至高电平;写缓冲电路将位线从高电平转变为与要写入sram的数据值对应的电平,从而完成写操作;灵敏放大器根据sram存储单元的值把位线拉低或者保持不变,从而完成读操作;读写模式选择电路用于确定sram阵列是工作在普通模式还是内部数据更新模式;普通模式下将sram阵列看作一个普通的存储器来进行读写操作,故当整个片上sram存储资源不够的情况下,存储电路也可作为一个普通存储器来使用,内部数据更新模式完成权重从每列sram上的普通存储单元到乒乓组的搬移;
计算控制器用于将神经网络激活值通过移位的方式输入至计算电路,并产生相应的控制信号。
8.进一步地,支持内部数据更新的存内计算流水乘加电路的运算过程为:(1)初始化,把片外存储器存储的权重写入sram存储单元,此时sram阵列工作在普通模式;(2)神经网络激活值输入到计算电路,将乒乓组中的一个存储单元的值输入至计算电路,开始计算;(3)切换乒乓组中用于计算的存储单元,开启下一轮计算;(4)通过内部数据更新,将权重从每列上的普通存储单元搬移到乒乓组中之前用于计算的存储单元中;重复(3)和(4),直至完成所有计算。
9.进一步地,内部数据更新的工作流程为:(a) 预充电,将同一列存储单元共用的位线上拉至高电平;(b) 停止预充电,字线选中一个普通存储单元,同时灵敏放大器开始工作,从而将普通存储单元中存储的权重数据的值读到位线上;(c) 一直使能灵敏放大器,以保持位线上的电平不变;(d) 地址译码器在外部命令的指示下改变地址,通过字线选中乒乓组中需要进行数据更新的存储单元,让位线上的电平注入到该存储单元中,从而完成内部数据更新;(e) 灵敏放大器停止工作。
10.从工作原理上讲:在存内计算流水乘加电路的运算过程中,因为计算所花时钟周期相对较长,内部数据更新所花时钟周期相对较短,故步骤(4)完毕后,可能还要经过若干周期,才会进行步骤(3);这若干周期称为空档期。在这空档期内,计算电路正常工作;存储电路可根据需要切换到普通模式,更新每一列上普通sram单元的值。这是每列上普通sram单元缓冲作用的体现。
11.同时,现有技术中,即使存储电路支持乒乓操作,但是其权重数据值的更新仍然需要从存内计算电路外部的sram缓冲中进行,步骤包括:(a)读外部sram缓冲;(b)将外部sram缓冲读出值写到存内计算块内部sram单元。读外部sram缓冲有一次预充电过程,之后的写存内计算块内部sram单元也有一次预充电过程;而本技术提供的内部数据更新工作方式总共只需一次预充电过程。
12.综上所述,由于采用了上述技术方案,本发明的有益效果是:本发明乘加电路通过在存内计算存储阵列中每条位线上设置若干个的普通存储单元,提供了足够大小的权重缓冲,有效确保了计算电路不被从外部存储器获取权重所带来的高延时所中断;同时内部数据更新的工作方式使得权重更新所需的预充电次数从2次变为1次,有效减少更新的能量消耗,最高能减少50%;此外乘加电路中的乘法部分采用流水线工作方式,减小了后续加法树的规模,从而允许电路以更高的频率或者更低的电压运行,前者有助于提高电路的最大算力,后者有助于提高电路的能效。
附图说明
13.图1为本发明支持内部数据更新的存内计算流水乘加电路的整体结构示意图。
14.图2为本发明每个存算块的内部结构示意图。
15.图3为本发明一列sram的结构示意图。
具体实施方式
16.为使本发明的目的、技术方案和优点更加清楚,下面结合实施方式和附图,对本发明作进一步地详细描述。
17.一种支持内部数据更新的存内计算流水乘加电路,其整体结构示意图如图1所示,包括控制电路、多个存内计算块(简称为存算块)和一个加法树;每个存内计算块包含存储电路和乘法电路两部分;所述存储电路包括n列sram与一定数量的数据选择器,每列sram包含2个用于计算的存储单元(bit cell)和若干个普通存储单元,同一行存储单元共用同一字线,同一列存储单元共用同一位线;两个用于计算的存储单元构成一个乒乓组(group);每个乒乓组中存储的权重数据通过数据选择器传输到乘法电路,普通存储单元中的权重通过内部数据更新的方式送到乒乓组;所述乘法电路为多个t阶段的流水移位乘法电路,其中t为数据宽度;流水移位乘法电路的每个阶段对权重和输入激活值进行一次移位累加,经过t次移位累加之后,得到t比特权重和t比特输入激活值的乘法结果;所有乘法结果送入加法树,得到最终的乘加运算结果;所述控制电路包括地址译码器、读写控制器和计算控制器;其中,所述地址译码器完成地址到sram阵列字线的转换,以选中每列sram中的一个存储单元;读写控制器包括预充电电路、写缓冲电路、灵敏放大器以及读写模式选择电路;预充电电路用于将位线拉到高电平;写缓冲电路将位线从高电平转变为与要写入sram的数据值对应的电平,完成写操作;灵敏放大器根据sram存储单元的值对位线拉低或者保持不变,从而完成读操作;读写模式选择电路用于确定sram阵列是工作在普通模式还是内部数据更新模式;普通模式为将sram阵列看作一个普通的存储器来进行读写操作,故当整个片上sram存储资源不够的情况下,存储电路也可作为一个普通存储器来使用,内部数据更新模式完成权重从每列sram上的普通存储单元到乒乓组的搬移;计算控制器用于将神经网络激活值通过移位的方式输入至计算电路,并产生计算使能等控制信号。
18.实施例1本实施例以存内计算流水乘加电路包含8个存算块,输入激活值和权重均为8-bit宽度为例进行说明。图1中addr为待访问的sram地址,web为写信号,ceb为片选信号,local为sram普通模式和内部数据更新模式选择信号,wl为位线,win为权重输入线,s为输入到数据选择器的选择控制信号。激活值输入到计算控制器,然后再送到各个存算块,每个存算块的计算结果送到加法树相加,然后得到最终的乘加运算结果。
19.每个存算块内部结构均相同,其结构示意图如图2所示,包括8列sram和一个8阶段的流水移位乘法电路。其中din0[7:0],
ꢀ…ꢀ
din7[7:0]为8个输入激活值,由同一激活值在计算控制电路中通过不同次数的移位操作得到;w[7], w[6],
ꢀ…ꢀ
w[0]为权重的第7到第0比特;pmul0[8:0],
ꢀ…ꢀ
pmul6[14:0], pmul7[15:0]为每个移位累加阶段的输出。pmul7[15:0]也就是该8比特激活值与该8比特权重的乘法输出结果。
[0020]
一列sram的结构示意图如图3所示,包括30个只能用于存储权重数据的普通sram单元和一个乒乓组(sram#0和sram#1),即每一列上总共有32个存储单元,一个数据选择器。图中s为数据选择器选择控制信号,mux表示数据选择器,y为数据选择器的输出。长短线表
示位线,乒乓组存储的权重与数据选择器的输入端直接连接。
[0021]
32个存储单元和只有两个存储单元的乒乓组相比,容量增大了16倍,能有效对权重进行缓存,从而存内计算电路外部不再需要单独的权重缓存,权重可以直接来自片外存储器。sram#2, sram#3,
ꢀ…ꢀ
sram#31等普通存储单元存储的权重可通过内部数据更新方式搬移到sram#0或sram#1中。因为本实例中包含8个存算块,每个处理单元包含8列sram,故该存内计算电路总的存储容量仅为2kb。
[0022]
计算电路的运算过程为:流水移位乘法电路的第一阶段完成权重的最高位w[7]与输入激活值din0[7:0]的乘法,然后将该阶段移位后的乘法结果pmul0[8:0]输入至第二阶段;第二阶段完成权重次高位w[6]与输入激活值din1[7:0]的乘法比特数据的乘法,并和第一阶段的输出结果pmul0[8:0]相加;相加后的结果再经移位后送入第三阶段;依次进行后续阶段,经过8个周期后,即可得到一个16比特的乘法计算结果pmul0[15:0];加法树完成8个16比特乘积pmulx[15:0] (x=0, 1,
ꢀ…
7)的相加,得到最终的乘加结果,最终的乘加结果为19比特。
[0023]
控制电路包括地址译码器、读写控制器和计算控制器;(1)因为该实施例中有8个存算块,每个计算处理单元有32条字线,总共有256条字线,对应地址宽度为8比特。故地址驱动器主要完成8比特地址到256条字线的译码,用于选中一个存储单元;(2)读写控制器首先根据local信号确定sram阵列是工在普通模式还是内部数据更新模式。并根据两种不同的模式,控制预充电电路,写缓冲电路,灵敏放大电路对位线进行不同的操作。
[0024]
(3)计算控制器负责对8比特输入激活值进行不同次数的移位,以得到din0[7:0], din1[7:0],
ꢀ…ꢀ
din7[7:0],并对每个乒乓组中两个用于计算的存储单元进行选择,输出对应的值到计算电路。
[0025]
整个电路工作流程:sram阵列先工作在普通模式,在这个模式下,将权重写入用于计算的两个乒乓sram单元,然后,便可开始计算操作;计算的同时,继续往同一列上的普通sram存储单元写权重。
[0026]
计算开始时,激活值开始持续输入,数据选择器也把乒乓组其中一个存储单元的权重输入到流水移位乘法电路的各个阶段。经过8个周期后,乘法电路开始持续输出乘法结果。8个乘法结果送到加法树的输入端,加法树随即输出对应的乘加结果。
[0027]
经过若干个计算周期,当前权重使用完毕后,数据选择器选择另外一个用于计算的sram存储单元,乒乓操作使计算得以继续。同时,之前的存储单元通过发明内容部分所述的内部数据更新方式从同一列上的普通sram单元得到新的权重。如此循环,直到完成所有乘加操作。
[0028]
以上所述,仅为本发明的具体实施方式,本说明书中所公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换;所公开的所有特征、或所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以任何方式组合。

技术特征:


1.一种支持内部数据更新的存内计算流水乘加电路,其特征在于,包括控制电路、多个存内计算块和一个加法树;每个存内计算块包含存储电路和乘法电路;所述存储电路包括n列sram与若干个数据选择器,每列sram包含2个用于计算的存储单元和若干个普通存储单元,同一行存储单元共用同一字线,同一列存储单元共用同一位线;两个用于计算的存储单元构成一个乒乓组;每个乒乓组中存储的权重数据通过数据选择器传输到乘法电路,普通存储单元中的权重通过内部数据更新的方式输入乒乓组;所述乘法电路采用移位累加,并进行流水化,从而划分为t个阶段,其中t为数据宽度;每个阶段对权重和输入激活值进行一次移位累加,经过t次移位累加之后,得到t比特权重和t比特输入激活值的乘法结果;所有乘法结果送入加法树,得到最终的乘加运算结果;所述控制电路包括地址译码器、读写控制器和计算控制器;其中,所述地址译码器完成地址到sram字线的转换,以选中每列sram中的一个存储单元;读写控制器包括预充电电路、写缓冲电路、灵敏放大器以及读写模式选择电路;预充电电路将位线上拉至高电平;写缓冲电路将位线从高电平转变为与要写入sram的数据值对应的电平,从而完成写操作;灵敏放大器根据sram存储单元的值对位线拉低或者保持不变,从而完成读操作;读写模式选择电路用于确定sram是工作在普通模式还是内部数据更新模式;计算控制器用于将神经网络激活值通过移位的方式输入至计算电路,并产生相应的控制信号。2.如权利要求1所述的支持内部数据更新的存内计算流水乘加电路,其特征在于,普通模式下,当整个片上sram存储资源不够的情况下,存储电路作为一个普通存储器来进行读写操作;内部数据更新模式下完成权重从每列sram上的普通存储单元到乒乓组的搬移。3.如权利要求1所述的支持内部数据更新的存内计算流水乘加电路,其特征在于,存内计算流水乘加电路的运算过程为:(1)初始化,把片外存储器存储的权重写入sram存储单元,此时sram阵列工作在普通模式;(2)神经网络激活值输入到计算电路,将乒乓组中的一个存储单元的值输入到计算电路,开始计算;(3)切换乒乓组中用于计算的存储单元,开启下一轮计算;(4)通过内部数据更新,将权重从每列sram上的普通存储单元搬移到乒乓组中之前用于计算的存储单元中;重复(3)和(4),直至完成所有计算。4.如权利要求1所述的支持内部数据更新的存内计算流水乘加电路,其特征在于,内部数据更新的工作流程为:(a)预充电,将同一列存储单元共用的位线上拉至高电平;(b)停止预充电,字线选中一个普通存储单元,同时灵敏放大器开始工作,从而将普通存储单元中存储的权重数据的值读到位线上;(c)一直使能灵敏放大器,以保持位线上的电平不变;(d)地址译码器在外部命令的指示下改变地址,通过字线选中乒乓组中需要进行数据更新的存储单元,让位线上的电平注入到该存储单元中,从而完成内部数据更新;(e)灵敏放大器停止工作。

技术总结


本发明的目的在于提供一种支持内部数据更新的存内计算流水乘加电路,属于存内计算技术领域。该电路在每列SRAM的同一条位线上除了设置有用于计算的乒乓结构的SRAM单元组之外,还设置若干个只支持存储的普通SRAM单元,作为权重缓冲单元;此外,电路中的乘法部分采用流水线工作方式,减小了后续加法树等组合逻辑的规模,让电路能以更低的电压或者更高的频率工作。两种方式的设计,使得电路减少了更新的能量消耗,且提升了最大算力。且提升了最大算力。且提升了最大算力。


技术研发人员:

常亮 赵攀 赵鑫 王远博 曾嘉豪 常致远 周军

受保护的技术使用者:

电子科技大学

技术研发日:

2022.10.10

技术公布日:

2022/11/8

本文发布于:2024-09-22 19:19:04,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/3411.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:电路   权重   单元   数据
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议