CN115658012A - 向量乘加器的sram模拟存内计算装置和电子设备 - Google Patents

向量乘加器的sram模拟存内计算装置和电子设备 Download PDF

Info

Publication number
CN115658012A
CN115658012A CN202211217034.7A CN202211217034A CN115658012A CN 115658012 A CN115658012 A CN 115658012A CN 202211217034 A CN202211217034 A CN 202211217034A CN 115658012 A CN115658012 A CN 115658012A
Authority
CN
China
Prior art keywords
multiplication
electrically connected
input
adder
bit
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.)
Granted
Application number
CN202211217034.7A
Other languages
English (en)
Other versions
CN115658012B (zh
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.)
Hangzhou Zhixinke Microelectronics Technology Co ltd
Original Assignee
Hangzhou Zhixinke Microelectronics Technology 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
Application filed by Hangzhou Zhixinke Microelectronics Technology Co ltd filed Critical Hangzhou Zhixinke Microelectronics Technology Co ltd
Priority to CN202211217034.7A priority Critical patent/CN115658012B/zh
Publication of CN115658012A publication Critical patent/CN115658012A/zh
Application granted granted Critical
Publication of CN115658012B publication Critical patent/CN115658012B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Complex Calculations (AREA)

Abstract

本申请实施例提供一种向量乘加器的SRAM模拟存内计算装置和电子设备,涉及存内计算技术领域,可以简化存内计算装置的电路结构。存内计算装置包括:n个单比特输出模块,每个单比特输出模块包括乘法单元,乘法单元包括存储器和乘法电路,乘法电路的第二乘法输入端电连接于存储器的输出端,乘法电路用于对第一乘法输入端和第二乘法输入端的数值进行乘法计算并通过乘法输出端输出结果至单比特输出模块的输出端;第一加法器,第一加法器包括模拟加法电路,第一加法器包括n个第一加法输入端,第a个第一加法输入端电连接于第a个单比特输出模块的输出端;移位累加器,用于周期性对第一加法器的输出结果进行单比特移位累加计算。

Description

