CN110750232B - 一种基于sram的并行乘加装置 - Google Patents

一种基于sram的并行乘加装置 Download PDF

Info

Publication number
CN110750232B
CN110750232B CN201910988343.6A CN201910988343A CN110750232B CN 110750232 B CN110750232 B CN 110750232B CN 201910988343 A CN201910988343 A CN 201910988343A CN 110750232 B CN110750232 B CN 110750232B
Authority
CN
China
Prior art keywords
module
operand
sram
output
nmos tube
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.)
Active
Application number
CN201910988343.6A
Other languages
English (en)
Other versions
CN110750232A (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.)
University of Electronic Science and Technology of China
Original Assignee
University of Electronic Science and Technology of China
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 University of Electronic Science and Technology of China filed Critical University of Electronic Science and Technology of China
Priority to CN201910988343.6A priority Critical patent/CN110750232B/zh
Publication of CN110750232A publication Critical patent/CN110750232A/zh
Application granted granted Critical
Publication of CN110750232B publication Critical patent/CN110750232B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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

Abstract

本发明属于集成电路技术领域,具体涉及一种基于SRAM的并行乘加装置。本发明的方装置包括控制器、移位寄存器、SRAM存内计算模块和放大输出模块;所述控制器用于对移位寄存器和SRAM存内计算模块进行逻辑控制;所述移位寄存器具有移位功能,并用于接收第一操作数,移位寄存器输出第一操作数到SRAM存内计算模块;所述SRAM存内计算模块接收移位寄存器输入的第一操作数和外部输入的第二操作数,在控制器控制下对第一操作数和第二操作数进行并行乘法加运算,SRAM存内计算模块的输出接放大输出模块的输入;放大输出模块将SRAM存内计算模块的计算结果进行信号放大并做幅度调整后输出。本发明的极大地提高了并行乘加运算速度、节约了运算操作数的存储空间。

Description

