一种应用于存内计算的位单元及存算阵列装置的制作方法

文档序号:23157874发布日期:2020-12-04 13:52阅读:120来源:国知局
一种应用于存内计算的位单元及存算阵列装置的制作方法

本发明涉及存内计算技术领域,特别是涉及一种应用于存内计算的位单元及存算阵列装置。



背景技术:

深度卷积神经网络(deepconvolutionalneuralnetwork,dcnns)继续证明了推理精度的提高,深度学习正在向边缘计算转移。这一发展推动了低资源机器学习算法及其加速硬件的工作。dcnns中最常见的运算是乘法和累加(multiplyaccumulate,mac),它控制着功率和延迟。mac操作具有很高的规则性和并行性,因此非常适合硬件加速。然而,内存访问量严重限制了传统数字加速器的能源效率。

现在的存算阵列基本都基于六管或者更多管子的存储单元,mac操作分为基于电阻分压器、放电率等的电流域计算和基于电荷共享、电容分压器等的电荷域计算两种。相比而言电荷域计算由于没有静态电流,所以功耗更低。而六管结构面积更大,功耗也更大。

如何简化存算阵列结构、降低功耗、提高存算效率和精度,成为一个亟待解决的技术问题。



技术实现要素:

本发明的目的是提供一种应用于存内计算的位单元及存算阵列装置,以实现简化存算阵列结构、降低功耗、提高存算效率和精度。

为实现上述目的,本发明提供了如下方案:

一种应用于存内计算的位单元,所述位单元包括:

四管存储单元和用于将激活信号与四管存储单元输出的权值进行累积加操作的外围存算电路;

所述四管存储单元的权值输出端与所述四管存储单元的权值输入端连接,所述四管存储单元的反权值输出端与所述四管存储单元的反权值输入端连接;

所述四管存储单元的字线控制端与字线连接,所述四管存储单元的位线控制端与位线连接,所述四管存储单元的反位线控制端与反位线连接;

所述外围存算电路的第一激活信号输入端与第一激活信号线,所述外围存算电路的第一反激活信号输入端与第一反激活信号线连接;

所述外围存算电路的第二激活信号输入端与第二激活信号线,所述外围存算电路的第二反激活信号输入端与第二反激活信号线连接;

所述外围存算电路的信号输出端与信号输出线连接。

可选的,所述四管存储单元包括晶体管t1、晶体管t2、晶体管t3和晶体管t4;

晶体管t1的输入端和晶体管t2的输入端均与电源vdd连接,晶体管t1的输出端与晶体管t2的控制端连接,晶体管t1的控制端与晶体管t2的输出端连接;

晶体管t3的输入端与位线bl连接,晶体管t3的输出端与晶体管t1的输出端连接,晶体管t3的控制端与字线wl连接;

晶体管t4的输入端与反位线blb连接,晶体管t4的输出端与晶体管t2的输出端连接,晶体管t4的控制端与字线wl连接。

可选的,所述外围存算电路,包括电容c1、电容c2、晶体管t5、晶体管t6、晶体管t7和晶体管t8;

晶体管t5的输入端与第一激活信号线mwl_a连接,晶体管t6的输入端与第一反激活信号线mwlb_a连接;晶体管t5的输出端、晶体管t6的输出端和电容c1的一端共点连接;

晶体管t7的输入端与第二激活信号线mwl_b连接,晶体管t8的输入端与第二反激活信号线mwlb_b连接;晶体管t7的输出端、晶体管t8的输出端和电容c2的一端共点连接;

电容c1的另一端和电容c2的另一端连接后与信号输出线连接;

晶体管t5的控制端和晶体管t7的控制端均与所述四管存储单元的权值输出端连接;

晶体管t6的控制端和晶体管t8的控制端均与所述四管存储单元的反权值输出端连接。

一种存算阵列装置,所述存算阵列装置包括:

存储阵列模块、列译码模块、行译码模块、输入激活驱动模块和模数转换输出模块;所述存储阵列模块包括成阵列排列的个应用于存内计算的位单元;

列译码模块的n个位线输出端分别与n个位线连接,列译码模块的n个反位线输出端分别与n个反位线连接;

行译码模块的m个字线输出端分别与m个字线连接;

存储阵列模块的m个第一激活信号输出端分别与m个第一激活信号线连接,存储阵列模块的m个第一反激活信号输出端分别与m个第一反激活信号线连接;存储阵列模块的m个第二激活信号输出端分别与m个第二激活信号线连接,存储阵列模块的m个第二反激活信号输出端分别与m个第二反激活信号线连接;