向量乘加器的SRAM模拟存内计算装置和电子设备
技术领域
本申请涉及存内计算技术领域,特别涉及一种向量乘加器的SRAM模拟存内计算装置和电子设备。
背景技术
基于传统冯诺依曼架构进行计算的方式,大量的性能功耗都用在了数据传输和读写上,效率比较低。基于上述问题,出现了存内计算(computing-in-memory,CIM)架构,CIM架构将计算单元和存储单元集成于同一芯片,构成具有计算能力的存储单元,并在其中完成运算,这种极度近邻的布局消除了数据移动的延迟和功耗,改善了“存储墙”和“功耗墙”的问题,因此相对于传统架构的提高了计算能效比。但是,目前CIM架构的芯片,在计算较大数据量时,需要较为复杂的电路结构来实现功能。
发明内容
一种向量乘加器的SRAM模拟存内计算装置和电子设备,可以简化存内计算装置的电路结构。
第一方面,提供一种向量乘加器的SRAM模拟存内计算装置,包括:n个单比特输出模块,n>1,每个单比特输出模块包括乘法单元,乘法单元包括存储器和乘法电路,乘法电路包括第一乘法输入端、第二乘法输入端和乘法输出端,第二乘法输入端电连接于存储器的输出端,乘法电路用于对第一乘法输入端和第二乘法输入端的数值进行乘法计算并通过乘法输出端输出结果至单比特输出模块的输出端;第一加法器,第一加法器包括模拟加法电路,第一加法器包括n个第一加法输入端,第a个第一加法输入端电连接于第a个单比特输出模块的输出端,a的取值为1、2、...、n;移位累加器,用于周期性对第一加法器的输出结果进行单比特移位累加计算。
在一种可能的实施方式中,第一加法器包括模拟加法电路和模数转换器;模拟加法电路包括n个电容,第a个电容的第一端为第a个第一加法输入端,n个电容的第二端连接于模数转换器的输入端,模数转换器的输出端作为第一加法器的输出端。
在一种可能的实施方式中,每个单比特输出模块包括多路选通电路和m个乘法单元,m>1,在每个单比特输出模块中,每个乘法输出端通过多路选通电路电连接于单比特输出模块的输出端。
在一种可能的实施方式中,对于同一个单比特输出模块,m个乘法单元的第一乘法输入端电连接于同一个初始输入端。
在一种可能的实施方式中,每个多路选通电路包括m个选通开关,在每个单比特输出模块中,第j个选通开关串联于第j个乘法单元的乘法输出端与单比特输出模块的输出端之间,j的取值为0、1、2、...、m-1;存内计算装置工作于m个周期,每个周期包括q个子周期;在第j个周期,每个多路选通电路中第q-1-j个选通开关导通;在每个周期的第k个子周期,初始输入端输入第q-1-k位数值,k的取值为0、1、2、...、q-1。
在一种可能的实施方式中,每个多路选通电路包括m个选通开关,在每个单比特输出模块中,第j个选通开关串联于第j个乘法单元的乘法输出端与单比特输出模块的输出端之间,j的取值为0、1、2、...、m-1;存内计算装置工作于m个周期,每个周期包括q个子周期;在第j个周期,初始输入端输入第q-1-k位数值,k的取值为0、1、2、...、q-1;在每个周期的第k个子周期,每个多路选通电路中第q-1-j个选通开关导通。
在一种可能的实施方式中,每个单比特输出模块包括p个第一多路选通电路和p个乘法单元组,每个乘法单元组包括m个乘法单元,p>1,m>1,在每个单比特输出模块中,第b个乘法单元组中的每个乘法输出端通过第b个第一多路选通电路电连接于单比特输出模块的输出端,b的取值为1、2、...、p;每个单比特输出模块还包括p个初始输入节点,在第b个乘法单元组中,m个乘法单元的第一乘法输入端电连接于第b个初始输入节点;每个单比特输出模块还包括第二多路选通电路,第二多路选通电路包括一个初始输入端和p个选通端,第b个选通端电连接于第b个初始输入节点;每个初始输入节点通过开关器件电连接于低电平输出端。
在一种可能的实施方式中,存内计算装置包括:m个输出模块组,m>1,每个输出模块组均包括n个单比特输出模块和第一加法器,第c个输出模块组还包括移位器,c的取值为2、3、...、m,第c个输出模块组中移位器用于对第一加法器的输出结果进行c-1比特的移位;第二加法器,第二加法器包括m个第二加法输入端,第1个输出模块组中第一加法器的输出端电连接于第1个第二加法输入端,第c个输出模块组中移位器的输出端电连接于第c个第二加法输入端;移位累加器具体用于,周期性对第二加法器的输出结果进行单比特移位累加计算。
在一种可能的实施方式中,存内计算装置还包括:n个初始输入端;对于每个输出模块组,第a个单比特输出模块中第一乘法输入端电连接于第a个初始输入端。
在一种可能的实施方式中,存内计算装置工作于m个周期;在第j个周期,初始输入端输入第q-1-k位数值,k的取值为0、1、2、...、q-1;第1个第一加法器用于将从n个第一加法输入端得到的数值进行加法计算,并输出至第1个第二加法输入端;第c个第一加法器用于将从n个第一加法输入端得到的数值进行加法计算,并输出至第c个输出模组的移位器;第c个输出模组的移位器对输入的数值进行单比特移位并输出至第c个第二加法输入端。
在一种可能的实施方式中,每个单比特输出模块包括p个乘法单元,p>1,在每个单比特输出模块中,每个乘法单元的乘法输出端电连接于单比特输出模块的输出端;存内计算装置还包括n个输入节点组,每个输入节点组包括p个初始输入节点,对于每个输出模块组,第a个单比特输出模块的第b个乘法单元的第一乘法输入端电连接于第a个输入节点组的第b个初始输入节点;存内计算装置还包括n个第二多路选通电路,每个第二多路选通电路包括一个初始输入端和p个选通端,第a个第二多路选通电路的第b个选通端电连接于第a个输入节点组的第b个初始输入节点;每个初始输入节点通过开关器件电连接于低电平输出端。
在一种可能的实施方式中,移位累加器还用于对移位累加计算的结果进行二进制补码计算。
在一种可能的实施方式中,乘法电路包括:第一晶体管,其第一端电连接于乘法输出端,其控制端电连接于第一乘法输入端;第二晶体管,其第一端电连接于第一晶体管的第二端,其第二端电连接于低电平输出端,其控制端电连接于第二乘法输入端;第一晶体管和第二晶体管为n型晶体管。
在一种可能的实施方式中,存储器包括:第三晶体管,其第一端电连接于高电平输出端;第四晶体管,其第一端电连接于第三晶体管的第二端,其第二端电连接于低电平输出端,其控制端电连接于第三晶体管的控制端;第五晶体管,其第一端电连接于高电平输出端,其第二端为存储器的输出端,其控制端电连接于第三晶体管的第二端;第六晶体管,其第一端电连接于第五晶体管的第二端,其第二端电连接于低电平输出端,其控制端电连接于第五晶体管的控制端;第七晶体管,其第一端电连接于写入位线,其第二端电连接于第三晶体管的第二端,其控制端电连接于写入字线;第八晶体管,其第一端电连接于反向写入位线,其第二端电连接于第五晶体管的第二端,其控制端电连接于写入字线;第三晶体管和第五晶体管为p型晶体管,第四晶体管、第六晶体管、第七晶体管和第八晶体管为n型晶体管。
在一种可能的实施方式中,存内计算装置还包括:与第一加法器对应的n个预充电晶体管,第一加法器的第a个第一加法输入端电连接于第a个预充电晶体管的第一端,预充电晶体管的第二端电连接于高电平输出端。
第二方面,提供一种电子设备,包括上述的存内计算装置。
本申请实施例中的向量乘加器的SRAM模拟存内计算装置和电子设备,通过单比特输出模块中乘法电路和存储器的配合实现一个比特的乘法计算,通过第一加法器获取来自于不同单比特输出模块的数值进行加法计算,移位累加器周期性对第一加法器的输出结果进行单比特移位累加计算,通过这种方式,可以基于较为简单的电路结构实现多位二进制数值和多个权重之间的乘加计算,即简化了存内计算装置的电路结构。另外,移位累加还用于对移位累加计算的结果进行二进制补码计算,以实现带符号位的计算。
附图说明
图1为本申请实施例中一种存内计算装置的结构示意图;
图2a为本申请实施例中一种单比特输出模块的结构示意图;
图2b为本申请实施例中另一种单比特输出模块的结构示意图;
图3为本申请实施例中另一种存内计算装置的结构示意图;
图4a为本申请实施例中另一种存内计算装置的结构示意图;
图4b为本申请实施例中一种存内计算装置中部分电路的结构示意图;
图5为本申请实施例中另一种存内计算装置的结构示意图;
图6为本申请实施例中另一种存内计算装置的结构示意图;
图7为本申请实施例中另一种存内计算装置的结构示意图;
图8为本申请实施例中另一种存内计算装置的结构示意图。
具体实施方式
本申请的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。
如图1和图2a所示,本申请实施例提供一种向量乘加器的静态随机存取存储器(Static Random-Access Memory,SRAM)模拟存内计算装置,包括:n个单比特输出模块10,n>1,每个单比特输出模块10包括乘法单元M,乘法单元M包括存储器20和乘法电路30,存储器20即为SRAM,乘法电路30包括第一乘法输入端MIN1、第二乘法输入端MIN2和乘法输出端MOUT,第二乘法输入端MIN2电连接于存储器20的输出端,乘法电路30用于对第一乘法输入端MIN1和第二乘法输入端MIN2的数值进行乘法计算并通过乘法输出端MOUT输出结果至单比特输出模块10的输出端;第一加法器A1,第一加法器A1具体可以包括模拟加法电路,第一加法器A1包括n个第一加法输入端,例如n=4,第一加法器A1包括4个第一加法输入端Ain1、Ain2、Ain3、Ain4,第a个第一加法输入端Aina电连接于第a个单比特输出模块的输出端out,a的取值为1、2、...、n,例如存内计算装置包括4个单比特输出模块10,4个单比特输出模块10的输出端out分别电连接于4个第一加法输入端;移位累加器40,用于周期性对第一加法器A1的输出结果进行单比特移位累加计算,也就是说,移位累加器40在每个周期中对第一加法器A1的输出结果和待累加值进行加法计算并将计算结果进行单比特移位后作为下个周期的待累加值。
具体地,存内计算装置用于实现二进制乘加运算。存储器20用于存储1比特的二进制数值,例如1或0,高电平代表1,低电平代表0,存储器20中存储的数值可以通过存储器20的输出端输出至乘法电路30的第二乘法输入端MIN2。每个单比特输出模块10的4个存储器20用于存储一个二进制数值,这个二进制数值可以称为权重W,权重W是二进制乘加运算中的一个输入值,4个单比特输出模块10的4个存储器20即存储了4个权重W。乘法电路30的第一乘法输入端MIN1用于获取二进制乘加运算中的另一个输入值X。移位累加器40用于输出二进制乘加运算的结果y,图中的Y即为二进制乘加运算的结果y的输出端。
在本申请实施例中,通过初始输入端输入的输入值为2位或2位以上的二进制数值,下面对具体乘加计算过程进行说明。
假设存内计算装置还包括4个初始输入端X1、X2、X3和X4,分别电连接于4个单比特输出模块10的4个第一乘法输入端MIN1。假设需要计算
Figure BDA0003876559920000041
其中,xi<2:0>为一个3位二进制数,xi<0>为其中的最低有效位(Least Significant Bit,LSB),权值为20,即为1;xi<1>为LSB+1位,权值为21,即为2;xi<2>为最高有效位(Most Significant Bit,MSB),权值为22,即为4。另外根据二进制乘法的原理,据此将所要计算的公式展开
Figure BDA0003876559920000042
Figure BDA0003876559920000043
例如,X1用于输入x1<2:0>,X2用于输入x2<2:0>,X3用于输入x3<2:0>。X1所对应连接的乘法单元M中存储器20所存储的权重为w1,X2所对应连接的乘法单元M中存储器20所存储的权重为w2,X3所对应连接的乘法单元M中存储器20所存储的权重为w3,X4所对应连接的乘法单元M中存储器20所存储的权重为w4。如表1所示。
表1
第一周期 第二周期 第三周期
X<sub>1</sub> x<sub>1</sub>&lt;2&gt; x<sub>1</sub>&lt;1&gt; x<sub>1</sub>&lt;0&gt;
X<sub>2</sub> x<sub>2</sub>&lt;2&gt; x<sub>2</sub>&lt;1&gt; x<sub>2</sub>&lt;0&gt;
X<sub>3</sub> x<sub>3</sub>&lt;2&gt; x<sub>3</sub>&lt;1&gt; x<sub>3</sub>&lt;0&gt;
X<sub>4</sub> x<sub>4</sub>&lt;2&gt; x<sub>4</sub>&lt;1&gt; x<sub>4</sub>&lt;0&gt;
Ain<sub>1</sub> x<sub>1</sub>&lt;2&gt;×w<sub>1</sub> x<sub>1</sub>&lt;1&gt;×w<sub>1</sub> x<sub>1</sub>&lt;0&gt;×w<sub>1</sub>
Ain<sub>2</sub> x<sub>2</sub>&lt;2&gt;×w<sub>2</sub> x<sub>2</sub>&lt;1&gt;×w<sub>2</sub> x<sub>2</sub>&lt;0&gt;×w<sub>2</sub>
Ain<sub>3</sub> x<sub>3</sub>&lt;2&gt;×w<sub>3</sub> x<sub>3</sub>&lt;1&gt;×w<sub>3</sub> x<sub>3</sub>&lt;0&gt;×w<sub>3</sub>
Ain<sub>4</sub> x<sub>4</sub>&lt;2&gt;×w<sub>4</sub> x<sub>4</sub>&lt;1&gt;×w<sub>4</sub> x<sub>4</sub>&lt;0&gt;×w<sub>4</sub>
表1示意了图1中存内计算装置工作过程中各端的信号,在第一周期,初始输入端X1、X2、X3和X4分别输入一个比特位x1<2>、x2<2>、x3<2>、x4<2>,以第1个单比特输出模块10为例进行说明,其中乘法电路30对通过第一乘法输入端MIN1获取的x1<2>和通过第二乘法输入端MIN2获取的w1进行乘法计算,得到x1<2>×w1并输出至Ain1,类似的每个单比特输出模块10均进行乘法计算并输出对应的数值至第一加法器A1,第一加法器A1将从4个第一加法输入端得到的数值进行加法计算,得到
Figure BDA0003876559920000051
并输出至移位累加器40,此时由于没有待累加值,因此移位累加器40将
Figure BDA0003876559920000052
进行单比特移位操作变为
Figure BDA0003876559920000053
并作为下个周期的待累加值;在第二周期,初始输入端输入第二个比特位xi<1>,以第1个单比特输出模块10为例进行说明,其中乘法电路30对通过第一乘法输入端MIN1获取的x1<1>和通过第二乘法输入端MIN2获取的w1进行乘法计算,得到x1<1>×w1并输出至Ain1,类似的每个单比特输出模块10均进行乘法计算并输出对应的数值至第一加法器A1,第一加法器A1将从4个第一加法输入端得到的数值进行加法计算,得到
Figure BDA0003876559920000054
并输出至移位累加器40,移位累加器40将在第一周期得到的待累加值
Figure BDA0003876559920000055
与第一加法器A1在第二周期输出的
Figure BDA0003876559920000056
进行加法计算,得到
Figure BDA0003876559920000057
Figure BDA0003876559920000058
并将
Figure BDA0003876559920000059
进行单比特移位操作,得到
Figure BDA00038765599200000510
作为下个周期的待累加值;在第三周期,初始输入端输入第三个比特位xi<0>,以第1个单比特输出模块10为例进行说明,其中乘法电路30对通过第一乘法输入端MIN1获取的x1<0>和通过第二乘法输入端MIN2获取的w1进行乘法计算,得到x1<0>×w1并输出至Ain1,类似的每个单比特输出模块10均进行乘法计算并输出对应的数值至第一加法器A1,第一加法器A1将从4个第一加法输入端得到的数值进行加法计算,得到
Figure BDA00038765599200000511
并输出至移位累加器40,移位累加器40将在第二周期得到的待累加值
Figure BDA00038765599200000512
与第一加法器A1在第三周期输出的
Figure BDA00038765599200000513
进行加法计算,得到
Figure BDA00038765599200000514
Figure BDA00038765599200000515
即实现了
Figure BDA00038765599200000516
的乘加计算。
本申请实施例中的存内计算装置,通过单比特输出模块中乘法电路和存储器的配合实现一个比特的乘法计算,通过第一加法器获取来自于不同单比特输出模块的数值进行加法计算,移位累加器周期性对第一加法器的输出结果进行单比特移位累加计算,通过这种方式,可以基于较为简单的电路结构实现多位二进制数值和多个权重之间的乘加计算,即简化了存内计算装置的电路结构。
在一种可能的实施方式中,如图3所示,第一加法器A1包括模拟加法电路和模数转换器(Analog-to-Digital Converter,ADC);模拟加法电路包括n个电容,第a个电容的第一端为第a个第一加法输入端,n个电容的第二端连接于模数转换器ADC的输入端,模数转换器ADC的输出端作为第一加法器A1的输出端。例如,模拟加法电路包括C1、C2、C3、C4这四个电容,通过电荷的方式即可以实现单比特的加法计算,这种计算方法利用电容来实现,相比于数字加法器,电容更加节省空间,不过需要增加ADC来将加法计算的结果进行模数转换,以便于后续基于数字的加法计算结果继续进行移位累加。
在一种可能的实施方式中,如图2a所示,乘法电路30包括:第一晶体管m1,其第一端电连接于乘法输出端MOUT,其控制端电连接于第一乘法输入端MIN1;第二晶体管m2,其第一端电连接于第一晶体管m1的第二端,其第二端电连接于低电平输出端V1,其控制端电连接于第二乘法输入端MIN2;第一晶体管m1和第二晶体管m2为n型晶体管。
具体地,第一晶体管m1和第二晶体管m2组成的乘法电路30实际是一个与非门,当第一晶体管m1和第二晶体管m2中的任意一者截止时,乘法输出端MOUT均保持高电平,即输出1,在本申请实施例中,高电平代表1,低电平代表0,低电平输出端V1用于输出代表0的低电平;只有当第一晶体管m1和第二晶体管m2均导通时,乘法输出端MOUT会被低电平输出端V1拉低,从而变为低电平,即输出0。第一晶体管m1和第二晶体管m2均为n型晶体管,即在高电平的控制下会导通,在低电平的控制下会截止。如表2所示。
表2
MIN1 MIN2 MOUT
1 1 0
1 0 1
0 1 1
0 0 1
表2示意了图2a中乘法电路30各端在不同状态下对应的数值,可见,乘法输出端MOUT输出的值实际上是第一乘法输入端MIN1和第二乘法输入端MIN2的数值乘法结果的取反值,取反值可以在后续电路中通过取反恢复,例如可以在第一加法器A1处取反恢复。所以说,可以通过由第一晶体管m1和第二晶体管m2组成的乘法电路30来实现乘法运算的功能。需要说明的是,图2a中的乘法电路30结构仅为举例,本申请实施例对于乘法电路的具体结构不做限定,只要能够实现单比特二进制数值的乘法计算即可。
在一种可能的实施方式中,如图2a所示,存储器20包括:第三晶体管m3,其第一端电连接于高电平输出端V2,高电平输出端V2用于输出代表1的高电平;第四晶体管m4,其第一端电连接于第三晶体管m3的第二端,其第二端电连接于低电平输出端V1,其控制端电连接于第三晶体管m3的控制端;第五晶体管m5,其第一端电连接于高电平输出端V2,其第二端为存储器20的输出端,其控制端电连接于第三晶体管m3的第二端,即第五晶体管m5的第二端电连接于乘法电路30的第二乘法输入端MIN2;第六晶体管m6,其第一端电连接于第五晶体管m5的第二端,其第二端电连接于低电平输出端V1,其控制端电连接于第五晶体管m5的控制端,第六晶体管m6的控制端电连接于节点Q;第七晶体管m7,其第一端电连接于写入位线(Write Bit Line,WBL),其第二端电连接于第三晶体管m3的第二端,其控制端电连接于写入字线(Write Word Line,WWL);第八晶体管m8,其第一端电连接于反向写入位线WBLB,其第二端电连接于第五晶体管m5的第二端,其控制端电连接于写入字线WWL,反向写入位线WBLB与写入位线WBL具有相反的信号;第三晶体管m3和第五晶体管m5为p型晶体管,第四晶体管m4、第六晶体管m6、第七晶体管m7和第八晶体管m8为n型晶体管。
具体地,图2a所示的存储器20是一个静态随机存取存储器(Static RandomAccess Memory,SRAM)。但存储器20写入输入数据时,写入字线WWL为高电平,控制第七晶体管m7和第八晶体管m8导通,写入位线WBL上的数据通过第七晶体管m7传输至节点Q,实现了数据写入。另外,第一乘法输入端MIN1也可以称为读取字线(Read Word Line,RWL),乘法输出端MOUT也可以称为读取位线(Read Bit Line,RBL)。需要说明的是,图2a中所示的存储器20电路结构仅为举例,本申请实施例对于存储器20的具体结构不做限定,只要能够实现存储功能即可。
在一种可能的实施方式中,如图2a所示,存内计算装置还包括:与第一加法器对应的n个预充电晶体管m0,第一加法器A1的第a个第一加法输入端Aina电连接于第a个预充电晶体管m0的第一端,预充电晶体管m0的第二端电连接于高电平输出端V2。在乘法电路30每次进行乘法计算之前,控制预充电晶体管m0导通,以实现通过预充电晶体管m0向乘法输出端MOUT充入高电平的作用。然后控制预充电晶体管m0截止,此时乘法电路30可以进行乘法计算,如果第一晶体管m1和第二晶体管m2中的至少一者截止,则乘法输出端MOUT输出之前预充的高电平,即输出1;如果第一晶体管m1和第二晶体管m2均导通,则乘法输出端MOUT被低电平输出端V1拉低,变为低电平,即输出0。
在一种可能的实施方式中,如图2b和图4a所示,每个单比特输出模块10包括多路选通电路11和m个乘法单元M,m>1,在每个单比特输出模块10中,每个乘法输出端MOUT通过多路选通电路11电连接于单比特输出模块10的输出端out。例如,在每个单比特输出模块10中,多路选通电路11包括与每个乘法单元M对应的选通开关,选通开关串联于乘法单元M的第二乘法输入端MIN2和单比特输出模块10的输出端out之间。
在一种可能的实施方式中,如图2b和图4a所示,对于同一个单比特输出模块10,m个乘法单元M的第一乘法输入端MIN1电连接于同一个初始输入端。
在一种可能的实施方式中,每个多路选通电路11包括m个选通开关S,例如S0、S1、S2、...、S7,在每个单比特输出模块10中,第j个选通开关S串联于第j个乘法单元M的乘法输出端MOUT与单比特输出模块10的输出端out之间,j的取值为0、1、2、...、m-1,也就是说,每个乘法单元M的乘法输出端MOUT与单比特输出模块10的输出端out之间均串联有一个选通开关S;存内计算装置工作于m个周期T,每个周期T包括q个子周期t;在第j个周期Tj,每个多路选通电路11中第q-1-j个选通开关Sq-1-j导通;在每个周期T的第k个子周期tk,初始输入端输入第q-1-k位数值,k的取值为0、1、2、...、q-1。
具体地,如图2b和图4a所示,例如n=8,m=8,q=8。n表示单比特输出模块10的数量,即存内计算装置包括8个单比特输出模块10;m表示单比特输出模块10中乘法单元M的数量,或者说单比特输出模块10中选通开关S的数量,每个单比特输出模块10包括8个乘法单元M,每个乘法单元M对应一个选通开关S;q表示每个周期T中子周期t的数量。对于同一个单比特输出模块10,其中的8个乘法单元M中的第一乘法输入端MIN1电连接于同一个初始输入端,即每个单比特输出模块10对应一个初始输入端,8个单比特输出模块10对应8个初始输入端,这8个初始输入端分别为X0、X1、...、Xi、...、X7,X0用于输入x0<7:0>,X1用于输入x1<7:0>,X2用于输入x2<7:0>,X3用于输入x3<7:0>,X4用于输入x4<7:0>,X5用于输入x5<7:0>,X6用于输入x6<7:0>,X7用于输入x7<7:0>,也就是说,每个初始输入端均输入一个8位二进制数。多路选通电路11包括8个选通开关,分别为S0、S1、...、S7。第一加法器A1包括8个第一加法输入端,分别为Ain0、Ain1、...、Aini、...Ain7,第一加法器A1包括模拟加法电路和ADC,模拟加法电路包括8个电容,分别为C0、C1、C2、...、Ci、...、C7,8个电容的第一端分别为8个第一加法输入端,8个电容的第二端电连接于ADC的输入端。每个单比特输出模块10的8个乘法单元M的存储器用于存储一个8位二进制数作为权重wi<7:0>,其中每个存储器用于存储8位中的一位,图4a中示意了每个乘法单元M中所存储的数值,第i个单比特输出模块10中的存储的8个权重分别为wi<0>、wi<1>、...、wi<7>。也就是说,图4a所示的存内计算装置用于计算
Figure BDA0003876559920000081
Figure BDA0003876559920000082
存内计算装置周期性工作以实现乘加的计算过程,对于
Figure BDA0003876559920000083
的计算,计算过程包括m个周期T,m=8,即包括8个周期T,分别为T0、T1、T2、...、T7,其中每个周期又包括n个子周期t,n=8,即每个周期T包括8个子周期t,分别为t0、t1、...、t7
表3a
Figure BDA0003876559920000084
Figure BDA0003876559920000091
如表2a所示,表2a示意了图4a中存内计算装置工作过程中各端的信号,对于选通开关S0~S7来说,1表示导通,0表示截止,i=0时,在第0个周期T0,第7个选通开关S7导通,其他的选通开关截止,也就是说,在周期T0,只有第7个单比特输出模块10的输出端能够输出数值至第一加法器A1,其他单比特输出模块10的输出端与第一加法器A1之间截止,k=0时,在周期T0的第0个子周期t0,初始输入端Xi输入第7位数值xi<7>,每个单比特输出模块10的乘法电路30进行乘法计算,得到xi<7>×wi<7>并输出至第一加法器A1,第一加法器A1将从8个第一加法输入端Ain0、Ain1、...、Ain7得到数值进行加法计算,得到
Figure BDA0003876559920000092
Figure BDA0003876559920000093
Figure BDA0003876559920000094
并输出至移位累加器40,此时由于没有待累加值,因此移位累加器40将
Figure BDA0003876559920000095
进行单比特移位操作变为
Figure BDA0003876559920000096
并作为下个周期的待累加值;k=1时,在周期T0的第1个子周期t1,初始输入端Xi输入第6位数值xi<6>,每个单比特输出模块10的乘法电路30进行乘法计算,得到xi<6>×wi<7>并输出至第一加法器A1,第一加法器A1将从8个第一加法输入端Ain0、Ain1、...、Ain7得到数值进行加法计算,得到
Figure BDA0003876559920000097
Figure BDA0003876559920000098
Figure BDA0003876559920000099
并输出至移位累加器40,移位累加器40将在上一子周期得到的待累加值
Figure BDA00038765599200000910
与本子周期第一加法器A1输出的数值
Figure BDA00038765599200000911
进行加法计算,得到
Figure BDA00038765599200000912
并将
Figure BDA00038765599200000913
Figure BDA00038765599200000914
进行单比特移位操作,得到
Figure BDA00038765599200000915
作为下个子周期的待累加值;依次类推,k的值逐渐增加,直到在周期T0的的第7个子周期t7,初始输入端Xi输入第0位数值xi<0>,每个单比特输出模块10的乘法电路30进行乘法计算,得到xi<0>×wi<7>并输出至第一加法器A1,第一加法器A1将从8个第一加法输入端Ain0、Ain1、...、Ain7得到数值进行加法计算,得到
Figure BDA00038765599200000916
Figure BDA00038765599200000917
Figure BDA00038765599200000918
并输出至移位累加器40,移位累加器40将在上一子周期得到的待累加值
Figure BDA00038765599200000919
Figure BDA00038765599200000920
与本子周期第一加法器A1输出的数值
Figure BDA00038765599200000921
进行加法计算,得到
Figure BDA00038765599200000922
Figure BDA00038765599200000923
下一个子周期为新的周期T1,在周期T0,完成了与wi<7>相关的读取和乘加计算,可以将
Figure BDA00038765599200000924
暂存,作为与wi<7>对应的乘加计算值;在第1个周期T1,第6个选通开关S7导通,其他的选通开关截止,也就是说,在第1个周期T1,只有第6个单比特输出模块10的输出端能够输出数值至第一加法器A1,其他单比特输出模块10的输出端与第一加法器A1之间截止,在周期T1的第0个子周期t0,初始输入端Xi输入第7位数值xi<7>,每个单比特输出模块10的乘法电路30进行乘法计算,得到xi<7>×wi<6>并输出至第一加法器A1,第一加法器A1将从8个第一加法输入端Ain0、Ain1、...、Ain7得到数值进行加法计算,得到
Figure BDA0003876559920000101
Figure BDA0003876559920000102
并输出至移位累加器40,由于是新的周期移位累加器40没有待累加值,因此直接将
Figure BDA0003876559920000103
进行单比特移位操作,得到
Figure BDA0003876559920000104
作为下一个子周期的待累加值;k=1时,在周期T1的第1个子周期t1,初始输入端Xi输入第6位数值xi<6>,每个单比特输出模块10的乘法电路30进行乘法计算,得到xi<6>×wi<6>并输出至第一加法器A1,第一加法器A1将从8个第一加法输入端Ain0、Ain1、...、Ain7得到数值进行加法计算,得到
Figure BDA0003876559920000105
Figure BDA0003876559920000106
Figure BDA0003876559920000107
并输出至移位累加器40,移位累加器40将在上一子周期得到的待累加值
Figure BDA0003876559920000108
与本子周期第一加法器A1输出的数值
Figure BDA0003876559920000109
进行加法计算,得到
Figure BDA00038765599200001010
并进行单比特移位操作,得到
Figure BDA00038765599200001011
作为下一个子周期的待累加值;依次类推,k的值逐渐增加,直到在周期T1的第7个子周期t7,移位累加器40进行加法计算得到
Figure BDA00038765599200001012
下一个子周期为新的周期T2,在周期T1,完成了与wi<6>相关的读取和乘加计算,可以将
Figure BDA00038765599200001013
Figure BDA00038765599200001014
暂存,作为与wi<6>对应的乘加计算值;依次类推,在周期T2,第5个选通开关S5导通,其他的选通开关截止,经过周期T2的t0至t7子周期,移位累加器40得到与wi<5>对应的乘加计算值
Figure BDA00038765599200001015
Figure BDA00038765599200001016
依次类推,直到T7时段,得到与wi<0>对应的乘加计算值
Figure BDA00038765599200001017
也就是说,m个时段与m个乘法单元M一一对应,由于每个单比特输出模块10中的m个乘法单元M的存储器分别存储权重wi<7:0>的8个比特位,在每个周期,得到与权重中一个比特位对应的乘加计算值,最后,将在8个周期得到的8个乘加计算值基于对应的权值相加,例如,将与wi<7>对应的乘加计算值×27以实现移动7比特的移位,将与wi<6>对应的乘加计算值×26以实现移动6比特的移位,将与wi<5>对应的乘加计算值×25以实现移动5比特的移位,将与wi<4>对应的乘加计算值×24以实现移动4比特的移位,将与wi<3>对应的乘加计算值×23以实现移动3比特的移位,将与wi<2>对应的乘加计算值×22以实现移动2比特的移位,将与wi<1>对应的乘加计算值×21以实现移动1比特的移位,wi<0>对应的乘加计算值无需移位,然后将这8个乘加计算值相加,既可以得到
Figure BDA00038765599200001018
Figure BDA0003876559920000111
可见,图4a所述的存内计算装置可以通过较为简单的电路结构实现复杂的乘加运算。其中,通过利用多路选通电路11,可以实现基于多位权重的乘加计算,且无需较多数量的加法器,从而实现了电路结构的简化。
在一种可能的实施方式中,图4a可以结合图4b的结构实现上述计算过程,其中,每个初始输入端分别通过q个输入选通开关电连接于q位数值,装置包括q个输入选通开关组,S01、S02、...、S07,第i个初始输入端Xi对应电连接第i个输入选通开关组S0i,在每个输入选通开关组中,第j个输入选通开关Sij串联于第q-1-j位数值wi<q-1-j>端之间,在每个周期的第j个子周期tj,第j个输入选通开关Sij导通,其他输入选通开关截止,以实现初始输入端Xi输入的切换。
在一种可能的实施方式中,每个多路选通电路11包括m个选通开关S,例如S0、S1、S2、...、S7,在每个单比特输出模块10中,第j个选通开关S串联于第j个乘法单元M的乘法输出端MOUT与单比特输出模块10的输出端out之间,j的取值为0、1、2、...、m-1,也就是说,每个乘法单元M的乘法输出端MOUT与单比特输出模块10的输出端out之间均串联有一个选通开关S;存内计算装置工作于m个周期T,每个周期T包括q个子周期t;在第j个周期Tj,初始输入端输入第q-1-k位数值,k的取值为0、1、2、...、q-1;在每个周期T的第k个子周期tk,每个多路选通电路11中第q-1-j个选通开关Sq-1-j导通。
具体地,仍以图2b和图4a所示结构为例说明,例如n=8,m=8,q=8。n表示单比特输出模块10的数量,即存内计算装置包括8个单比特输出模块10;m表示单比特输出模块10中乘法单元M的数量,或者说单比特输出模块10中选通开关S的数量,每个单比特输出模块10包括8个乘法单元M,每个乘法单元M对应一个选通开关S;q表示每个周期T中子周期t的数量。对于同一个单比特输出模块10,其中的8个乘法单元M中的第一乘法输入端MIN1电连接于同一个初始输入端,即每个单比特输出模块10对应一个初始输入端,8个单比特输出模块10对应8个初始输入端,这8个初始输入端分别为X0、X1、...、Xi、...、X7,X0用于输入x0<7:0>,X1用于输入x1<7:0>,X2用于输入x2<7:0>,X3用于输入x3<7:0>,X4用于输入x4<7:0>,X5用于输入x5<7:0>,X6用于输入x6<7:0>,X7用于输入x7<7:0>,也就是说,每个初始输入端均输入一个8位二进制数。多路选通电路11包括8个选通开关,分别为S0、S1、...、S7。第一加法器A1包括8个第一加法输入端,分别为Ain0、Ain1、...、Aini、...Ain7。每个单比特输出模块10的8个乘法单元M的存储器用于存储一个8位二进制数作为权重wi<7:0>,其中每个存储器用于存储8位中的一位,图4a中示意了每个乘法单元M中所存储的数值,第i个单比特输出模块10中的存储的8个权重分别为wi<0>、wi<1>、...、wi<7>。也就是说,图4a所示的存内计算装置用于计算
Figure BDA0003876559920000112
Figure BDA0003876559920000113
存内计算装置周期性工作以实现乘加的计算过程,对于
Figure BDA0003876559920000121
的计算,计算过程包括m个周期T,m=8,即包括8个周期T,分别为T0、T1、T2、...、T7,其中每个周期又包括n个子周期t,n=8,即每个周期T包括8个子周期t,分别为t0、t1、...、t7
表3b
Figure BDA0003876559920000122
如表3b所示,表3b示意了图4a中存内计算装置工作过程中各端的信号,对于选通开关S0~S7来说,1表示导通,0表示截止,j=0时,在第0个周期T0,初始输入端Xi输入第7位数值xi<7>,k=0时,在周期T0的第0个子周期t0,第7个选通开关S7导通,其他的选通开关截止,即只有第7个单比特输出模块10的输出端能够输出数值至第一加法器A1,其他单比特输出模块10的输出端与第一加法器A1之间截止,每个单比特输出模块10的乘法电路30进行乘法计算,得到xi<7>×wi<7>并输出至第一加法器A1,第一加法器A1将从8个第一加法输入端Ain0、Ain1、...、Ain7得到数值进行加法计算,得到
Figure BDA0003876559920000123
Figure BDA0003876559920000124
并输出至移位累加器40,此时由于没有待累加值,因此移位累加器40将
Figure BDA0003876559920000125
Figure BDA0003876559920000126
进行单比特移位操作变为
Figure BDA0003876559920000127
并作为下个子周期的待累加值;k=1时,在周期T0的第1个子周期t1,初始输入端Xi仍输入第7位数值xi<7>,第6个选通开关S6导通,其他的选通开关截止,每个单比特输出模块10的乘法电路30进行乘法计算,得到xi<7>×wi<6>并输出至第一加法器A1,第一加法器A1将从8个第一加法输入端Ain0、Ain1、...、Ain7得到数值进行加法计算,得到
Figure BDA0003876559920000128
Figure BDA0003876559920000129
Figure BDA0003876559920000131
并输出至移位累加器40,移位累加器40将在上一子周期得到的待累加值
Figure BDA0003876559920000132
与本子周期第一加法器A1输出的数值
Figure BDA0003876559920000133
进行加法计算,得到
Figure BDA0003876559920000134
并将
Figure BDA0003876559920000135
进行单比特移位操作,得到
Figure BDA0003876559920000136
Figure BDA0003876559920000137
作为下个子周期的待累加值;依次类推,k的值逐渐增加,直到在周期T0的第7个子周期t7,第0个选通开关S0导通,其他的选通开关截止,每个单比特输出模块10的乘法电路30进行乘法计算,得到xi<7>×wi<0>并输出至第一加法器A1,第一加法器A1将从8个第一加法输入端Ain0、Ain1、...、Ain7得到数值进行加法计算,得到
Figure BDA0003876559920000138
Figure BDA0003876559920000139
并输出至移位累加器40,移位累加器40将在上一子周期得到的待累加值
Figure BDA00038765599200001310
Figure BDA00038765599200001311
Figure BDA00038765599200001312
与本子周期第一加法器A1输出的数值
Figure BDA00038765599200001313
进行加法计算,得到
Figure BDA00038765599200001314
Figure BDA00038765599200001315
下一个子周期为新的周期T1,在周期T0,完成了与xi<7>相关的读取和乘加计算,可以将
Figure BDA00038765599200001316
Figure BDA00038765599200001317
暂存,作为与xi<7>对应的乘加计算值;在第1个周期T1,初始输入端Xi输入第6位数值xi<6>,k=0时,在周期T1的第0个子周期t0,第7个选通开关S7导通,其他的选通开关截止,也就是说,只有第7个单比特输出模块10的输出端能够输出数值至第一加法器A1,其他单比特输出模块10的输出端与第一加法器A1之间截止,每个单比特输出模块10的乘法电路30进行乘法计算,得到xi<6>×wi<7>并输出至第一加法器A1,第一加法器A1将从8个第一加法输入端Ain0、Ain1、...、Ain7得到数值进行加法计算,得到
Figure BDA00038765599200001318
Figure BDA00038765599200001319
Figure BDA00038765599200001320
并输出至移位累加器40,由于是新的周期移位累加器40没有待累加值,因此直接将
Figure BDA00038765599200001321
进行单比特移位操作,得到
Figure BDA00038765599200001322
Figure BDA00038765599200001323
作为下一个子周期的待累加值;k=1时,在周期T1的第1个子周期t1,第6个选通开关S6导通,其他的选通开关截止,每个单比特输出模块10的乘法电路30进行乘法计算,得到xi<6>×wi<6>并输出至第一加法器A1,第一加法器A1将从8个第一加法输入端Ain0、Ain1、...、Ain7得到数值进行加法计算,得到
Figure BDA00038765599200001324
Figure BDA00038765599200001325
Figure BDA00038765599200001326
并输出至移位累加器40,移位累加器40将在上一子周期得到的待累加值
Figure BDA00038765599200001327
与本子周期第一加法器A1输出的数值
Figure BDA00038765599200001328
进行加法计算,得到
Figure BDA00038765599200001329
并进行单比特移位操作,得到
Figure BDA00038765599200001330
作为下一个子周期的待累加值;依次类推,k的值逐渐增加,直到在周期T1的第7个子周期t7,第0个选通开关S0导通,其他的选通开关截止,移位累加器40进行加法计算得到
Figure BDA00038765599200001331
下一个子周期为新的周期T2,在周期T1,完成了与xi<6>相关的读取和乘加计算,可以将
Figure BDA0003876559920000141
暂存,作为与xi<6>对应的乘加计算值;依次类推,在第2个周期T2,初始输入端Xi仍输入第5位数值xi<5>,在周期T2的t0至t7子周期,选通开关S7至S0依次导通,移位累加器40得到与wi<5>对应的乘加计算值
Figure BDA0003876559920000142
Figure BDA0003876559920000143
依次类推,直到周期T7,得到与wi<0>对应的乘加计算值
Figure BDA0003876559920000144
Figure BDA0003876559920000145
也就是说,m个周期与m个乘法单元M一一对应,由于每个单比特输出模块10中的m个乘法单元M的存储器分别存储权重wi<7:0>的8个比特位,在每个周期,得到与权重中一个比特位对应的乘加计算值,最后,将在8个周期得到的8个乘加计算值基于对应的权值相加,例如,将与xi<7>对应的乘加计算值×27以实现移动7比特的移位,将与xi<6>对应的乘加计算值×26以实现移动6比特的移位,将与xi<5>对应的乘加计算值×25以实现移动5比特的移位,将与xi<4>对应的乘加计算值×24以实现移动4比特的移位,将与xi<3>对应的乘加计算值×23以实现移动3比特的移位,将与xi<2>对应的乘加计算值×22以实现移动2比特的移位,将与xi<1>对应的乘加计算值×21以实现移动1比特的移位,xi<0>对应的乘加计算值无需移位,然后将这8个乘加计算值相加,既可以得到
Figure BDA0003876559920000146
在一种可能的实施方式中,图4a可以结合图4b的结构实现上述计算过程,其中,每个初始输入端分别通过q个输入选通开关电连接于q位数值,装置包括q个输入选通开关组,S01、S02、...、S07,第i个初始输入端Xi对应电连接第i个输入选通开关组S0i,在每个输入选通开关组中,第k个输入选通开关Sik串联于第q-1-k位数值wi<q-1-k>端之间,在第k个周期tk,第k个输入选通开关Sik导通,其他输入选通开关截止,以实现初始输入端Xi输入的切换。
在一种可能的实施方式中,如图2b和图5所示,每个单比特输出模块10包括p个第一多路选通电路111和p个乘法单元组13,每个乘法单元组13包括m个乘法单元M,p>1,m>1,在每个单比特输出模块10中,第b个乘法单元组13中的每个乘法输出端MOUT通过第b个第一多路选通电路111电连接于单比特输出模块10的输出端out,b的取值为1、2、...、p;每个单比特输出模块10还包括p个初始输入节点,在第b个乘法单元组13中,m个乘法单元M的第一乘法输入端MIN1电连接于第b个初始输入节点;每个单比特输出模块10还包括第二多路选通电路112,第二多路选通电路112包括一个初始输入端和p个选通端,第b个选通端电连接于第b个初始输入节点;每个初始输入节点通过开关器件电连接于低电平输出端V1。
具体地,例如,p=2,m=8,n=4,每个单比特输出模块10包括两个第一多路选通电路111和两个乘法单元组13,每个乘法单元组13包括8个乘法单元M,在每个单比特输出模块10中,第1个乘法单元组13中的每个乘法输出端MOUT通过第1个第一多路选通电路111电连接于单比特输出模块10的输出端out,第2个乘法单元组13中的每个乘法输出端MOUT通过第2个第一多路选通电路111电连接于单比特输出模块10的输出端out;在第1个乘法单元组13中,8个乘法单元M的第一乘法输入端MIN1电连接于第1个初始输入节点INA,在第2个乘法单元组13中,8个乘法单元M的第一乘法输入端MIN1电连接于第2个初始输入节点INB;第二多路选通电路112包括第1个选通开关SA和第2个选通开关SB,第1个选通开关SA和第2个选通开关SB的第一端均电连接于该初始输入端,第1个选通开关SA的第二端电连接于第1个初始输入节点INA,第2个选通开关SB的第二端电连接于第2个初始输入节点INB。第1个初始输入节点INA通过第1个开关器件Sa电连接于第一电压端V1,第2个初始输入节点INB通过第2个开关器件Sb电连接于第一电压端V1。例如共有4个初始输入端X0、X1、X2和X3,其中,第1个第二多路选通电路112对应初始输入端X0,第2个第二多路选通电路112对应初始输入端X1,第3个第二多路选通电路112对应初始输入端X2,第4个第二多路选通电路112对应初始输入端X3
类似的,图5的存内计算装置的工作过程与图4a的存内计算装置的工作过程类似,对于
Figure BDA0003876559920000151
的计算,计算过程包括p个阶段,p=2,即包括2个阶段P1和P2,每个阶段包括m个时段,m=4,即包括4个时段,分别为T0、T1、T2、T3,其中每个时段又每个阶段包括n个周期,n=8,即包括8个周期,分别为t0、t1、...、t7。
表4
Figure BDA0003876559920000152
Figure BDA0003876559920000161
如表4所示,表4示意了图5中存内计算装置工作过程中各端的信号,对于选通开关选通开关SA、选通开关SB、开关器件Sa和开关器件Sb来说,1表示导通,0表示截止,在P1阶段,选通开关SA导通,选通开关SB截止,开关器件Sa截止,开关器件Sb导通,初始输入端X0、X1、X2、X3的输入信号均输入至初始输入节点INA,而初始输入节点INB的信号会被拉低,低电平即为0,不会对后续的计算造成影响,也就是说,在P1阶段,仅通过每个单比特输出模块10中的第1个乘法单元组13进行计算;在P2阶段,选通开关SA截止,选通开关SB导通,开关器件Sa导通,开关器件Sb截止,初始输入端X0、X1、X2、X3的输入信号均输入至初始输入节点INB,而初始输入节点INA的信号会被拉低,低电平即为0,不会对后续的计算造成影响,也就是说,在P2阶段,仅通过每个单比特输出模块10中的第2个乘法单元组13进行计算。在P1阶段中T0时段的t0周期,初始输入端X0输入x0<7>,初始输入端X1输入x2<7>,初始输入端X2输入x4<7>,初始输入端X3输入x6<7>,每个单比特输出模块10的第1个乘法单元组13中的乘法电路30进行乘法计算,得到x0<7>×w0<7>、x2<7>×w2<7>、x4<7>×w4<7>、x6<7>×w6<7>并输出至第一加法器A1,第一加法器A1将从4个第一加法输入端Ain0、Ain1、Ain2、Ain3得到数值进行加法计算,得到∑i=0,2,4,6[xi<7>×wi<7>]=x0<7>×w0<7>+x2<7>×w2<7>+x4<7>×w4<7>+x6<7>×w6<7>并输出至移位累加器40,此时由于没有待累加值,因此移位累加器40将该值进行单比特移位操作变为[x0<7>×w0<7>+x2<7>×w2<7>+x4<7>×w4<7>+x6<7>×w6<7>]×21并作为下个周期的待累加值;在P1阶段中T0时段的t1周期,初始输入端X0输入x0<6>,X1输入x2<6>,X2输入x4<6>,X3输入x6<6>,每个单比特输出模块10的乘法电路30进行乘法计算,得到x0<6>×w0<7>、x2<6>×w2<7>、x4<6>×w4<7>、x6<6>×w6<7>并输出至第一加法器A1,第一加法器A1将从4个第一加法输入端Ain0、Ain1、Ain2、Ain3得到数值进行加法计算,得到∑i=0,2,4,6[xi<6>×wi<7>]=x0<6>×w0<7>+x2<6>×w2<7>+x4<6>×w4<7>+x6<6>×w6<7>并输出至移位累加器40,移位累加器40将在上一周期得到的待累加值与本周期第一加法器A1输出的数值进行加法计算,得到∑i=0,2,4,6[xi<7:6>×wi<7>]=[x0<7>×w0<7>+x2<7>×w2<7>+x4<7>×w4<7>+x6<7>×w6<7>×21+x0<6>×w0<7>+x2<6>×w2<7>+x4<6>×w4<7>+x6<6>×w6<7>],并将该数值进行单比特移位操作,得到的数值作为下个周期的待累加值;依次类推,直到在T0时段的第7个周期t7,移位累加器40得到∑i=0,2,4,6[xi<7>×wi<7>×27+xi<6>×wi<7>×26+xi<5>×wi<7>×25+…+xi<0>×wi<7>],下一个周期为新的时段T1时段,在T0时段,完成了与wi=0,2,4,6<7>相关的读取和乘加计算,可以将该数值暂存,作为与wi=0,2,4,6<7>对应的乘加计算值;在P1阶段的T1时段,第6个选通开关S7导通,其他的选通开关截止,也就是说,只有第6个单比特输出模块10的输出端能够输出数值至第一加法器A1,其他单比特输出模块10的输出端与第一加法器A1之间截止,经过P1阶段的T1时段,移位累加器40得到∑i=0,2,4,6[xi<7>×wi<6>×27+xi<6>×wi<6>×26+xi<5>×wi<6>×25+…+xi<0>×wi<6>],下一个周期为新的时段T2时段,在T1时段,完成了与wi=0,2,4,6<6>相关的读取和乘加计算,可以将该数值暂存,作为与wi=0,2,4,6<6>对应的乘加计算值;在P1阶段的T2时段,第5个选通开关S5导通,其他的选通开关截止,经过P1阶段的T2时段,移位累加器40得到与wi=0,2,4,6<5>对应的乘加计算值∑i=0,2,4,6[xi<7>×wi<5>×27+xi<6>×wi<5>×26+xi<5>×wi<5>×25+…+xi<0>×wi<5>];依次类推,直到P1阶段的T0~T7时段完成,得到8个乘加计算值,分别对应wi=0,2,4,6<7:0>的8个比特位,然后,将在8个时段得到的8个乘加计算值基于对应的权值相加,例如,将与wi=0,2,4,6<7>对应的乘加计算值×27以实现移动7比特的移位,将与wi=0,2,4,6<6>对应的乘加计算值×26以实现移动6比特的移位,将与wi=0,2,4,6<5>对应的乘加计算值×25以实现移动5比特的移位,将与wi=0,2,4,6<4>对应的乘加计算值×24以实现移动4比特的移位,将与wi=0,2,4,6<3>对应的乘加计算值×23以实现移动3比特的移位,将与wi=0,2,4,6<2>对应的乘加计算值×22以实现移动2比特的移位,将与wi=0,2,4,6<1>对应的乘加计算值×21以实现移动1比特的移位,wi=0,2,4,6<0>对应的乘加计算值无需移位,然后将这8个乘加计算值相加,既可以得到
Figure BDA0003876559920000171
该数值是P1阶段的乘加计算值,之后会在P2阶段进行乘加计算,在P2阶段中T0时段的t0周期,初始输入端X0输入x1<7>,初始输入端X1输入x3<7>,初始输入端X2输入x5<7>,初始输入端X3输入x7<7>,每个单比特输出模块10的第1个乘法单元组13中的乘法电路30进行乘法计算,得到x1<7>×w1<7>、x3<7>×w3<7>、x5<7>×w5<7>、x7<7>×w7<7>并输出至第一加法器A1,第一加法器A1将从4个第一加法输入端Ain0、Ain1、Ain2、Ain3得到数值进行加法计算,得到∑i=1,3,5,7[xi<7>×wi<7>]=x0<7>×w0<7>+x2<7>×w2<7>+x4<7>×w4<7>+x6<7>×w6<7>并输出至移位累加器40,此时由于没有待累加值,因此移位累加器40将该值进行单比特移位操作变为∑i=1,3,5,7[xi<7>×wi<7>]=x0<7>×w0<7>+x2<7>×w2<7>+x4<7>×w4<7>+x6<7>×w6<7>×21并作为下个周期的待累加值,然后在P2阶段中T0时段的t1周期,初始输入端X0输入x1<6>,X1输入x3<6>,X2输入x5<6>,X3输入x7<6>,依次类推,直到在T0时段的第7个周期t7,移位累加器40得到∑i=1,3,5,7[xi<7>×wi<7>×27+xi<6>×wi<7>×26+xi<5>×wi<7>×25+…+xi<0>×wi<7>],作为与wi=1,3,5,7<7>对应的乘加计算值;类似地,在P2阶段中T1时段,得到与wi=1,3,5,7<6>对应的乘加计算值∑i=1,3,5,7[xi<7>×wi<6>×27+xi<6>×wi<6>×26+xi<5>×wi<6>×25+…+xi<0>×wi<6>],依次类推,直到P1阶段的T0~T7时段完成,得到8个乘加计算值,分别对应wi=1,3,5,7<7:0>的8个比特位,然后,将在8个时段得到的8个乘加计算值基于对应的权值相加,例如,将与wi=1,3,5,7<7>对应的乘加计算值×27以实现移动7比特的移位,将与wi=1,3,5,7<6>对应的乘加计算值×26以实现移动6比特的移位,将与wi=1,3,5,7<5>对应的乘加计算值×25以实现移动5比特的移位,将与wi=1,3,5,7<4>对应的乘加计算值×24以实现移动4比特的移位,将与wi=1,3,5,7<3>对应的乘加计算值×23以实现移动3比特的移位,将与wi=1,3,5,7<2>对应的乘加计算值×22以实现移动2比特的移位,将与wi=1,3,5,7<1>对应的乘加计算值×21以实现移动1比特的移位,wi=1,3,5,7<0>对应的乘加计算值无需移位,然后将这8个乘加计算值相加,既可以得到
Figure BDA0003876559920000172
Figure BDA0003876559920000181
最后,可以将P1阶段得到的y=∑i=0,2,4,6xi<7:0>×wi<7:0>和P2阶段得到的∑i=1,3,5,7xi<7:0>×wi<7:0>相加,即可以实现
Figure BDA0003876559920000182
的乘加计算,根据图5和图4a的对比可知,两者的计算功能相同,但是图5的第一加法器A1比图4a节省了输入端的数量,从而简化了第一加法器A1的结构,用更少数量的电容实现了相同的功能。
在一种可能的实施方式中,如图2a和图6所示,存内计算装置包括:m个输出模块组100,m>1,每个输出模块组100均包括n个单比特输出模块10和第一加法器A1,第c个输出模块组100还包括移位器50,c的取值为2、3、...、m,第c个输出模块组100中移位器50用于对第一加法器A1的输出结果进行c-1比特的移位;第二加法器A2,第二加法器A2包括m个第二加法输入端,第1个输出模块组100中第一加法器A1的输出端电连接于第1个第二加法输入端,第c个输出模块组100中移位器50的输出端电连接于第c个第二加法输入端;移位累加器40具体用于,周期性对第二加法器A2的输出结果进行单比特移位累加计算。
具体地,例如n=8,m=8,存内计算装置包括8个输出模块组100,每个输出模块组100包括8个单比特输出模块10,在每个输出模块组100中,8个单比特输出模块10分别电连接于第一加法器A1的8个第一加法输入端。存内计算装置还可以包括:n个初始输入端,例如分别为X0、X1、...、Xi、...、X7,X0用于输入x0<7:0>,X1用于输入x1<7:0>,X2用于输入x2<7:0>,X3用于输入x3<7:0>,X4用于输入x4<7:0>,X5用于输入x5<7:0>,X6用于输入x6<7:0>,X7用于输入x7<7:0>,也就是说,每个初始输入端均输入一个8位二进制数;对于每个输出模块组100,第a个单比特输出模块10中第一乘法输入端MIN1电连接于第a个初始输入端。
8个输出模块组100中第i个单比特输出模块10的8个乘法单元M的存储器用于存储一个8位二进制数作为权重wi<7:0>,其中每个存储器用于存储8位中的一位,图6中示意了每个乘法单元M中所存储的数值,例如,第0个输出模块组100中的存储的权重为wi<7>,第1个输出模块组100中的存储的权重为wi<6>,依次类推,第7个输出模块组100中的存储的权重为wi<0>。也就是说,图6所示的存内计算装置用于计算
Figure BDA0003876559920000183
存内计算装置周期性工作以实现乘加的计算过程,对于
Figure BDA0003876559920000184
的计算,计算过程包括n个周期,n=8,即包括8个周期,分别为t0、t1、...、T7。
表5
Figure BDA0003876559920000185
Figure BDA0003876559920000191
如表5所示,表5示意了图6中存内计算装置中第1个输出模块组100工作过程中各端的信号,在t0周期,初始输入端Xi输入xi<7>,第1个输出模块组100中每个单比特输出模块10的乘法电路30进行乘法计算,得到xi<7>×wi<0>并输出至第一加法器A1,第一加法器A1将从8个第一加法输入端Ain0、Ain1、...、Ain7得到数值进行加法计算,得到
Figure BDA0003876559920000192
Figure BDA0003876559920000193
并输出至第1个第二加法输入端Bin0;第2个输出模块组100中每个单比特输出模块10的乘法电路30进行乘法计算,得到xi<7>×wi<1>并输出至第一加法器A1,第一加法器A1将从8个第一加法输入端Ain0、Ain1、...、Ain7得到数值进行加法计算,得到
Figure BDA0003876559920000194
Figure BDA0003876559920000195
并输出至移位器50,该移位器50对
Figure BDA0003876559920000196
进行1比特的移位得到
Figure BDA0003876559920000197
并输出至第2个第二加法输入端Bin1;依次类推,第8个输出模块组100中每个单比特输出模块10的乘法电路30进行乘法计算,得到xi<7>×wi<7>并输出至第一加法器A1,第一加法器A1将从8个第一加法输入端Ain0、Ain1、...、Ain7得到数值进行加法计算,得到
Figure BDA0003876559920000198
Figure BDA0003876559920000199
并输出至移位器50,该移位器50对
Figure BDA00038765599200001910
进行7比特的移位得到
Figure BDA00038765599200001911
并输出至第8个第二加法输入端Bin7。第二加法器A2对Bin0、Bin1、...、Bin7这8个第二加法输入端的数值进行加法计算,得到
Figure BDA00038765599200001912
Figure BDA00038765599200001913
Figure BDA00038765599200001914
并输出至移位累加器40,此时由于没有待累加值,因此移位累加器40将
Figure BDA00038765599200001915
进行单比特移位操作变为
Figure BDA00038765599200001916
并作为下个周期的待累加值;在t1周期,初始输入端Xi输入xi<6>,第1个输出模块组100中每个单比特输出模块10的乘法电路30进行乘法计算,得到xi<6>×wi<0>并输出至第一加法器A1,第一加法器A1将从8个第一加法输入端Ain0、Ain1、...、Ain7得到数值进行加法计算,得到
Figure BDA00038765599200001917
Figure BDA00038765599200001918
Figure BDA0003876559920000201
并输出至第1个第二加法输入端Bin0;第2个输出模块组100中每个单比特输出模块10的乘法电路30进行乘法计算,得到xi<6>×wi<1>并输出至第一加法器A1,第一加法器A1将从8个第一加法输入端Ain0、Ain1、...、Ain7得到数值进行加法计算,得到
Figure BDA0003876559920000202
Figure BDA0003876559920000203
Figure BDA0003876559920000204
并输出至移位器50,该移位器50对
Figure BDA0003876559920000205
进行1比特的移位得到
Figure BDA0003876559920000206
并输出至第2个第二加法输入端Bin1;依次类推,第8个输出模块组100中每个单比特输出模块10的乘法电路30进行乘法计算,得到xi<6>×wi<7>并输出至第一加法器A1,第一加法器A1将从8个第一加法输入端Ain0、Ain1、...、Ain7得到数值进行加法计算,得到
Figure BDA0003876559920000207
Figure BDA0003876559920000208
Figure BDA0003876559920000209
并输出至移位器50,该移位器50对
Figure BDA00038765599200002010
进行7比特的移位得到
Figure BDA00038765599200002011
并输出至第8个第二加法输入端Bin7。第二加法器A2对Bin0、Bin1、...、Bin7这8个第二加法输入端的数值进行加法计算,得到
Figure BDA00038765599200002012
Figure BDA00038765599200002013
Figure BDA00038765599200002014
并输出至移位累加器40,移位累加器40将在上一周期得到的待累加值
Figure BDA00038765599200002015
与本周期第一加法器A1输出的数值
Figure BDA00038765599200002016
进行加法计算,并将计算结果进行单比特移位后作为待累加值,依次类推,直到t7周期,第二加法器A2执行8次加法计算,最后由移位累加器40得到:
Figure BDA00038765599200002017
可见,图6所述的存内计算装置可以通过较为简单的电路结构实现复杂的乘加运算。
在一种可能的实施方式中,如图2a和图7所示,每个单比特输出模块10包括p个乘法单元M,p>1,在每个单比特输出模块10中,每个乘法单元M的乘法输出端MOUT电连接于单比特输出模块10的输出端out;存内计算装置还包括n个输入节点组,每个输入节点组包括p个初始输入节点,例如n=4,p=2,每个输入节点组包括2个初始输入节点,分别为INA和INB,对于每个输出模块组100,第a个单比特输出模块10的第b个乘法单元M的第一乘法输入端MIN1电连接于第a个输入节点组的第b个初始输入节点;存内计算装置还包括n个第二多路选通电路112,每个第二多路选通电路112包括一个初始输入端和p个选通端,第a个第二多路选通电路112的第b个选通端电连接于第a个输入节点组的第b个初始输入节点;每个初始输入节点通过开关器件电连接于低电平输出端V1。
具体地,例如,p=2,m=8,n=4,每个单比特输出模块10包括两个乘法单元M,在每个单比特输出模块10中,第1个乘法单元M中的每个乘法输出端MOUT电连接于单比特输出模块10的输出端out;对于每个输出模块组100,第1个单比特输出模块10的第1个乘法单元M的第一乘法输入端MIN1电连接于第1个输入节点组的第1个初始输入节点INA,第1个单比特输出模块10的第2个乘法单元M的第一乘法输入端MIN1电连接于第1个输入节点组的第2个初始输入节点INB,第2个单比特输出模块10的第1个乘法单元M的第一乘法输入端MIN1电连接于第2个输入节点组的第1个初始输入节点INA,第2个单比特输出模块10的第2个乘法单元M的第一乘法输入端MIN1电连接于第2个输入节点组的第2个初始输入节点INB;依次类推。第二多路选通电路112包括第1个选通开关SA和第2个选通开关SB,第1个选通开关SA和第2个选通开关SB的第一端均电连接于该初始输入端,第1个选通开关SA的第二端电连接于第1个初始输入节点INA,第2个选通开关SB的第二端电连接于第2个初始输入节点INB。第1个初始输入节点INA通过第1个开关器件Sa电连接于第一电压端V1,第2个初始输入节点INB通过第2个开关器件Sb电连接于第一电压端V1。例如共有4个初始输入端X0、X1、X2和X3,其中,第1个第二多路选通电路112对应初始输入端X0,第2个第二多路选通电路112对应初始输入端X1,第3个第二多路选通电路112对应初始13输入端X2,第4个第二多路选通电路112对应初始输入端X3
类似的,图7的存内计算装置的工作过程与图6的存内计算装置的工作过程类似,对于
Figure BDA0003876559920000211
的计算,计算过程包括p个阶段,p=2,即包括2个阶段P1和P2,每个阶段包括n个周期,n=8,即包括8个周期,分别为t0、t1、...、T7。
表6
Figure BDA0003876559920000212
Figure BDA0003876559920000221
如表6所示,表6示意了图7中存内计算装置工作过程中各端的信号,对于选通开关选通开关SA、选通开关SB、开关器件Sa和开关器件Sb来说,1表示导通,0表示截止,在P1阶段,选通开关SA导通,选通开关SB截止,开关器件Sa截止,开关器件Sb导通,初始输入端X0、X1、X2、X3的输入信号均输入至初始输入节点INA,而初始输入节点INB的信号会被拉低,低电平即为0,不会对后续的计算造成影响,也就是说,在P1阶段,仅通过每个单比特输出模块10中的第1个乘法单元M进行计算;在P2阶段,选通开关SA截止,选通开关SB导通,开关器件Sa导通,开关器件Sb截止,初始输入端X0、X1、X2、X3的输入信号均输入至初始输入节点INB,而初始输入节点INA的信号会被拉低,低电平即为0,不会对后续的计算造成影响,也就是说,在P2阶段,仅通过每个单比特输出模块10中的第2个乘法单元M进行计算。在P1阶段,8个输出模块组100分别进行乘加计算,并输出至第二加法器A2和移位累加器40进行计算,得到i=0,2,4,6对应的乘加计算值:
Figure BDA0003876559920000222
该数值是P1阶段的乘加计算值,之后会在P2阶段进行乘加计算,得到i=1,3,5,7对应的乘加计算值:
Figure BDA0003876559920000223
最后,可以将P1阶段得到的y=∑i=0,2,4,6xi<7:0>×wi<7:0>和P2阶段得到的∑i=1,3,5,7xi<7:0>×wi<7:0>相加,即可以实现
Figure BDA0003876559920000224
的乘加计算,根据图7和图6的对比可知,两者的计算功能相同,但是图7的第一加法器A1比图6节省了输入端的数量,从而简化了第一加法器A1的结构。
在一种可能的实施方式中,移位累加器还用于对移位累加计算的结果进行二进制补码计算,以实现带符号位的计算。
本申请实施例中的第一加法器和第二加法器均可以位加法树。另外,本申请实施例对于输入数值的位数以及权重的位数均不做限定。另外需要说明的是,上述实施例中仅介绍了计算一个y,实际上,在存内计算装置的应用中,可以设置多个重复结构以实现多个y的计算。上述各附图中的Y即为y的输出端。例如如图8所示,存内计算装置包括多个存内计算模块500,每个存内计算模块500均包括对应的n个单比特输出模块10、第一加法器A1和移位累加器40,每个存内计算模块500中的n个单比特输出模块10、第一加法器A1和移位累加器40的具体结构、原理和工作过程与上述实施例相同,在此不再赘述,不同的存内计算模块500之间可以共用初始输入端,不同的存内计算模块500输出不同的二进制乘法运算结果,例如一个存内计算模块500的二进制乘加运算输出端为Y1,另一个存内计算模块500的二进制乘加运算输出端为Y2。
本申请实施例还提供一种电子设备,包括上述任意实施例中的存内计算装置。该电子设备可以为手机、平板电脑、个人计算机(personal computer,PC)、个人数字助理(personal digital assistant,PDA)、智能手表、上网本、可穿戴电子设备、增强现实技术(augmented reality,AR)设备、虚拟现实(virtual reality,VR)设备、车载设备、智能汽车、智能音响、机器人、智能眼镜、智能电视等。存内计算装置可以为电子设备中的芯片。
本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示单独存在A、同时存在A和B、单独存在B的情况。其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项”及其类似表达,是指的这些项中的任意组合,包括单项或复数项的任意组合。例如,a,b和c中的至少一项可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
以上仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (16)