一种基于SRAM的并行乘加装置
技术领域
本发明属于集成电路技术领域,具体涉及一种基于SRAM的并行乘加装置。
背景技术
冯诺依曼架构是计算机的经典架构,同时也是目前计算机以及处理器芯片的主流架构。在冯诺依曼架构中,计算/处理单元与内存是两个完全分离的单元:计算/处理单元根据指令从内存中读取数据,在计算/处理单元中完成计算/处理,并返回内存。由于计算机处理器的性能随着晶体管特征尺寸的缩小而得到显著提升,但是内存的性能(速度)的提升已经不能满足处理器的性能,造成了处理器与内存之间的性能不匹配,由此造成了传统冯诺依曼体系计算机的瓶颈。这个瓶颈在人工智能应用快速发展普及的今天尤为显著,这一代的人工智能基于的是神经网路模型,而神经网络模型的一个重要特点就是计算量大,而且计算过程涉及到的数据量也很大,使用传统冯诺依曼架构会需要频繁读写内存,限制了运算速度。使用存内计算,把计算嵌入到内存中,这样就实现了内存既是存储器也是计算器,实现了在存储/读取数据的同时完成了运算,因此大大减少了计算过程中的数据存取的耗费。DRAM(Dynamic Random Access Memory,动态随机存储器)因集成度高、成本低而成为计算机的主要内存,但是其保存数据时间短,需要动态刷新,而且速度较低;而SRAM则具有速度快,不需要动态刷新电路。随着数据信号处理技术领域的不断发展和突破,对数据的运算能力的需求也在不断增长。采用冯诺依曼架构的计算机的串行计算限制了数据的运算能力,采用并行计算能极大的提高数据的运算能力,并且相比于串行计算模型,并行计算模型更有利于对现实世界建模,如交通、医疗等。
传统并行乘加结构的高精度都是通过增大版图面积来实现的,并且在版图面积消耗严重的情况下还存在失配问题。
发明内容
为了解决现有技术的问题,本发明提供了一种基于SRAM的高精度并行乘加装置。
本发明采用的技术方案是:
一种基于SRAM的并行乘加装置,包括控制器、移位寄存器、SRAM存内计算模块和放大输出模块;所述控制器用于对移位寄存器和SRAM存内计算模块进行逻辑控制;所述移位寄存器具有移位功能,并用于接收第一操作数,移位寄存器输出第一操作数到SRAM存内计算模块;所述SRAM存内计算模块接收移位寄存器输入的第一操作数和外部输入的第二操作数,在控制器控制下对第一操作数和第二操作数进行并行乘法加运算,SRAM存内计算模块的输出接放大输出模块的输入;放大输出模块将SRAM存内计算模块的计算结果进行信号放大并做幅度调整后输出;
其特征在于,所述SRAM存内计算模块包括多个并列的计算单元,每个计算单元包括正矩阵存算模块、负矩阵存算模块和减法模块;所述正矩阵存算模块和负矩阵存算模块的输入包括第一操作数、第二操作数和控制器的控制指令,正矩阵存算模块和负矩阵存算模块的输出分别作为减法模块的两个输入,减法模块的输出为SRAM存内计算模块的输出;
所述正矩阵存算模块包括第一运算放大器和多个并列的计算子单元,每个计算子单元包括输入及反相输入模块、SRAM模块阵列和第二运算放大器,每一个输入及反相输入模块的输入为第一操作数中的一位数据,即第一操作数按位依次输入到多个计算子单元中,输入及反相输入模块用于输出输入数据的同相数据BL及输入数据的反相数据BLB;所述SRAM模块阵列包括多个SRAM,每个SARM连接输入及反相输入模块的输出,SARM还连接控制器输出的写使能信号WL和运算使能信号RWL,将所有计算子单元中的SRAM按顺序从1到n编号,对应的将写使能信号WL按顺序从WL1到WLn编号,运算使能信号RWL按顺序从RWL1到RWLn编号,编号为WL1的写使能信号和编号为RWL1的运算使能信号控制所有编号为1的SRAM,其他编号依次类推;计算子单元中的所有SARM的输出接第二运算放大器的反相输入端,第二运算放大器的正向输入端通过一个电阻后接地,第二运算放大器的输出通过一个电阻后接第一运算放大器的反相输入端,第二运算放大器的输出还通过一个反馈电阻后接其反相输入端;第一运算放大器的正向输入端通过一个电阻后接地,第一运算放大器通过一个反馈电阻后接其反相输入端,第一运算放大器的输出端为正矩阵存算模块的输出端;
所述SRAM采用8个MOSFET构建且能存储一位数据,将8个MOSFET依次编号为M1-M8,第一PMOS管M1和第一NMOS管M2组成的CMOS反相器与第二PMOS管M3和第二NMOS管M4组成的CMOS反相器首尾相连,此结构用于存储一位数据Q,即并行乘加运算的第一操作数中的一位数据;在两个反相器的输出端分别连接第三NMOS管M5的漏端、第四NMOS管M6的漏端,第三NMOS管M5的源端连接BL,第四NMOS管M6的源端连接BLB,在存储数据时将第三NMOS管M5、第四NMOS管M6通过写使能信号WL开启,第五NMOS管M7和第六NMOS管M8构成运算部分,其中第五NMOS管M7的栅极连接并行乘加运算的第一操作数Q,其漏极连接并行乘加运算的第二操作数,其源极连接第六NMOS管M8的漏极,第六NMOS管M8的栅极由运算使能信号RWL控制,并行乘加运算的结果以电流的形式流出第六NMOS管M8的源端,即第六NMOS管M8的源端为SARM的输出;
第六NMOS管M8的源端的输出为电流信号,第二运算放大器、第一运算放大器及外围电阻构建了电流转电压电路和电压相加电路,第六NMOS管M8的源端流出的电流通过电流转电压电路后再经过电压加法电路相加,相加得到的电压传输给减法模块;
所述负矩阵存算模块的结构与正矩阵存算模块相同,区别在于其存储数据的功能不同,正矩阵存算模块的存储数据为并行乘加运算的第一操作数中的正值的绝对值,负矩阵存算模块的存储数据为并行乘加运算的第一操作数中的负值的绝对值;
所述减法模块是由第三运算放大器及外围电阻而成,其功能是将正矩阵存算模块的结果减去负矩阵存算模块的结果;减法模块的输出为乘加结果,并输入到放大输出模块。
上述方案中,控制器模块控制移位寄存器模块接收从外部I/O进入的并行乘加运算的第一操作数并将其“一维化”处理后传输给SRAM存内计算模块;控制SRAM存内计算模块中的SRAM模块行的使能与关断,从而存储移位寄存器模块输出的数据;控制SRAM存内计算模块存储的数据与并行乘加运算的第二操作数进行并行乘加运算;接收放大读出模块反馈的并行乘加运算结束信号;对应的移位寄存器模块用于将外部I/O进入的第一操作数矩阵“一维化”并暂时存储并行乘加运算的第一操作数,并且能移位输出相应数据给SRAM存内计算模块;放大读出模块将SRAM存内计算模块的得到的结果进行信号放大并做幅度调整,使其输出范围与要求相符,输出并行乘加运算结束信号给控制器模块。
本发明还提供了另一种方案,即将上述方案中正矩阵存算模块第h列计算子单元(h为正整数)乘加运算得到的电流通过电流转电压电路得到电压
Figure BDA0002237421180000031
负矩阵存算模块第h列计算子单元乘加运算得到的电流和/>
Figure BDA0002237421180000032
通过减法模块后得到电压Vh,再将正存算矩阵和负存算矩阵所有对应列如此得到的电压Vh再经过电压相加电路得到并行乘加运算的结果
Figure BDA0002237421180000033
与上述方案的原理等效,区别为正、负矩阵存算模块所存数据相减操作实现顺序有所差异。
本发明的并行乘加装置的具体工作流程为:
步骤1,控制器模块发出控制指令,控制外部I/O进入的第一操作数(矩阵)传输给移位寄存器模块进行“一维化”;
步骤2,移位寄存器模块将“一维化”后的第一操作数(向量)传输给SRAM存内计算模块;
步骤3,SRAM存内计算模块的输入及反相输入模块接收对应的第一操作数的一位数;
步骤4,输入及反相输入模块输出其接收的原数据的同相数据BL及其反相数据BLB;
步骤5,控制器模块使能一条写使能信号线WL,即选中WL1-WLn中一条信号线使其处于高电势,从而使能该条信号线控制的SRAM模块行;
步骤6,步骤5使能的SRAM模块行存储所在列的BL数据,若并行乘加运算的第一操作数未全部存储于相应的SRAM模块中,则跳转至步骤1,否则执行步骤7;
步骤7,控制器模块使能一条或多条运算使能信号线RWL,即选中RWL1-RWLn中一条或多条信号线使其处于高电势,即使能RWL信号线控制的SRAM模块行;
步骤8,步骤7使能的SRAM模块行的存储数据与对应行的第二操作数即SL信号线传输的数据进行乘运算,不同SRAM模块行之间共同完成了并行乘加运算,而SL信号线上的电压的数值大小、正负代表了并行乘加运算的第二操作数的数值大小、正负;
步骤9,将SRAM存内计算模块中每列SRAM模块行并行乘加运算得到的电流转换为电压,并将每列SRAM模块列的电压相加得到和电压;
步骤10,将正矩阵存算模块与负矩阵存算模块得到的结果传输给减法模块,减法模块的功能是正矩阵存算模块的结果减去负矩阵存算模块的结果,从而实现了并行乘加运算的第一操作数包含正值和负值;
步骤11,将减法模块得到的结果传输给放大读出模块,放大读出模块将该结果进行信号放大并做幅度调整,使其输出范围与要求相符,从而得到最终的并行乘加运算结果。若并行乘加运算还未结束,则跳转至步骤1,否则结束。
本发明的有益效果在于:
相比于传统的向量-矩阵点乘计算方案,本发明的存内计算方案保持高精度的同时,极大地提高了并行乘加运算速度、节约了运算操作数的存储空间、降低了数据传输耗时以及降低了运算功耗。
附图说明
图1是本发明实例提供的一种基于SRAM的高精度并行乘加结构及其实现方法示意图;
图2是图1中SRAM存内计算模块示意图;
图3是图2中正(负)存算模块示意图;
图4是图2中减法模块示意图;
图5是图3中SRAM模块示意图;
图6是图3中实现电流转电压功能的电路示意图;
图7是图3中实现电压相加功能的电路示意图;
图8是图4中减法模块实现减法运算的举例示意图;
图9是本发明提出的一种基于SRAM的高精度并行乘加结构及其实现方法的流程图;
图10是图2的另一种的实现方案;
图11是图9基于图10修改后的流程图。
具体实施方式
下面结合附图对本发明进行详细的描述:
如图1所示,第一操作数(矩阵)3从外部I/O进入移位寄存器模块5,控制器模块1控制移位寄存器模块5暂时存储并行乘加运算的第一操作数并将其进行“一维化”处理得到第一操作数(向量)6,再将第一操作数(向量)6传输给SRAM存内计算模块8,控制器模块1控制SRAM存内计算模块8存储移位寄存器模块5输出的数据6,控制器模块1控制SRAM存内计算模块8存储的数据6与从外部I/O进入的乘加运算的第二操作数7进行乘加运算;SRAM存内计算模块8得到的结果9传输给放大读出模块10;放大读出模块10将SRAM存内计算模块8得到的结果9进行信号放大并做幅度调整后得到并行乘加的结果11,放大读出模块10将乘加运算结束信号12反馈给控制器模块1。
如图2所示,SRAM存内计算模块8包括正矩阵存算模块12、负矩阵存算模块13、减法模块15,正矩阵存算模块12和负矩阵存算模块13的结构相同,只是其二者的存储数据所代表的意义不同,正矩阵存算模块12存储的是并行乘加运算的第一操作数的正值的绝对值,负矩阵存算模块13存储的是并行乘加运算的第一操作数的负值的绝对值。正矩阵存算模块12和负矩阵存算模块13的运算结果14传输给减法模块15。减法模块15实现正矩阵存算模块12的结果14减去负矩阵存算模块的结果14的功能,从而实现了并行乘加运算的第一操作数即包含正值,也包含负值。一组正矩阵存算模块12、负矩阵存算模块13、减法模块15实现向量-向量点乘运算,多组正矩阵存算模块12、负矩阵存算模块13、减法模块15则实现向量-矩阵点乘运算。
如图3所示,移位寄存器模块5输出的第一操作数(向量)6中的每一位数16传输给对应输入及反相输入模块19,输入及反相输入模块19将原数据16的同相数据20和其反相数据21传输给被控制器模块1使能的写使能信号线(WL信号线)17控制的SRAM模块行22,从而分别存储并行乘加运算的第一操作数中的一位。被控制器模块1使能的运算使能信号线(RWL信号线)18控制的SRAM模块行22存储的数据与SL信号线10传输的第二操作数进行并行乘加运算,得到的结果为电流23,电流23经过由第一电阻R1、第一运放25、第二电阻R2构成电流转电压电路(参阅图6)转化为电压26,其中每列SRAM模块列的第二电阻R2的阻值比例则是每列SRAM模块存储数据的权重比例,为了实现电阻匹配,每列SRAM模块列的第一电阻R1要和同一列的第二电阻R2的阻值相同。得到的电压26经过由第三电阻R3、第四电阻R4、第五电阻R5、第二运放29构成的电压相加电路(参阅图7)得到正(负)存算模块12(13)的运算结果14。
如图4所示,正矩阵存算模块得到的结果14(VP)经过第六电阻R6、第七电阻R7、第八电阻R8、第三运放32可得到电压33(VPP),这是因为运放具有“虚短”、“虚断”特性,可得运算表达式:
Figure BDA0002237421180000061
电压33(VPP)和负矩阵存算模块得到的结果14(VN)经过第九电阻R9、第十电阻R10、第十一电阻R11、第十二电阻R12、第四运放36得到电压9(V),可得运算表达式:
Figure BDA0002237421180000062
采用R6=R8,R9=R11=R12,可得运算表达式:
V=VP-VN
由此SRAM存内计算模块8的乘加结果9(V),实现了并行乘加运算的第一操作数即包含正值也包含负值(参阅图8)。为实现电阻匹配,R7=R6//R8,R10=R9//R11//R12。
如图5所示,第一PMOS管M1和第一NMOS管M2组成的CMOS反相器与第二PMOS管M3和第二NMOS管M4组成的CMOS反相器首尾相连,此结构可用于存储一位数据Q,即并行乘加运算的第一操作数,在两个反相器的输出端分别连接第三NMOS管M5的漏端、第四NMOS管M6的漏端,第三NMOS管M5的源端连接BL信号线20,第四NMOS管M6的源端连接BLB信号线21,在存储数据时将第三NMOS管M5、第四NMOS管M6通过写使能信号(WL信号线)17开启,第五NMOS管M7和第六NMOS管M8构成运算部分,其中第五NMOS管M7的栅极连接并行乘加运算的第一操作数Q,其漏极连接并行乘加运算的第二操作数(SL信号线)7,其源极连接第六NMOS管M8的漏极,第六NMOS管M8的栅极由运算使能信号(RWL信号线)18控制,当运算使能信号(RWL信号线)18有效时进行并行乘加运算,其结果以电流的形式流出第六NMOS管M8的源端23。
如图6所示,第一电阻R1、第二电阻R2、第一运放25构成了电流转电压电路,由于第一运放25具有“虚短”、“虚断”的特性,使得第一运放25的负相输入端23的电势为“0”,若通过负相输入端23的电流为I,第一运放25的输出端电压26为VOUT,则可得到运算表达式:
Figure BDA0002237421180000071
第一电阻R1、第二电阻R2的比值大小由具体情况而定(参阅图3)。
如图7所示,第三电阻R3、第四电阻R4、第五电阻R5、第二运放29构成了电压相加的电路,由于第二运放29具有“虚短”、“虚断”的特性,使得第二运放29的负相输入端27的电势为“0”,假设第1列至第m列的电压26分别为VOUT1…VOUTh…VOUTm,第二运放29的输出电压14为VP(VN),则可得运算表达式:
Figure BDA0002237421180000072
第三电阻R3、第五电阻R5的比值大小由具体情况而定,为了实现电阻匹配,R4=(R3/m)//R5。
如图8所示,并行乘加运算的第一操作数既可以包含正值,也可以包含负值。图8即为举例示范,假设矩阵37中A11至A34均为无符号为的多比特的二进制值,即均为正值,则矩阵38将矩阵37中原来的所有正值的绝对值提取出来,存储于正矩阵存算模块,矩阵39将矩阵37中原来的所有负值的绝对值提取出来,存储于负矩阵存算模块,其中的减法运算40由减法模块15实现。
如图9所示,该图是本发明提出的一种所述基于SRAM的高精度并行乘加结构及其实现方法的实现过程,包括:
步骤1,控制器模块发出控制指令,控制外部I/O进入的第一操作数(矩阵)3传输给移位寄存器模块5进行“一维化”;
步骤2,移位寄存器模块5将“一维化”后的第一操作数(向量)6传输给SRAM存内计算模块8;
步骤3,SRAM存内计算模块8的输入及反相输入模块19接收对应的第一操作数的一位数16;
步骤4,输入及反相输入模块19输出其接收的原数据的同相数据BL20及其反相数据BLB21;
步骤5,控制器模块1使能一条写使能信号线WL17,即选中WL1-WLn中一条信号线使其处于高电势,从而使能该条信号线控制的SRAM模块行22;
步骤6,步骤5使能的SRAM模块行22存储所在列的BL数据20,若并行乘加运算的第一操作数3未全部存储于相应的SRAM模块22中,则跳转至步骤1,否则执行步骤7;
步骤7,控制器模块1使能一条或多条运算使能信号线RWL18,即选中RWL1-RWLn中一条或多条信号线使其处于高电势,即使能RWL信号线18控制的SRAM模块行22;
步骤8,步骤7使能的SRAM模块行22的存储数据与对应行的第二操作数即SL信号线7传输的数据进行乘运算,不同SRAM模块行22之间共同完成了并行乘加运算,而SL信号线7上的电压的数值大小、正负代表了并行乘加运算的第二操作数的数值大小、正负;
步骤9,将SRAM存内计算模块8中每列SRAM模块行22并行乘加运算得到的电流23转换为电压26,并将每列SRAM模块列的电压26相加得到和电压14;
步骤10,将正矩阵存算模块12与负矩阵存算模块13得到的结果传输给减法模块15,减法模块15的功能是正矩阵存算模块12的结果14(VP)减去负矩阵存算模块13的结果14(VN),从而实现了并行乘加运算的第一操作数包含正值和负值;
步骤11,将减法模块15得到的结果9传输给放大读出模块10,放大读出模块10将该结果9进行信号放大并做幅度调整,使其输出范围与要求相符,从而得到最终的并行乘加运算结果11。若并行乘加运算还未结束,则跳转至步骤1,否则结束。
如图10所示,该图实现的是SRAM存内计算模块8的构建方案2,对应图2,正矩阵存算模块12(参阅图3)相应列乘加运算得到的电流23通过电流转电压电路(参阅图6)得到电压33,负矩阵存算模块13对应列乘加运算得到的电流23和电压33通过减法模块15(参阅图4)后得到电压26,再将正矩阵存算模块12和负矩阵存算模块13所有对应列如此得到的电压26再经过电压相加电路(参阅图7)得到并行乘加运算的结果9。
如图11所示,该图是图9基于图10修改后的流程图,包括:
步骤1-8与方案1的步骤1-8相同;
步骤9,将SRAM存内计算模块8中每列SRAM模块行22乘加得到电流23;
步骤10,将正存算矩阵与负存算矩阵对应SRAM模块列的电流23相减,得到电压26,从而实现了乘加运算的第一操作数包含正值和负值;
步骤11,将步骤10中所有对应列得到的电压26相加,得到电压9;
步骤12,将步骤11得到的电压9传输给放大读出模块10,放大读出模块10将该结果9进行信号放大并做幅度调整,使其输出范围与要求相符,从而得到最终的“乘加”结果11。若并行乘加运算还未结束,则跳转至步骤1,否则结束。