模数转换输出模块的n个模拟信号输入端分别与n个信号输出线连接;

存储阵列模块的m行的位单元的字线控制端分别与m个字线连接;

存储阵列模块的m行的位单元的第一激活信号输入端分别与m个第一激活信号线连接,存储阵列模块的m行的位单元的第一反激活信号输入端分别与m个第一反激活信号线连接,存储阵列模块的m行的位单元的第二激活信号输入端分别与m个第二激活信号线连接,存储阵列模块的m行的位单元的第二反激活信号输入端分别与m个第二反激活信号线连接;

存储阵列模块的n列的位单元的位线控制端分别与n个位线连接,存储阵列模块的n列的位单元的反位线控制端分别与n个反位线连接;

存储阵列模块的n列的位单元的信号输出端分别与n个信号输出线连接。

可选的,所述位单元包括:

四管存储单元和用于将激活信号与四管存储单元输出的权值进行累积加操作的外围存算电路;

所述四管存储单元的权值输出端与所述四管存储单元的权值输入端连接,所述四管存储单元的反权值输出端与所述四管存储单元的反权值输入端连接;

所述四管存储单元的字线控制端与字线连接,所述四管存储单元的位线控制端与位线连接,所述四管存储单元的反位线控制端与反位线连接;

所述外围存算电路的第一激活信号输入端与第一激活信号线,所述外围存算电路的第一反激活信号输入端与第一反激活信号线连接;

所述外围存算电路的第二激活信号输入端与第二激活信号线,所述外围存算电路的第二反激活信号输入端与第二反激活信号线连接;

所述外围存算电路的信号输出端与信号输出线连接。

可选的,所述四管存储单元包括晶体管t1、晶体管t2、晶体管t3和晶体管t4;

晶体管t1的输入端和晶体管t2的输入端均与电源vdd连接,晶体管t1的输出端与晶体管t2的控制端连接,晶体管t1的控制端与晶体管t2的输出端连接;

晶体管t3的输入端与位线bl连接,晶体管t3的输出端与晶体管t1的输出端连接,晶体管t3的控制端与字线wl连接;

晶体管t4的输入端与反位线blb连接,晶体管t4的输出端与晶体管t2的输出端连接,晶体管t4的控制端与字线wl连接。

可选的,所述外围存算电路,包括电容c1、电容c2、晶体管t5、晶体管t6、晶体管t7和晶体管t8;

晶体管t5的输入端与第一激活信号线mwl_a连接,晶体管t6的输入端与第一反激活信号线mwlb_a连接;晶体管t5的输出端、晶体管t6的输出端和电容c1的一端共点连接;

晶体管t7的输入端与第二激活信号线mwl_b连接,晶体管t8的输入端与第二反激活信号线mwlb_b连接;晶体管t7的输出端、晶体管t8的输出端和电容c2的一端共点连接;

电容c1的另一端和电容c2的另一端连接后与信号输出线连接;

晶体管t5的控制端和晶体管t7的控制端均与所述四管存储单元的权值输出端连接;

晶体管t6的控制端和晶体管t8的控制端均与所述四管存储单元的反权值输出端连接。

根据本发明提供的具体实施例,本发明公开了以下技术效果:

本发明提供的一种应用于存内计算的位单元,所述位单元包括:四管存储单元和用于将激活信号与四管存储单元输出的权值进行累积加操作的外围存算电路;所述四管存储单元的权值输出端与所述四管存储单元的权值输入端连接,所述四管存储单元的反权值输出端与所述四管存储单元的反权值输入端连接。本发明设置了四管存储单元,将其代替六管存储单元应用于存储阵列模块,简化了存算阵列装置的结构,本发明的外围存算电路用于进行累计加操作,利用模拟混合信号电容耦合计算完成二进制神经网络累加运算,实现5值的输入激活,提高了计算精度,而且在计算过程中没有静态电流降低了功耗且电容耦合机制拥有更好的稳定性。因此本发明实现了简化存算阵列结构、降低功耗、提高存算效率和精度。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明提供的一种应用于存内计算的位单元的电路图;

图2为本发明提供的一种存算阵列装置的电路图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的目的是提供一种应用于存内计算的位单元及存算阵列装置,以实现简化存算阵列结构、降低功耗、提高存算效率和精度。

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

实施例1