1.一种向量乘加器的SRAM模拟存内计算装置,其特征在于,包括:
n个单比特输出模块,n>1,每个所述单比特输出模块包括乘法单元,所述乘法单元包括存储器和乘法电路,所述乘法电路包括第一乘法输入端、第二乘法输入端和乘法输出端,所述第二乘法输入端电连接于所述存储器的输出端,所述乘法电路用于对所述第一乘法输入端和所述第二乘法输入端的数值进行乘法计算并通过所述乘法输出端输出结果至所述单比特输出模块的输出端;
第一加法器,所述第一加法器包括模拟加法电路,所述第一加法器包括n个第一加法输入端,第a个所述第一加法输入端电连接于第a个所述单比特输出模块的输出端,a的取值为1、2、…、n;
移位累加器,用于周期性对所述第一加法器的输出结果进行单比特移位累加计算。
2.根据权利要求1所述的装置,其特征在于,
所述第一加法器包括所述模拟加法电路和模数转换器;
所述模拟加法电路包括n个电容,第a个电容的第一端为第a个所述第一加法输入端,所述n个电容的第二端连接于所述模数转换器的输入端,所述模数转换器的输出端作为所述第一加法器的输出端。
3.根据权利要求1所述的装置,其特征在于,
每个所述单比特输出模块包括多路选通电路和m个所述乘法单元,m>1,在每个所述单比特输出模块中,每个所述乘法输出端通过所述多路选通电路电连接于所述单比特输出模块的输出端。
4.根据权利要求3所述的装置,其特征在于,
对于同一个所述单比特输出模块,所述m个所述乘法单元的所述第一乘法输入端电连接于同一个初始输入端。
5.根据权利要求4所述的装置,其特征在于,
每个所述多路选通电路包括m个选通开关,在每个所述单比特输出模块中,第j个所述选通开关串联于第j个所述乘法单元的乘法输出端与所述单比特输出模块的输出端之间,j的取值为0、1、2、…、m-1;
所述存内计算装置工作于m个周期,每个所述周期包括q个子周期;
在第j个所述周期,每个所述多路选通电路中第q-1-j个所述选通开关导通;
在每个所述周期的第k个所述子周期,所述初始输入端输入第q-1-k位数值,k的取值为0、1、2、…、q-1。
6.根据权利要求4所述的装置,其特征在于,
每个所述多路选通电路包括m个选通开关,在每个所述单比特输出模块中,第j个所述选通开关串联于第j个所述乘法单元的乘法输出端与所述单比特输出模块的输出端之间,j的取值为0、1、2、…、m-1;
所述存内计算装置工作于m个周期,每个所述周期包括q个子周期;
在第j个所述周期,所述初始输入端输入第q-1-k位数值,k的取值为0、1、2、…、q-1;
在每个所述周期的第k个所述子周期,每个所述多路选通电路中第q-1-j个所述选通开关导通。
7.根据权利要求1所述的装置,其特征在于,
每个所述单比特输出模块包括p个第一多路选通电路和p个乘法单元组,每个所述乘法单元组包括m个所述乘法单元,p>1,m>1,在每个所述单比特输出模块中,第b个所述乘法单元组中的每个所述乘法输出端通过第b个所述第一多路选通电路电连接于所述单比特输出模块的输出端,b的取值为1、2、…、p;
每个所述单比特输出模块还包括p个初始输入节点,在第b个所述乘法单元组中,所述m个所述乘法单元的所述第一乘法输入端电连接于第b个所述初始输入节点;
每个所述单比特输出模块还包括第二多路选通电路,所述第二多路选通电路包括一个初始输入端和p个选通端,第b个选通端电连接于第b个所述初始输入节点;
每个所述初始输入节点通过开关器件电连接于低电平输出端。
8.根据权利要求1所述的装置,其特征在于,包括:
m个输出模块组,m>1,每个所述输出模块组均包括所述n个单比特输出模块和所述第一加法器,第c个所述输出模块组还包括移位器,c的取值为2、3、…、m,第c个所述输出模块组中所述移位器用于对所述第一加法器的输出结果进行c-1比特的移位;
第二加法器,所述第二加法器包括m个第二加法输入端,第1个所述输出模块组中所述第一加法器的输出端电连接于第1个所述第二加法输入端,第c个所述输出模块组中所述移位器的输出端电连接于第c个所述第二加法输入端;
所述移位累加器具体用于,周期性对所述第二加法器的输出结果进行单比特移位累加计算。
9.根据权利要求8所述的装置,其特征在于,还包括:
n个初始输入端;
对于每个所述输出模块组,第a个所述单比特输出模块中所述第一乘法输入端电连接于第a个所述初始输入端。
10.根据权利要求9所述的装置,其特征在于,
所述存内计算装置工作于m个周期;
在第j个所述周期,所述初始输入端输入第q-1-k位数值,k的取值为0、1、2、…、q-1;
第1个所述第一加法器用于将从所述n个第一加法输入端得到的数值进行加法计算,并输出至第1个所述第二加法输入端;
第c个所述第一加法器用于将从所述n个第一加法输入端得到的数值进行加法计算,并输出至第c个所述输出模组的移位器;
所述第c个所述输出模组的移位器对输入的数值进行单比特移位并输出至第c个所述第二加法输入端。
11.根据权利要求9所述的装置,其特征在于,
每个所述单比特输出模块包括p个所述乘法单元,p>1,在每个所述单比特输出模块中,每个所述乘法单元的所述乘法输出端电连接于所述单比特输出模块的输出端;
所述存内计算装置还包括n个输入节点组,每个所述输入节点组包括p个初始输入节点,对于每个所述输出模块组,第a个所述单比特输出模块的第b个所述乘法单元的所述第一乘法输入端电连接于第a个所述输入节点组的第b个所述初始输入节点;
所述存内计算装置还包括n个第二多路选通电路,每个所述第二多路选通电路包括一个初始输入端和p个选通端,第a个所述第二多路选通电路的第b个所述选通端电连接于第a个所述输入节点组的第b个所述初始输入节点;
每个所述初始输入节点通过开关器件电连接于低电平输出端。
12.根据权利要求1所述的装置,其特征在于,
所述移位累加器还用于对所述移位累加计算的结果进行二进制补码计算。
13.根据权利要求1至12中任意一项所述的装置,其特征在于,
所述乘法电路包括:
第一晶体管,其第一端电连接于所述乘法输出端,其控制端电连接于所述第一乘法输入端;
第二晶体管,其第一端电连接于所述第一晶体管的第二端,其第二端电连接于低电平输出端,其控制端电连接于所述第二乘法输入端;
所述第一晶体管和所述第二晶体管为n型晶体管。
14.根据权利要求13所述的装置,其特征在于,
所述存储器包括:
第三晶体管,其第一端电连接于高电平输出端;
第四晶体管,其第一端电连接于所述第三晶体管的第二端,其第二端电连接于低电平输出端,其控制端电连接于所述第三晶体管的控制端;
第五晶体管,其第一端电连接于高电平输出端,其第二端为所述存储器的输出端,其控制端电连接于所述第三晶体管的第二端;
第六晶体管,其第一端电连接于所述第五晶体管的第二端,其第二端电连接于低电平输出端,其控制端电连接于所述第五晶体管的控制端;
第七晶体管,其第一端电连接于写入位线,其第二端电连接于所述第三晶体管的第二端,其控制端电连接于写入字线;
第八晶体管,其第一端电连接于反向写入位线,其第二端电连接于所述第五晶体管的第二端,其控制端电连接于所述写入字线;
所述第三晶体管和所述第五晶体管为p型晶体管,所述第四晶体管、所述第六晶体管、所述第七晶体管和所述第八晶体管为n型晶体管。
15.根据权利要求13所述的装置,其特征在于,还包括:
与所述第一加法器对应的n个预充电晶体管,所述第一加法器的第a个所述第一加法输入端电连接于第a个所述预充电晶体管的第一端,所述预充电晶体管的第二端电连接于高电平输出端。
16.一种电子设备,其特征在于,包括如权利要求1至15中任意一项所述的存内计算装置。
CN202211217034.7A 2022-09-30 2022-09-30 向量乘加器的sram模拟存内计算装置和电子设备 Active CN115658012B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211217034.7A CN115658012B (zh) 2022-09-30 2022-09-30 向量乘加器的sram模拟存内计算装置和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211217034.7A CN115658012B (zh) 2022-09-30 2022-09-30 向量乘加器的sram模拟存内计算装置和电子设备