Claims (2)

1.一种基于SRAM的并行乘加装置,包括控制器、移位寄存器、SRAM存内计算模块和放大输出模块;所述控制器用于对移位寄存器和SRAM存内计算模块进行逻辑控制;所述移位寄存器具有移位功能,并用于接收第一操作数,移位寄存器输出第一操作数到SRAM存内计算模块;所述SRAM存内计算模块接收移位寄存器输入的第一操作数和外部输入的第二操作数,在控制器控制下对第一操作数和第二操作数进行并行乘法加运算,SRAM存内计算模块的输出接放大输出模块的输入;放大输出模块将SRAM存内计算模块的计算结果进行信号放大并做幅度调整后输出;
其特征在于,所述SRAM存内计算模块包括多个并列的计算单元,每个计算单元包括正矩阵存算模块、负矩阵存算模块和减法模块;所述正矩阵存算模块和负矩阵存算模块的输入包括第一操作数、第二操作数和控制器的控制指令,正矩阵存算模块和负矩阵存算模块的输出分别作为减法模块的两个输入,减法模块的输出为SRAM存内计算模块的输出;
所述正矩阵存算模块包括第一运算放大器和多个并列的计算子单元,每个计算子单元包括输入及反相输入模块、SRAM模块阵列和第二运算放大器,每一个输入及反相输入模块的输入为第一操作数中的一位数据,即第一操作数按位依次输入到多个计算子单元中,输入及反相输入模块用于输出输入数据的同相数据BL及输入数据的反相数据BLB;所述SRAM模块阵列包括多个SRAM,每个SARM连接输入及反相输入模块的输出,SARM还连接控制器输出的写使能信号WL和运算使能信号RWL,将所有计算子单元中的SRAM按顺序从1到n编号,对应的将写使能信号WL按顺序从WL1到WLn编号,运算使能信号RWL按顺序从RWL1到RWLn编号,编号为WL1的写使能信号和编号为RWL1的运算使能信号控制所有编号为1的SRAM,其他编号依次类推;计算子单元中的所有SARM的输出接第二运算放大器的反相输入端,第二运算放大器的正向输入端通过一个电阻后接地,第二运算放大器的输出通过一个电阻后接第一运算放大器的反相输入端,第二运算放大器的输出还通过一个反馈电阻后接第二运算放大器的反相输入端;第一运算放大器的正向输入端通过一个电阻后接地,第一运算放大器通过一个反馈电阻后接第一运算放大器的反相输入端,第一运算放大器的输出端为正矩阵存算模块的输出端;
所述SRAM采用8个MOSFET构建且能存储一位数据,将8个MOSFET依次编号为M1-M8,第一PMOS管M1和第一NMOS管M2组成的CMOS反相器与第二PMOS管M3和第二NMOS管M4组成的CMOS反相器首尾相连,此结构用于存储一位数据Q,即并行乘加运算的第一操作数中的一位数据;在两个反相器的输出端分别连接第三NMOS管M5的漏端、第四NMOS管M6的漏端,第三NMOS管M5的源端连接BL,第四NMOS管M6的源端连接BLB,在存储数据时将第三NMOS管M5、第四NMOS管M6通过写使能信号WL开启,第五NMOS管M7和第六NMOS管M8构成运算部分,其中第五NMOS管M7的栅极连接并行乘加运算的第一操作数Q,其漏极连接并行乘加运算的第二操作数,其源极连接第六NMOS管M8的漏极,第六NMOS管M8的栅极由运算使能信号RWL控制,并行乘加运算的结果以电流的形式流出第六NMOS管M8的源端,即第六NMOS管M8的源端为SARM的输出;
第六NMOS管M8的源端的输出为电流信号,第二运算放大器、第一运算放大器及外围电阻构建了电流转电压电路和电压相加电路,第六NMOS管M8的源端流出的电流通过电流转电压电路后再经过电压加法电路相加,相加得到的电压传输给减法模块;
所述负矩阵存算模块的结构与正矩阵存算模块相同,区别在于其存储数据的功能不同,正矩阵存算模块的存储数据为并行乘加运算的第一操作数中的正值的绝对值,负矩阵存算模块的存储数据为并行乘加运算的第一操作数中的负值的绝对值;
所述减法模块是由第三运算放大器及外围电阻而成,其功能是将正矩阵存算模块的结果减去负矩阵存算模块的结果;减法模块的输出为乘加结果,并输入到放大输出模块。
2.根据权利要求1所述的一种基于SRAM的并行乘加装置,其特征在于,所述控制器模块控制移位寄存器的方法是,使移位寄存器将从外部接收的第一操作数“一维化”处理,并通过移位输出,使第一操作数按位依次输入到每一个计算子单元。
CN201910988343.6A 2019-10-17 2019-10-17 一种基于sram的并行乘加装置 Active CN110750232B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910988343.6A CN110750232B (zh) 2019-10-17 2019-10-17 一种基于sram的并行乘加装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910988343.6A CN110750232B (zh) 2019-10-17 2019-10-17 一种基于sram的并行乘加装置