如图1所示,本发明提供一种应用于存内计算的位单元,所述位单元包括:四管存储单元和用于将激活信号与四管存储单元输出的权值进行累积加操作的外围存算电路;所述四管存储单元的权值输出端与所述四管存储单元的权值输入端连接,所述四管存储单元的反权值输出端与所述四管存储单元的反权值输入端连接;所述四管存储单元的字线控制端(晶体管t3和晶体管t4的控制端)与字线wl连接,所述四管存储单元的位线控制端(晶体管t3的输入端)与位线bl连接,所述四管存储单元的反位线控制端(晶体管t4的输入端)与反位线blb连接;所述外围存算电路的第一激活信号输入端(晶体管t5的输入端)与第一激活信号线mwl_a,所述外围存算电路的第一反激活信号输入端(晶体管t6的输入端)与第一反激活信号线mwlb_a连接;所述外围存算电路的第二激活信号输入端(晶体管t7的输入端)与第二激活信号线mwl_b,所述外围存算电路的第二反激活信号输入端(晶体管t8的输入端)与第二反激活信号线mwlb_b连接;所述外围存算电路的信号输出端(电容c1与电容c2的公共端)与信号输出线连接。

其中,所述四管存储单元包括晶体管t1、晶体管t2、晶体管t3和晶体管t4;晶体管t1的输入端和晶体管t2的输入端均与电源vdd连接,晶体管t1的输出端与晶体管t2的控制端连接,晶体管t1的控制端与晶体管t2的输出端连接;晶体管t3的输入端与位线bl连接,晶体管t3的输出端与晶体管t1的输出端连接,晶体管t3的控制端与字线wl连接;晶体管t4的输入端与反位线blb连接,晶体管t4的输出端与晶体管t2的输出端连接,晶体管t4的控制端与字线wl连接。

所述外围存算电路,包括电容c1、电容c2、晶体管t5、晶体管t6、晶体管t7和晶体管t8;晶体管t5的输入端与第一激活信号线mwl_a连接,晶体管t6的输入端与第一反激活信号线mwlb_a连接;晶体管t5的输出端、晶体管t6的输出端和电容c1的一端共点连接;晶体管t7的输入端与第二激活信号线mwl_b连接,晶体管t8的输入端与第二反激活信号线mwlb_b连接;晶体管t7的输出端、晶体管t8的输出端和电容c2的一端共点连接;

电容c1的另一端和电容c2的另一端连接后与信号输出线连接;晶体管t5的控制端和晶体管t7的控制端均与所述四管存储单元的权值输出端连接;晶体管t6的控制端和晶体管t8的控制端均与所述四管存储单元的反权值输出端连接。

具体的,如图1所示,位单元(bitcell)由4管(t1、t2、t3、t4)的基本存储结构(四管存储单元)外加两个电容(c1、c2)和四个导通晶体管(t5、t6、t7、t8)的外围存算电路组成。

在位单元中电容c1由激活信号线mwl_a/mwlb_a通过t5、t6晶体管选通之后充放电,电容c2由激活信号线mwl_b/mwlb_b通过t7、t8晶体管选通之后充放电,而这四个晶体管由存储的权值(权值q、反权值qb)选择导通。电荷(一次一行)被放在位线上并按列共享。bmac分两步:第一步预充电,mwl_a(i)、mwlb_a(i)、mwl_b(i)、mwlb_b(i)、mbl(i)同时充电至vrst(中间电平),电容两边没有电压电势;第二步充电关闭,输入驱动将激活信号传输到mwl(i)/mwlb(i),输入激活与权值同或的结果与mbl在电容两端形成电压差从而在位线mbl上产生电荷积累。mbl通过adc进行模数转换后输出结果。其中,rst为控制信号,输入与vrst(中间电平)连接的mos管的栅极,通过控制与vrst(中间电平)连接的mos管的通断,以实现预充电和充电关闭的控制。

表1为乘累加操作数表,以四根mwl线(激活信号线)上的电平高低组合来表示输入(input)的数值,表1右下方的加粗线框内的每个表格内的两个数字表示加到两个电容的电压vc1和vc2。5值输入(input)很好的提高了计算的精度。

表15值输入逻辑表

实施例2

本发明还提供一种存算阵列装置,所述存算阵列装置包括:

存储阵列模块①、列译码模块②、行译码模块③和输入激活驱动模块④和模数转换输出模块⑤;所述存储阵列模块包括成阵列排列的个应用于存内计算的位单元;列译码模块的n个位线输出端分别与n个位线连接,列译码模块的n个反位线输出端分别与n个反位线连接;行译码模块的m个字线输出端分别与m个字线连接;存储阵列模块的m个第一激活信号输出端分别与m个第一激活信号线连接,存储阵列模块的m个第一反激活信号输出端分别与m个第一反激活信号线连接;存储阵列模块的m个第二激活信号输出端分别与m个第二激活信号线连接,存储阵列模块的m个第二反激活信号输出端分别与m个第二反激活信号线连接;模数转换输出模块的n个模拟信号输入端分别与n个信号输出线连接;存储阵列模块的m行的位单元的字线控制端分别与m个字线连接;存储阵列模块的m行的位单元的第一激活信号输入端分别与m个第一激活信号线连接,存储阵列模块的m行的位单元的第一反激活信号输入端分别与m个第一反激活信号线连接,存储阵列模块的m行的位单元的第二激活信号输入端分别与m个第二激活信号线连接,存储阵列模块的m行的位单元的第二反激活信号输入端分别与m个第二反激活信号线连接;存储阵列模块的n列的位单元的位线控制端分别与n个位线连接,存储阵列模块的n列的位单元的反位线控制端分别与n个反位线连接;存储阵列模块的n列的位单元的信号输出端分别与n个信号输出线连接。

本发明的存算阵列装置包括存储阵列模块①、用于存储单元的读写操作(r/w)中的行译码的行译码模块③和列译码模块②(addressdecoder、r/wblcontrol),以及存算结构的输入激活驱动(mwldecoder/driver)的输入激活驱动模块④和模数转换输出模块⑤。其中行译码模块③对存储阵列字线wl(i)进行选取,列译码模块②对位线bl(i)及其反信号blb(i)进行作用,输入激活④作用于mwl_a[i]及其反信号mwlb_a[i]和mwl_b[i]及其反信号mwlb_b[i],,输出位线mbl(i)传输到模数转换输出模块⑤(adc)输出。

存储阵列模块中每列的二进制乘累加(bmac)操作的位线输出mbl是一列乘累加计算的和,mbl端是模拟信号,为了数字化这些值,阵列每列包含一个adc。

行译码模块③是对存取数据的地址信号进行译码,列译码模块②对存取的数据信号进行译码,以此来实现存储阵列中所存数据的基本读写操作。

输入激活驱动模块④用来传输输入激活信号,激活信号与存储阵列中所存数据(即权值)进行运算。

模数转换器adc对乘累加位线mbl(i)信号进行模数转换。

位单元的结构和工作原理与实施例1相同,在此不再赘述。

如图2所示,行译码模块③译码后输出wl[i]信号对存储阵列模块①的某一行进行选中,列译码模块②输出bl[i]和blb[i]对存储阵列模块①的某一列进行选中,列译码模块②、行译码模块③实现的是位单元中权值的读写;输入激活驱动模块④对输入激活信号译码后输出128组mwl信号,连接到阵列①的每一行;存储阵列模块①中的输出信号mbl[i]连接到模数转换输出模块⑤,模数转换输出模块⑤中的相应列的adc完成最后的结果输出。

存内计算装置是针对神经网络提出的结构,其工作原理是在存储单元中将输入激活和存储权值进行乘累加操作。在二进制神经网络(bnn)中将权值二值化为+1和−1,这样乘法就可以用简单的同或(xnor)运算来表示。本发明涉及的存内计算装置使用电荷共享来执行二进制乘累加(bmac)。

如图2所示,本发明的存算阵列装置的电荷(一次一行)被放在位线上并按列共享。bmac分两步:第一步预充电,mwl_a(i)、mwlb_a(i)、mwl_b(i)、mwlb_b(i)、mbl(i)同时充电至vrst(中间电平),电容两边没有电压电势;第二步充电关闭,输入驱动将激活信号传输到mwl(i)/mwlb(i),输入激活与权值同或的结果与mbl在电容两端形成电压差从而在位线mbl上产生电荷积累。mbl通过adc进行模数转换后输出结果。

根据本发明提供的具体实施例,本发明公开了以下技术效果:

本发明提供的一种应用于存内计算的位单元,所述位单元包括:四管存储单元和外围存算电路;所述四管存储单元的权值输出端与所述四管存储单元的权值输入端连接,所述四管存储单元的反权值输出端与所述四管存储单元的反权值输入端连接。本发明的存算阵列装置中的存储阵列模块采用4管单元,优化了阵列结构,减小了阵列面积;5值的输入激活,提高了计算精度;存内计算的计算过程通过电容耦合电荷域完成,没有静态电流降低了功耗且电容耦合机制拥有更好的稳定性。因此,本发明的存算阵列装置相较现有技术有更小的面积,更高的精度,更好的稳定性。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1