Publications (2)

Publication Number Publication Date
CN115658012A true CN115658012A (zh) 2023-01-31
CN115658012B CN115658012B (zh) 2023-11-28

Family

ID=84986222

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211217034.7A Active CN115658012B (zh) 2022-09-30 2022-09-30 向量乘加器的sram模拟存内计算装置和电子设备

Country Status (1)

Country Link
CN (1) CN115658012B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR1269264A (fr) * 1960-06-20 1961-08-11 Dispositif calculateur associé à une additionneuse
CN107544770A (zh) * 2017-09-15 2018-01-05 中国科学技术大学 一种数模混合输入的、电荷域的模拟乘加器电路
CN110442323A (zh) * 2019-08-09 2019-11-12 复旦大学 进行浮点数或定点数乘加运算的架构和方法
CN112636622A (zh) * 2020-12-16 2021-04-09 河海大学 中点钳位型三电平逆变器的软开关控制电路
CN112711394A (zh) * 2021-03-26 2021-04-27 南京后摩智能科技有限公司 基于数字域存内计算的电路
CN113852266A (zh) * 2021-09-18 2021-12-28 河海大学 一种单相并网逆变器的全数字软开关控制电路
CN115048075A (zh) * 2022-04-27 2022-09-13 北京大学 基于电容耦合的sram存算一体芯片

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR1269264A (fr) * 1960-06-20 1961-08-11 Dispositif calculateur associé à une additionneuse
CN107544770A (zh) * 2017-09-15 2018-01-05 中国科学技术大学 一种数模混合输入的、电荷域的模拟乘加器电路
CN110442323A (zh) * 2019-08-09 2019-11-12 复旦大学 进行浮点数或定点数乘加运算的架构和方法
CN112636622A (zh) * 2020-12-16 2021-04-09 河海大学 中点钳位型三电平逆变器的软开关控制电路
CN112711394A (zh) * 2021-03-26 2021-04-27 南京后摩智能科技有限公司 基于数字域存内计算的电路
CN113852266A (zh) * 2021-09-18 2021-12-28 河海大学 一种单相并网逆变器的全数字软开关控制电路
CN115048075A (zh) * 2022-04-27 2022-09-13 北京大学 基于电容耦合的sram存算一体芯片

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MIROSLAV VASIĆ等: ""Ultraefficient Voltage Doubler Based on a GaN Resonant Switched-Capacitor Converter"", 《 IEEE JOURNAL OF EMERGING AND SELECTED TOPICS IN POWER ELECTRONICS ( VOLUME: 7, ISSUE: 2, JUNE 2019)》, pages 1 - 4 *
叶志生等: ""准谐振脉冲激光电源的实验研究"", 《光电子.激光》, pages 496 - 499 *