Publications (2)

Publication Number Publication Date
CN110750232A CN110750232A (zh) 2020-02-04
CN110750232B true CN110750232B (zh) 2023-06-20

Family

ID=69278671

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910988343.6A Active CN110750232B (zh) 2019-10-17 2019-10-17 一种基于sram的并行乘加装置

Country Status (1)

Country Link
CN (1) CN110750232B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111883191B (zh) * 2020-07-14 2023-02-03 安徽大学 10t sram单元、及基于10t sram单元的存内逻辑运算及bcam电路
CN111880763B (zh) * 2020-07-14 2022-12-02 安徽大学 一种在内存中实现带有正负数乘加的sram电路
CN111816233B (zh) * 2020-07-30 2023-08-01 中科南京智能技术研究院 一种存内计算单元及阵列
CN112071343B (zh) * 2020-08-18 2022-09-13 安徽大学 一种在存储器中结合电容实现乘法的sram电路结构
CN112151091B (zh) * 2020-09-29 2023-03-21 中科南京智能技术研究院 一种8t sram单元及存内计算装置
CN112399111B (zh) * 2020-10-09 2022-04-08 电子科技大学中山学院 一种移位寄存器及cmos固态成像传感器
CN112382324B (zh) * 2020-11-12 2023-07-18 电子科技大学 一种亚阈区低功耗存算一体cmos电路结构
CN115658013B (zh) * 2022-09-30 2023-11-07 杭州智芯科微电子科技有限公司 向量乘加器的rom存内计算装置和电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1512606A1 (de) * 1967-05-24 1969-06-12 Telefunken Patent Verknuepfungsbaustein
CN104090737A (zh) * 2014-07-04 2014-10-08 东南大学 一种改进型部分并行架构乘法器及其处理方法
CN109859786A (zh) * 2019-01-28 2019-06-07 北京航空航天大学 一种基于自旋磁存储器的数据运算方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SU601689A1 (ru) * 1975-03-25 1978-04-05 Институт математики и механики АН Казахской ССР Арифметическое устройство
JPH04290155A (ja) * 1991-03-19 1992-10-14 Fujitsu Ltd 並列データ処理方式
CA2091539A1 (en) * 1993-03-11 1994-09-12 Jan Fandrianto Video compression/decompression processing and processors
JP3287305B2 (ja) * 1998-04-23 2002-06-04 日本電気株式会社 積和演算装置
US6718457B2 (en) * 1998-12-03 2004-04-06 Sun Microsystems, Inc. Multiple-thread processor for threaded software applications
US7013321B2 (en) * 2001-11-21 2006-03-14 Sun Microsystems, Inc. Methods and apparatus for performing parallel integer multiply accumulate operations
DE10260660B3 (de) * 2002-12-23 2004-06-09 Infineon Technologies Ag Modulare Multiplikation mit paralleler Berechnung der Look-Ahead-Parameter u.a. bei der kryptographischen Berechnung
US20050055394A1 (en) * 2003-09-10 2005-03-10 Worley John S. Method and system for high performance, multiple-precision multiply-and-add operation
US10489114B2 (en) * 2014-06-27 2019-11-26 International Business Machines Corporation Shift amount correction for multiply-add
GB2553783B (en) * 2016-09-13 2020-11-04 Advanced Risc Mach Ltd Vector multiply-add instruction
US10303438B2 (en) * 2017-01-16 2019-05-28 International Business Machines Corporation Fused-multiply-add floating-point operations on 128 bit wide operands
KR102258414B1 (ko) * 2017-04-19 2021-05-28 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 처리 장치 및 처리 방법
DE102018110687A1 (de) * 2017-05-05 2018-11-08 Intel Corporation Dynamisches Genauigkeitsmanagement für Deep-Learning-Ganzzahlprimitive
CN111201525A (zh) * 2017-10-18 2020-05-26 三菱电机株式会社 运算电路以及运算方法
CN109032563B (zh) * 2018-07-03 2021-08-06 中国人民解放军国防科技大学 一种加速桥接融合乘加的方法及装置
CN110277121B (zh) * 2019-06-26 2020-11-27 电子科技大学 基于衬底偏置效应的多位存算一体sram及实现方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1512606A1 (de) * 1967-05-24 1969-06-12 Telefunken Patent Verknuepfungsbaustein
CN104090737A (zh) * 2014-07-04 2014-10-08 东南大学 一种改进型部分并行架构乘法器及其处理方法
CN109859786A (zh) * 2019-01-28 2019-06-07 北京航空航天大学 一种基于自旋磁存储器的数据运算方法

Also Published As

Publication number Publication date
CN110750232A (zh) 2020-02-04

Similar Documents

Publication Publication Date Title
CN110750232B (zh) 一种基于sram的并行乘加装置
US10877752B2 (en) Techniques for current-sensing circuit design for compute-in-memory
Kim et al. Z-PIM: A sparsity-aware processing-in-memory architecture with fully variable weight bit-precision for energy-efficient deep neural networks
WO2021163866A1 (zh) 神经网络权重矩阵调整方法、写入控制方法以及相关装置
CN112992232B (zh) 一种多位正负单比特存内计算单元、阵列及装置
CN113467751B (zh) 一种基于磁性随机存储器的模拟域存内计算阵列结构
CN112989273B (zh) 一种利用补码编码进行存内运算的方法
CN113823343A (zh) 一种基于6t-sram的分离的计算装置
Zhang et al. PIMCA: A programmable in-memory computing accelerator for energy-efficient DNN inference
Ali et al. RAMANN: in-SRAM differentiable memory computations for memory-augmented neural networks
CN111798896A (zh) 一种基于磁随机存储器的支持通用计算的存内计算系统
Roy et al. PIM-DRAM: Accelerating machine learning workloads using processing in commodity DRAM
CN114496010A (zh) 一种基于磁性随机存储器的模拟域近存计算阵列结构
Sehgal et al. Trends in analog and digital intensive compute-in-SRAM designs
CN108154227B (zh) 一种使用模拟计算的神经网络芯片
Zhao et al. ARBiS: A hardware-efficient SRAM CIM CNN accelerator with cyclic-shift weight duplication and parasitic-capacitance charge sharing for ai edge application
CN116126779A (zh) 一种9t存算电路、乘累加运算电路、存内运算电路及芯片
CN108154226B (zh) 一种使用模拟计算的神经网络芯片
CN113391786B (zh) 一种多位正负权重的计算装置
CN114038492B (zh) 一种多相采样存内计算电路
CN113553028B (zh) 基于概率比特电路的问题求解优化方法及系统
CN114882921A (zh) 一种多比特计算装置
KR20190114208A (ko) 저전력 및 고속 연산을 위한 dram용 비트와이즈 컨볼루션 회로
Fu et al. DS-CIM: A 40nm Asynchronous Dual-Spike Driven, MRAM Compute-In-Memory Macro for Spiking Neural Network
CN117636945B (zh) 5bit带符号位的同或与同或累加运算电路、CIM电路

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