Also Published As

Publication number Publication date
CN115658012B (zh) 2023-11-28

Similar Documents

Publication Publication Date Title
CN110414677B (zh) 一种适用于全连接二值化神经网络的存内计算电路
CN113314163B (zh) 存储器器件、计算器件以及计算方法
CN108182959B (zh) 基于阻变器件交叉阵列结构实现逻辑计算的方法
CN117271436B (zh) 基于sram的电流镜互补存内计算宏电路、及芯片
Zhang et al. When sorting network meets parallel bitstreams: A fault-tolerant parallel ternary neural network accelerator based on stochastic computing
US9933998B2 (en) Methods and apparatuses for performing multiplication
WO2023116923A1 (zh) 一种存算一体装置和计算方法
CN115390789A (zh) 基于磁隧道结计算单元的模拟域全精度存内计算电路及方法
CN113936717B (zh) 一种复用权重的存算一体电路
CN114937470A (zh) 基于多比特sram单元的定点全精度存内计算电路
CN115629734A (zh) 并行向量乘加器的存内计算装置和电子设备
CN115658012A (zh) 向量乘加器的sram模拟存内计算装置和电子设备
CN115658013B (zh) 向量乘加器的rom存内计算装置和电子设备
CN115658011B (zh) 向量乘加器的sram存内计算装置和电子设备
CN116543808A (zh) 一种基于sram单元的全数字域存内近似计算电路
CN113743046B (zh) 存算一体版图结构和数据拆分存算一体版图结构
CN114974337A (zh) 一种基于自旋磁随机存储器的时间域存内计算电路
CN115982092A (zh) 一种存算一体电路、芯片系统及电子设备
TW202238593A (zh) 具有三元啟動的記憶體內運算
CN113571109A (zh) 存储器电路及其操作方法
CN114168107A (zh) 一种存内精度可调的矢量矩阵乘法运算方法及运算器
Kim et al. BiMDiM: area efficient bi-directional MRAM digital in-memory computing
CN116522967A (zh) 乘法器与芯片
US20220334800A1 (en) Exact stochastic computing multiplication in memory
CN114239818B (zh) 基于tcam和lut的存内计算架构神经网络加速器

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant