CN117608519B - 基于10t-sram的带符号乘法与乘累加运算电路 - Google Patents

基于10t-sram的带符号乘法与乘累加运算电路 Download PDF

Info

Publication number
CN117608519B
CN117608519B CN202410094858.2A CN202410094858A CN117608519B CN 117608519 B CN117608519 B CN 117608519B CN 202410094858 A CN202410094858 A CN 202410094858A CN 117608519 B CN117608519 B CN 117608519B
Authority
CN
China
Prior art keywords
bit
blb
sram
multiplication
word line
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
CN202410094858.2A
Other languages
English (en)
Other versions
CN117608519A (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.)
Hefei Microelectronics Research Institute Co ltd
Anhui University
Original Assignee
Hefei Microelectronics Research Institute Co ltd
Anhui University
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 Hefei Microelectronics Research Institute Co ltd, Anhui University filed Critical Hefei Microelectronics Research Institute Co ltd
Priority to CN202410094858.2A priority Critical patent/CN117608519B/zh
Publication of CN117608519A publication Critical patent/CN117608519A/zh
Application granted granted Critical
Publication of CN117608519B publication Critical patent/CN117608519B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Nonlinear Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Static Random-Access Memory (AREA)

Abstract

本发明属于静态随机存储器领域,具体涉及一种基于10T‑SRAM的带符号乘法与乘累加运算电路及其芯片。基本电路由8个NMOS管和2个PMOS管构成。P0、P1和N0~N3构成实现数据存储功能的基本单元;其余构成计算单元。其中,N4和N6的栅极连接在存储节点Q上,N4与N5的漏极相连;N6与N7的漏极相连;N4的源极与位线BL相连;N6的源极连接位线BLB。N5、N7的源极接VSS。N5的栅极连接正相输入字线;N5的栅极连接负相输入字线。本发明方案提供独立的数据读通道实现读写分离,能够防止传统6T‑SRAM开启多行而引起的读破坏问题,并且可以同时支持带符号数和无符号数间的多比特乘法和乘累加运算。

Description

基于10T-SRAM的带符号乘法与乘累加运算电路
技术领域
本发明属于静态随机存储器领域,具体涉及一种基于10T-SRAM的带符号乘法运算电路,一种基于10T-SRAM的乘累加运算电路,以及对应的CIM芯片。
背景技术
为了克服冯诺依曼架构额计算机系统中,存储器和处理器(CPU)间的数据传输速率无法与处理器超高的数据处理速率相适应,进而给计算机系统数据处理效率造成瓶颈的问题。为了克服这一瓶颈,技术人员提出了一种可以在存储器中完成逻辑运算的新型计算机构,即存内运算(CIM,Computing -In-Memory),CIM架构可以基于多种储存器实现。
在多种支持存算架构的存储器芯片中,静态随机存储器(Static RAM,SRAM)由于其功耗低、速度快的优良特性,已经被证明是CIM体系中成熟结构之一。一方面是因为 SRAM比较容易获得,SRAM在标准CMOS工艺下即可得到,技术比较成熟。另一方面则因SRAM的存取速度是所有主流存储器中最接近CPU的,基于它进行存内计算开发,最容易解决内存墙问题。
现有的基于SRAM的存内运算电路存在主要缺陷有:(一)电路需要同时具备数据存储和逻辑运算的功能,这导致现有的基于双端口8T-SRAM结构设计各类CIM芯片普遍存在不容忽视的读破坏问题。(二)现有的各类基于SRAM存内运算芯片在处理多比特乘法和多比特乘累加运算时,一般都使用加法器树进行数据的累加,并配合复杂的数据编码和外围电路,这导致电路的功耗和运算效率等指标大多难以满足要求。
发明内容
为了解决现有技术中基于8T-SRAM等的CIM芯片存在读破坏问题,以及乘法和乘累加运算效率交低的问题,本发明提供一种基于10T-SRAM的带符号乘法和乘累加运算电路及其芯片。
本发明采用以下技术方案实现:
一种基于10T-SRAM的带符号乘法运算电路,其具备数据存储功能和执行乘法运算的逻辑运算功能。该乘法运算电路由8个NMOS管N0、N1、N2、N3、N4、N5、N6、N7;以及2个PMOS管P0、P1构成。电路连接关系如下:
P0、P1和N0~N3构成实现数据存储功能的6T-SRAM单元;其中,P0、N0、P1、N1反相交叉耦合构成包含存储节点Q和QB的锁存结构,N2作为存储节点Q与位线BL间的传输管,N3作为存储节点QB与位线BLB间的传输管。
N4~N7构成计算单元。其中,N4和N6的栅极连接在存储节点Q上,N4的漏极与N5的漏极相连;N6的漏极与N7的漏极相连;N4的源极与位线BL相连;N6的源极连接位线BLB。N5、N7的源极接VSS。N5的栅极连接正相输入字线IN+;N5的栅极连接负相输入字线IN-
该电路实现乘法运算时,将6T-SRAM单元中存储节点的值作为权重,通过正相输入字线IN+或负相输入字线IN-输入表征多比特数的不同脉宽的输入信号,则位线BL或BLB上的放电电压用于表征单比特权重与多比特数间的乘积。
作为本发明进一步的改进,该型基于10T-SRAM的带符号乘法运算电路实现无符号数与单比特权重间的乘法运算的策略如下:
S1:在6T-SRAM单元的存储节点中预存表征单比特权重的值。
S2:将单比特或多比特的无符号数编码为不同脉宽的输入信号,并通过正相输入字线IN+或负相输入字线IN-输入到计算单元中。
S3:对位线BL或BLB的放电电压进行信号采样和量化,并根据放电电压生成乘积结果。
作为本发明进一步的改进,该型基于10T-SRAM的带符号乘法运算电路实现带符号数与单比特权重间的乘法运算的策略如下:
S01:在6T-SRAM单元的存储节点中预存表征单比特权重的值。
S02:将带符号的单比特或多比特数分成符号位部分和无符号数部分,根据无符号数部分的数值大小生成不同脉宽的输入信号,并根据符号位选择将输入信号的输入路径:
(1)当带符号的单比特或多比特数为正值时,将输入信号输入到正相输入字线IN+上;
(2)当带符号的单比特或多比特数为负值时,将输入信号输入到负相输入字线IN-上;
S03:对位线BL或BLB的放电电压进行信号采样和量化,根据信号来源确定乘积结果的符号位,并根据放电电压生成乘积结果的数值:
(1)当采集到的放电电压来自于位线BL时,表示乘积结果的符号为“+”;
(2)当采集到的放电电压来自于位线BLB时,表示乘积结果的符号为“-”。
作为本发明进一步的改进,基于10T-SRAM的带符号乘法运算电路中,权重的编码规则如下:当存储节点Q为高电平、QB为低电平,表征单比特权重为“1”;当存储节点Q为低电平、QB为高电平,表征单比特权重为“0”。
作为本发明进一步的改进,基于10T-SRAM的带符号乘法运算电路中的6T-SRAM单元部分的电路连接关系如下:P0、P1的源极接电源VDD,P0、N0、N2的漏极与P1、N1的栅极电连接,并作为存储节点Q;P1、N1、N3的漏极与P0、N0的栅极电连接,并作为存储节点QB;N2、N3的栅极接字线WL;N2的源极接位线BL,N3的源极接位线BLB。
作为本发明进一步的改进,基于10T-SRAM的带符号乘法运算电路的数据存储功能中,利用传输管N2、N3和计算单元N4~N7实现写分离,N2、N3作为写通道,N4~N7作为读通道;且N4、N5和N6、N7又分别构成读通道中的两个独立的数据读取端口。
作为本发明进一步的改进,基于10T-SRAM的带符号乘法运算电路实现数据保持操作的逻辑如下:
将字线WL、正相输入字线IN+和负相输入字线IN-均保持低电平,P0、N0、P1、N1构成的锁存结构处于锁存状态,实现对存储节点Q、QB的数据保持。
其实现数据写入操作的逻辑如下:
将正相输入字线IN+和负相输入字线IN-均保持低电平,字线WL拉高为高电平;根据需要写入的数据加载到位线BL、BLB上,进而打破P0、N0、P1、N1构成的锁存结构的锁存状态,将数据写入存储节点Q、QB内。
其实现数据读取操作的逻辑如下:
在数据保持模式下,选择任意一侧的数据读取路径,然后将对应侧的位线BL或BLB预充到高电平,并将对应侧的字线IN+或IN-置为高电平,最后根据位线电平状态读取出锁存结构中与位线相连的存储节点存储的数据。
本发明还包括一种基于10T-SRAM的乘累加运算电路,其包括由N×M个如前述的基于10T-SRAM的带符号乘法运算电路作为基本单元,并按阵列排布后构成的N行M列的存算阵列。在存算阵列中,同列中的各个基本单元共享位线BL、BLB;同行的各个基本单元共享字线WL、IN+和 IN-。在存算阵列的前M-1列中,相邻两列的位线BL之间,以及相邻两列的位线BLB之间分别连接有一个开关K;在第M-1和第M列中,前一列BL和后一列BLB之间,以及前一列BLB和后一列BL之间也连接有一个开关K。
作为本发明进一步的改进,基于10T-SRAM的乘累加运算电路在执行乘累加运算时,存算阵列中每一行作为执行乘法运算的基本单位,整个存算阵列实现对每一行的乘法运算结果进行累加。
具体地,基于10T-SRAM的乘累加运算电路执行乘累加运算的策略如下:
S001:将存算阵列中所有位线间的开关K打开,并将存算阵列的第一列做为冗余分权列,全部预存数据“0”。
S002:依次使能字线WL选中每一行,并将各行的乘法运算的其中一个操作数按照二进制补码的形式按位预存到各个10T-SRAM的存储节点中。
预存过程中,存储阵列的左侧为二进制补码的低位,右侧为二进制补码的高位。
S003将各行的字线WL置为低电平,实现对预存的操作数进行数据保持,并将各列的BL和BLB预充到高电平,等待执行运算。
S004:将各行的乘法运算的另一个操作数以不同脉宽的输入信号的形式输入到对应IN+或IN-中,使得对应的位线BL或BLB放电。
S005:按照从左到右的顺序轮流闭合存算阵列中相邻两列的位线BL间和BLB间的两个开关;通过位线上的电荷再分配;将乘累加运算结果的正相部分和负相部分分别累加到最后一列的位线BL和BLB上。
S006:通过ADC分别量化存储阵列中最后一列的BL和BLB上的数值,并将量化后的正相数值减去负相数值得到最终的乘累加运算结果。
本发明还包括一种CIM芯片,该芯片中集成有如前述基于10T-SRAM的乘累加运算电路,以及用于配合基于10T-SRAM的乘累加运算电路实现数据存储和逻辑运算功能的外围电路。
本发明提供的技术方案,具有如下有益效果:
提供了一种基于10-SRAM单元带符号乘法和乘累加运算电路既可以实现完整的数据存储功能,又具有逻辑运算的功能。该电路支持高效的存内逻辑运算能力,可以提高电路执行大规模乘法运算的数据处理效率。此外,本发明还能够通过配置输入IN+、IN-上施加的信号,实现带符号位的多比特乘累加计算,进而同时支持带符号的多比特乘法或乘累加运算和无符号的多比特乘法或乘累加运算。
本发明提供的电路的数据存储性能也相对常规方案进行了升级。与传统的双端口8T-SRAM单元相比,本发明增加了N4、N5和N6、N7组成的两个读通道,实现了读写分离,解决了双端口8T-SRAM结构存在的读破坏问题。
附图说明
图1为本发明实施例1中提供的基于10T-SRAM的带符号乘法运算电路的电路图。
图2为本发明实施例2中提供的基于10T-SRAM的乘累加运算电路的电路图。
图3为本发明实施例2中提供的32×6的乘累加运算电路的电路架构图。
图4为图3的电路图在执行一次乘累加运算时的信号时序图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步地详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
实施例1
本实施例提供一种基于10T-SRAM的带符号乘法运算电路,其具备数据存储功能和执行乘法运算的逻辑运算功能。如图1所示,该乘法运算电路由8个NMOS管N0、N1、N2、N3、N4、N5、N6、N7;以及2个PMOS管P0、P1构成。其中,P0、P1和N0~N3构成能够实现数据存储功能的经典的6T-SRAM单元。其中,P0、N0、P1、N1反相交叉耦合构成包含存储节点Q和QB的锁存结构,N2作为存储节点Q与位线BL间的传输管,N3作为存储节点QB与位线BLB间的传输管。具体地,P0、P1的源极接电源VDD,P0、N0、N2的漏极与P1、N1的栅极电连接,并作为存储节点Q;P1、N1、N3的漏极与P0、N0的栅极电连接,并作为存储节点QB;N2、N3的栅极接字线WL;N2的源极接位线BL,N3的源极接位线BLB。
剩余的四个NMOS管N4~N7构成计算单元,计算单元的作用包括两部分,一方面是为6T-SRAM单元提供读写分离的数据读取双端口。另一方面与6T-SRAM单元配合实现乘法运算操作。本实施例提供的基于10T-SRAM的带符号乘法运算电路支持的乘法运算包括无符号的单比特或多比特数与单比特权重间的乘法运算,以及带符号的单比特或多比特数与单比特权重间的乘法运算。
具体地,结合图1可知,计算单元中的N4和N6的栅极连接在6T-SRAM单元中的存储节点Q上,N4的漏极与N5的漏极相连;N6的漏极与N7的漏极相连;N4的源极与位线BL相连;N6的源极连接位线BLB。N5、N7的源极接VSS。N5的栅极连接正相输入字线IN+;N5的栅极连接负相输入字线IN-
特别地,该电路实现乘法运算时,将6T-SRAM单元中存储节点的值作为权重,通过正相输入字线IN+或负相输入字线IN-输入表征多比特数的不同脉宽的输入信号,则位线BL或BLB上的放电电压用于表征单比特权重与多比特数间的乘积。
为了更清楚地体现本实施例提供的基于10T-SRAM的带符号乘法运算电路的性能,以下结合数据存储和逻辑运算两大功能对电路的原理进行描述:
一、数据存储功能
1.1、保持操作
在10T-SRAM单元执行保持操作时,字线WL、IN+、IN-均保持低电平,此时N2、N3、N5、N7均关断。位于电路中间的有P0、N0、P1、N1构成的锁存结构处于锁存状态,位线BL、BLB与存储节点断开,位线BL和BLB的电平状态均不会对存储节点Q、QB造成影响。即实现了数据保持操作。
1.2、写操作
将正相输入字线IN+和负相输入字线IN-均保持低电平,字线WL拉高为高电平;根据需要写入的数据加载到位线BL、BLB上,进而打破P0、N0、P1、N1构成的锁存结构的锁存状态,将数据写入存储节点Q、QB内。
例如,假设写操作前10T-SRAM单元中存储节点Q为高电平、QB为低电平,即存储数据为“1”。在写入数据“0”时,字线WL被拉为高电平,同时将需要写入的数据“0”加载到位线BL、BLB上,使位线BL为低电平、位线BLB为高电平。此时,位线BL通过N2下拉存储节点Q,使其从高电平状态变为低电平状态;而位线BLB则通过N3上拉存储节点QB,使其从低电平状态变为高电平状态。进而打破P0、N0、P1和N1构成的锁存结构的数据锁存状态,将数据“0”写入存储节点Q、QB内。
相反地,假设写操作前存储节点Q为低电平、QB为高电平,即存储数据为“0”。在写入数据“1”时,字线WL被拉为高电平,同时将需要写入的数据“1”加载到位线BL、BLB上,使位线BL为高电平、位线BLB为低电平。此时,位线BL通过N2上拉存储节点Q,使其从低电平状态变为高电平状态。而位线BLB通过N3下拉存储节点QB,使其从高电平状态变为低电平状态。进而打破P0、N0、P1和N1构成的锁存结构的锁存状态,将数据“1”写入存储节点Q、QB内。
综上所述,在10T-SRAM单元中,N2和N3构成了数据写入的通道。
1.3、读操作
本实施例提供的基于10T-SRAM的带符号乘法运算电路中,P0、P1和N0~N3构成能够实现数据存储功能的经典的6T-SRAM单元,因此,传输管N2和N3本质上也可以作为数据读取的通道。
例如在数据保持状态下,将位线BL或BLB预充的高电平,然后将字线置为高电平,如果对应的位线的电平下降则表示连接的存储节点呈低电平,而当位线保持为高电平时,则表示连接的存储节点呈高电平,进而实现对存储节点中存储的数据进行读取。
但是,为了克服传统的双端口8T-SRAM结构中存在的读破坏问题,本实施例的电路在数据读取时实际上借助由N4~N7构成的计算单元充当数据读通道,进而实现读写分离。并且在N4~N7构成的电路结构中还提供了两个独立的数据读取端口。
具体地,在本实施例电路的读写分离设计中,实现数据读取操作的逻辑如下:
在数据保持模式下,选择任意一侧的数据读取路径,然后将对应侧的位线BL或BLB预充到高电平,并将对应侧的字线IN+或IN-置为高电平,最后根据位线电平状态读取出锁存结构中与位线相连的存储节点存储的数据。
例如,假设10T-SRAM中存储了的数据“1”,即存储节点Q呈高电平,而存储节点QB呈低电平。此时,选择左侧的由N4和N5构成的端口实现数据读取,则将正相输入字线IN+置为高电平,并将位线BL置为高电平。此时,存储节点Q的高电平转态导致N4导通,而IN+的高电平又导致N5导通;此时,位线BL形成完整的放电路径,电平状态变为低电平,则表明读取出的原存储数据为“1”。相反地,如果原存储数据为“0”,即存储节点Q呈低电平,而存储节点QB呈高电平,此时,N4断开,无法形成放电路径,因此位线BL将仍旧保持高电平,则表示读取出的原存储数据为“0”。
相应地,右侧的由N6和N7构成的端口实现数据读取的操作逻辑与左侧端口相同,区别仅在于:当位线BLB保持高电平时,表示读取出的原存储数据为“1”,而当位线BLB下降为低电平时,表示读取出的原存储数据为“0”
二、逻辑运算功能
本实施例提供的基于10T-SRAM的带符号乘法运算电路执行乘法运算时,将存储节点中预存的数作为单比特的权重,然后将WL置为低电平,并通过正相输入字线IN+或负相输入字线IN-向计算单元输入表征单比特或多比特的输入信号,其中输入信号进入单元的端口可以用来表征乘数的符号位,而输入信号的脉宽则可以用来表征乘数的数值大小。脉宽越大代表乘数的数值越大,例如,乘数为4bit的0001时,输入信号的脉宽可以设置为T,而当乘数为4bit的0011时,输入信号的脉宽则设置为3T,相应地,4bit的0100对应的输入信号的脉宽为4T,……以此类推。
本实施例中,权重的编码规则如下:当存储节点Q为高电平、QB为低电平,表征单比特权重为“1”;当存储节点Q为低电平、QB为高电平,表征单比特权重为“0”。因此,当权重为“0”时,N4和N5均保持关断,此时,位线BL和BLB均保持高电平状态,因此放电电压为0,这表示乘积结果为0,即实现任意数乘0等于0。
而当权重为“1”时,N4和N5均保持关开启。因此如果N5和M7中的任意一个为高电平,则对应的位线BL或BLB上会形成放电路径,定义字线IN+和IN-输入的乘数分别为整数和负数,则BL上的放电量可以用来表示正值的乘积结果,而BLB上的放电量则可以用来表示负值的乘积结果。即实现了正数乘1等于正数,负数乘1等于正数。
由于字线IN+和IN-上的输入信号的脉宽会影响到位线BL或BLB的放电时长,进而导致放电电压与脉宽呈线性变化,因此,可以用位线BL和BLB上的放电量的大小来表示乘积的数值大小,并且乘积的竖直大小与输入信号中用脉冲宽度表征的乘数的数值大小相对应。
2.1、无符号数乘法
基于上述原理,本实施例提供的基于10T-SRAM的带符号乘法运算电路实现无符号数与单比特权重间的乘法运算的策略如下:
S1:在6T-SRAM单元的存储节点中预存表征单比特权重的值。
S2:将单比特或多比特的无符号数编码为不同脉宽的输入信号,并通过正相输入字线IN+或负相输入字线IN-输入到计算单元中。
S3:对位线BL或BLB的放电电压进行信号采样和量化,并根据放电电压生成乘积结果。
在无符号数的乘法中,无需区分符号位,因此无论从字线IN+和IN-输入乘数均可,不过在完成乘数输入后,需要选择对应信号输入路径一侧的位线进行乘积结果的信号采样和数字量化。
2.2、带符号数乘法
本实施例提供的基于10T-SRAM的带符号乘法运算电路实现带符号数与单比特权重间的乘法运算的策略如下:
S01:在6T-SRAM单元的存储节点中预存表征单比特权重的值。
S02:将带符号的单比特或多比特数分成符号位部分和无符号数部分,根据无符号数部分的数值大小生成不同脉宽的输入信号,并根据符号位选择将输入信号的输入路径:
(1)当带符号的单比特或多比特数为正值时,将输入信号输入到正相输入字线IN+上;
(2)当带符号的单比特或多比特数为负值时,将输入信号输入到负相输入字线IN-上;
S03:对位线BL或BLB的放电电压进行信号采样和量化,根据信号来源确定乘积结果的符号位,并根据放电电压生成乘积结果的数值:
(1)当采集到的放电电压来自于位线BL时,表示乘积结果的符号为“+”;
(2)当采集到的放电电压来自于位线BLB时,表示乘积结果的符号为“-”。
实施例2
在实施例1方案的基础上,本实施例进一步提供一种基于10T-SRAM的乘累加运算电路。如图2所示,该电路包括由N×M个如实施例1的基于10T-SRAM的带符号乘法运算电路作为基本单元,并按阵列排布后构成的N行M列的存算阵列。在存算阵列中,同列中的各个基本单元共享位线BL、BLB;同行的各个基本单元共享字线WL、IN+和 IN-。在存算阵列的前M-1列中,相邻两列的位线BL之间,以及相邻两列的位线BLB之间分别连接有一个开关K。在第M-1和第M列中,前一列BL和后一列BLB之间,以及前一列BLB和后一列BL之间也分别连接有一个开关K。
本实施例提供的基于10T-SRAM的乘累加运算电路在执行乘累加运算时,存算阵列中每一行作为执行乘法运算的基本单位,整个存算阵列实现对每一行的乘法运算结果进行累加。其中,乘累加运算本质上是多个乘法运算的运算结果的累加,而存算阵列中的列数制约了乘累加运算中每个乘法对应的其中一个操作数的位数(另一个操作数的位数受脉宽调制精度和ADC量化精度的制约,也不可以无限拓展),而存算阵列的行数则制约了乘累加运算中累计的乘积结果的数量。
具体地,本实施例提供的基于10T-SRAM的乘累加运算电路执行乘累加运算的策略如下:
S001:将存算阵列中所有位线间的开关K打开,并将存算阵列的第一列做为冗余分权列,全部预存数据“0”。
S002:依次使能字线WL选中每一行,并将各行的乘法运算的其中一个操作数按照二进制补码的形式按位预存到各个10T-SRAM的存储节点中。
预存过程中,存储阵列的左侧为二进制补码的低位,右侧为二进制补码的高位。
S003将各行的字线WL置为低电平,实现对预存的操作数进行数据保持,并将各列的BL和BLB预充到高电平,等待执行运算。
S004:将各行的乘法运算的另一个操作数以不同脉宽的输入信号的形式输入到对应IN+或IN-中,使得对应的位线BL或BLB放电。
S005:按照从左到右的顺序轮流闭合存算阵列中相邻两列的位线BL间和BLB间的两个开关;通过位线上的电荷再分配;将乘累加运算结果的正相部分和负相部分分别累加到最后一列的位线BL和BLB上。
S006:通过ADC分别量化存储阵列中最后一列的BL和BLB上的数值,并将量化后的正相数值减去负相数值得到最终的乘累加运算结果。
以下将以一个如图3所示的规模为32×6,即包括32行6列的10T-SRAM单元的存算阵列(记为block)为例,对多个5bit的带符号数的乘累加运算的实现过程进行详细说明。
由于该存算阵列包括32行因此支持对最多32个乘积的结果进行累加,又因为该存算阵列中包括6列,考虑到存算阵列的第一列将作为冗余分权列,所以最多支持完成5bit的带符号数或无符号数与另一个数之间的乘积或乘累加运算。
本实施例中,定义存算阵列的列数为j,j=0、1、2、3、4、5。乘累加运算可以写成A1×B1+ A2×B2+……+ A32×B32的形式,将其中的A1……A32定义为第一操作数,B1……B32定义为第二操作数。在实际运算中,第一操作数最多可以为5bit的数,在运算前,首先将第一列(j=0)中全部预测数据“0”,即使得存储节点Q为低电平,QB为高电平。
然后根据累加的乘积结果的数据选择开启存算阵列中的若干行,例如计算A1×B1+ A2×B2的结果则需要开启两行,计算A1×B1+ A2×B2+……+ A32×B32的结果则需要开启32行。再将各个第一操作数Ai预存到存储算阵列中的每一行i中。其中,第一操作数以二进制补码的形式存储到存算阵列内部,每一行可以存储一个二进制补码对应的第一操作数,即整个block中可以最多存储32个第一操作数。同一行的不同列分别存储二进制补码的不同位,本实施例中二进制补码从后向前的逆序依此预存到block的第2到6列。即:本实施例中,第二列(j=1)存储的是数据的最低位(LSB)、第六列(j=5)存储的是数据的最高位(MSB),也即是符号位。
乘累加运算中的各个第二操作数Bi则通过每一行的字线IN+和IN-输入到block中,其中,正值的第二操作数通过正相输入字线IN+输入,负值的第二操作数则通过负相输入字线IN-输入,并根据第二操作数的数值大小生成不同脉冲宽度的输入信号。
整个block在计算过程中,每个10T-SRAM分别将第一操作数各位上值与第二操作数相乘,乘积结果体现在对应危险的放电电压上,第一操作数各位上值即为对应乘法运算中的单比特权重,当权重为“1”,同一行的输入为正时(即输入信号为IN+),N4、N5导通,位线BL上的电压通过N4、N5被拉低;当权重为“1”,同一行的输入为负时(即输入信号为IN-),位线BL上的电压通过N6、N7被拉低。当权重为“0”时,N4、N6都关闭,左侧通道和右侧通道都不开启,输入信号无论是正数还是负数,BL或者BLB上的信号都不会被拉低。
因此,在输入第二操作数后,整个block中的32×5个10T-SRAM会分别完成各自位上的乘法运算,然后将表征运算结果的放电电压分配到共享的位线上。
接下来,本实施例方案将通过对位线间的开关进行轮流切换实现对正相或负相上的乘法结果进行“累加”。如图4所示,定义第一列和第二列间的两个位线间开关位K0,第二列和第三列间的两个位线间开关位K1,……,第五列和第六列间的两个位线间开关位K4,则乘积结果的累加过程如下:
步骤一:初始化状态下,K0~K4均断开。对于一个block(32×6),第一列为冗余列,由于存储的数据Q都为“0”,所以,BL<0>和BLB<0>上都不放电,计算结束时电平仍然为V(VDD)。
计算结束时如表1所示,BL<1>上的电压为V-∆BL1,+,BLB<1>上的电压为V-∆BLB1,-;BL<2>上的电压为V-∆BL2,+,BLB<2>上的电压为V-∆BLB2,- ;BL<3>上的电压为V-∆BL3,+,BLB<3>上的电压为V-∆BLB3,-;BL<4>上的电压为V-∆BL4,+,BLB<4>上的电压为V-∆BLB4,-;BL<5>上的电压为V-∆BL5,+,BLB<5>上的电压为V-∆BLB5,-
表1:乘累加运算中电荷分配前各位线的位线电压对照表
步骤二:关闭BL<0>和BL<1>、BLB<0>和BLB<1>之间的开关K0。此时,第一列和第二列的位线之间进行电荷共享,时间T后再打开。电荷共享后位线BL<1>、BLB<1>上的电压分别为:
步骤三:断开K0,并关闭BL<1>和BL<2>、BLB<1>和BLB<2>之间的开关K1。此时,第二列和第三位线之间再次进行电荷共享,时间T后再打开。电荷共享后位线BL<2>、BLB<2>上的电压分别为:
步骤四:断开K1,并关闭BL<2>和BL<3>、BLB<2>和BLB<3>之间的开关K2。此时,第三列和第四列的位线之间再次进行电荷共享。时间T后再打开;电荷共享后位线BL<3>、BLB<3>上的电压分别为:
步骤五:断开K2,并关闭BL<3>和BL<4>、BLB<3>和BLB<4>之间的开关K3。此时,第三列和第四列的位线之间进行电荷共享,时间T后再打开。电荷共享后位线BL<4>、BLB<4>上的电压分别为:
步骤六:由于二进制符号位“1”代表负数,二进制符号位“0”代表正数。所以最后一步和前面的连接方式不同。断开K3,并关闭BL<4>和BLB<5>、BLB<4>和BL<5>之间的开关K4。此时,第四列和第五列的位线之间最后一次进行电荷共享,时间T后再打开;电荷共享后位线BL<5>、BLB<5>上的电压分别为:
分析以上公式可以发现,经过多次电荷共享后,不同位线上的放电电压分别具有一个呈1、2、4、8、16梯级分布的“权重”,这正好对应block中每一列分别对应多位二进制数的各位上的权重。因此最后一组位线在经过多轮电荷共享后,分别实现了对乘积结果进行累加。
步骤六:电荷共享结束后,将BL<5>、BLB<5>连接到ADC上,对ADC使能,读出BL<5>、BLB<5>上的乘累加量输出结果。其中,BL<5>量化出的是乘累加过程中所有正相数据的累加和,BLB<5>量化出的是乘累加过程中所有负相数据的累加和。将BL<5>上量化出的结果减去BLB<5>上量化出的结果,则可以得到最终的乘累加运算结果。
实施例3
本实施例提供包括一种CIM芯片,该芯片实际上就是包含大量实施例2中的乘累加运算电路的大规模集成电路封装后的产品。该CIM芯片中集成有如实施例2的基于10T-SRAM的乘累加运算电路,以及用于配合基于10T-SRAM的乘累加运算电路实现数据存储和逻辑运算功能的外围电路。
为了实现前文介绍的数据存储和逻辑运算功能,本实施例的CIM电路中还应该包括多种外围电路,例如在实现数据存储功能时,需要的外围电路就包括:字线驱动器、地址译码器、预充电路、时序控制模块、模式切换电路、读写控制电路。字线驱动器用于控制各条字线WL、IN+、IN-的开启。地址译码器与字线驱动器连接,地址译码器用于将地址信号译码后传入到字线驱动器。预充电路用于对位线BL、BLB等信号线进行预充操作。时序控制模块用于生成执行数据存储任务或执行乘法运算和乘累加运算过程中所需的各个时钟信号。模式切换电路用于切换CIM电路的工作模式。
而在执行逻辑运算任务时,必要的外围电路至少还包括:用于根据输入第一操作数的符号位选择向正相输入字线IN+或负相输入字线IN-输入对应的输入信号的信道选择电路;用于生成不同数值的第二操作数的脉宽调制电路;用于生成第一操作数的二进制转码的转码电路;用于将第二操作数逆序写入到存算阵列同行中不同列的数据预存电路;用于对计算结果进行获取的信号采样电路,ADC量化电路;用于对不同位线上量化出正值数据和负值数据进行累计的减法器,等等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种基于10T-SRAM的带符号乘法运算电路,其特征在于,其具备数据存储功能和乘法运算功能;所述乘法运算电路由8个NMOS管N0、N1、N2、N3、N4、N5、N6、N7;以及2个PMOS管P0、P1构成,电路连接关系如下:
P0、P1和N0~N3构成实现数据存储功能的6T-SRAM单元;其中,P0、N0、P1、N1反相交叉耦合构成包含存储节点Q和QB的锁存结构,N2作为存储节点Q与位线BL间的传输管,N3作为存储节点QB与位线BLB间的传输管;
N4~N7构成计算单元;其中,N4和N6的栅极连接在存储节点Q上,N4的漏极与N5的漏极相连;N6的漏极与N7的漏极相连;N4的源极与位线BL相连;N6的源极连接位线BLB;N5、N7的源极接VSS;N5的栅极连接正相输入字线IN+;N5的栅极连接负相输入字线IN-
将6T-SRAM单元中存储节点的值作为权重,通过正相输入字线IN+或负相输入字线IN-输入表征多比特数的不同脉宽的输入信号,则位线BL或BLB上的放电电压用于表征单比特权重与多比特数间的乘积;其实现带符号数与单比特权重间的乘法运算的策略如下:
S01:在6T-SRAM单元的存储节点中预存表征单比特权重的值;
S02:将带符号的单比特或多比特数分为符号位部分和无符号数部分,根据无符号数部分的数值大小生成不同脉宽的输入信号,并根据符号位选择将输入信号的输入路径:
(1)当带符号的单比特或多比特数为正值时,将输入信号输入到正相输入字线IN+上;
(2)当带符号的单比特或多比特数为负值时,将输入信号输入到负相输入字线IN-上;
S03:对位线BL或BLB的放电电压进行信号采样和量化,根据放电电压生成乘积结果的数值,并根据信号来源确定乘积结果的符号位:
(1)当采集到的放电电压来自于位线BL时,表示乘积结果的符号为+;
(2)当采集到的放电电压来自于位线BLB时,表示乘积结果的符号为-。
2.如权利要求1所述的基于10T-SRAM的带符号乘法运算电路,其特征在于:其实现无符号数与单比特权重间的乘法运算的策略如下:
S1:在6T-SRAM单元的存储节点中预存表征单比特权重的值;
S2:将单比特或多比特的无符号数编码为不同脉宽的输入信号,并通过正相输入字线IN+或负相输入字线IN-输入到计算单元中;
S3:对位线BL或BLB的放电电压进行信号采样和量化,并根据放电电压生成乘积结果。
3.如权利要求2所述的基于10T-SRAM的带符号乘法运算电路,其特征在于:在逻辑运算功能中,当存储节点Q为高电平、QB为低电平,表征单比特权重为“1”;当存储节点Q为低电平、QB为高电平,表征单比特权重为“0”。
4.如权利要求1所述的基于10T-SRAM的带符号乘法运算电路,其特征在于:所述6T-SRAM单元部分的电路连接关系如下:P0、P1的源极接电源VDD,P0、N0、N2的漏极与P1、N1的栅极电连接,并作为存储节点Q;P1、N1、N3的漏极与P0、N0的栅极电连接,并作为存储节点QB;N2、N3的栅极接字线WL;N2的源极接位线BL,N3的源极接位线BLB。
5.如权利要求4所述的基于10T-SRAM的带符号乘法运算电路,其特征在于,在数据存储功能中,利用传输管N2、N3和计算单元N4~N7实现写分离,N2、N3作为写通道,N4~N7作为读通道;且N4、N5和N6、N7又分别构成读通道中的两个独立的数据读取端口。
6.如权利要求4所述的基于10T-SRAM的带符号乘法运算电路,其特征在于:其实现数据保持操作的逻辑如下:
将字线WL、正相输入字线IN+和负相输入字线IN-均保持低电平,P0、N0、P1、N1构成的锁存结构处于锁存状态,实现对存储节点Q、QB的数据保持;
其实现数据写入操作的逻辑如下:
将正相输入字线IN+和负相输入字线IN-均保持低电平,字线WL拉高为高电平;根据需要写入的数据加载到位线BL、BLB上,进而打破P0、N0、P1、N1构成的锁存结构的锁存状态,将数据写入存储节点Q、QB内;
其实现数据读取操作的逻辑如下:
在数据保持模式下,选择任意一侧的数据读取路径,然后将对应侧的位线BL或BLB预充到高电平,并将对应侧的字线IN+或IN-置为高电平,最后根据位线电平状态读取出锁存结构中与位线相连的存储节点存储的数据。
7.一种基于10T-SRAM的乘累加运算电路,其特征在于:其包括由N×M个如权利要求1-6中任意一项所述的基于10T-SRAM的带符号乘法运算电路作为基本单元,并按阵列排布后构成的N行M列的存算阵列;在所述存算阵列中,同列中的各个基本单元共享位线BL、BLB;同行的各个基本单元共享字线WL、IN+和 IN-
在存算阵列的前M-1列中,相邻两列的位线BL之间,以及相邻两列的位线BLB之间分别连接有一个开关K;在第M-1和第M列中,前一列BL和后一列BLB之间,以及前一列BLB和后一列BL之间连接有一个开关K。
8.如权利要求7所述的基于10T-SRAM的乘累加运算电路,其特征在于:其执行乘累加运算时,存算阵列中每一行作为执行乘法运算的基本单位,整个存算阵列实现对每一行的乘法运算结果进行累加;乘累加运算的策略如下:
S001:将存算阵列中所有位线间的开关K打开,并将存算阵列的第一列做为冗余分权列,全部预存数据“0”;
S002:依次使能字线WL选中每一行,并将各行的乘法运算的其中一个操作数按照二进制补码的形式按位预存到各个10T-SRAM的存储节点中;
预存过程中,存储阵列的左侧为二进制补码的低位,右侧为二进制补码的高位;
S003:将各行的字线WL置为低电平,并将各列的BL和BLB预充到高电平;
S004:将各行的乘法运算的另一个操作数以不同脉宽的输入信号的形式输入到对应IN+或IN-中,使得对应的位线BL或BLB放电;
S005:按照从左到右的顺序轮流闭合存算阵列中相邻两列的位线BL间和BLB间的两个开关;通过位线上的电荷再分配;将乘累加运算结果的正相部分和负相部分分别累加到最后一列的位线BL和BLB上;
S006:通过ADC分别量化存储阵列中最后一列的BL和BLB上的数值,并将量化后的正相数值减去负相数值得到最终的乘累加运算结果。
9.一种CIM芯片,其特征在于:其集成有如权利要求7或8中所述基于10T-SRAM的乘累加运算电路,以及用于配合所述基于10T-SRAM的乘累加运算电路实现数据存储和逻辑运算功能的外围电路。
CN202410094858.2A 2024-01-24 2024-01-24 基于10t-sram的带符号乘法与乘累加运算电路 Active CN117608519B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410094858.2A CN117608519B (zh) 2024-01-24 2024-01-24 基于10t-sram的带符号乘法与乘累加运算电路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410094858.2A CN117608519B (zh) 2024-01-24 2024-01-24 基于10t-sram的带符号乘法与乘累加运算电路

Publications (2)

Publication Number Publication Date
CN117608519A CN117608519A (zh) 2024-02-27
CN117608519B true CN117608519B (zh) 2024-04-05

Family

ID=89953901

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410094858.2A Active CN117608519B (zh) 2024-01-24 2024-01-24 基于10t-sram的带符号乘法与乘累加运算电路

Country Status (1)

Country Link
CN (1) CN117608519B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118280410B (zh) * 2024-05-24 2024-07-30 安徽大学 10t1c-sram存算单元、存算阵列、及存算电路
CN118312468B (zh) * 2024-06-07 2024-08-16 安徽大学 一种带符号乘法的存内运算电路及cim芯片

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110942792A (zh) * 2019-11-29 2020-03-31 天津大学 一种应用于存算一体芯片的低功耗低泄漏sram
CN111431536A (zh) * 2020-05-18 2020-07-17 深圳市九天睿芯科技有限公司 子单元、mac阵列、位宽可重构的模数混合存内计算模组
CN112951294A (zh) * 2019-11-27 2021-06-11 台湾积体电路制造股份有限公司 计算设备以及计算方法
US11176991B1 (en) * 2020-10-30 2021-11-16 Qualcomm Incorporated Compute-in-memory (CIM) employing low-power CIM circuits employing static random access memory (SRAM) bit cells, particularly for multiply-and-accumluate (MAC) operations
CN113838505A (zh) * 2021-08-26 2021-12-24 季华实验室 一种基于cam的内存条目计数电路及内存装置
CN114400031A (zh) * 2022-03-24 2022-04-26 之江实验室 一种补码映射的rram存算一体芯片及电子设备
WO2022192744A1 (en) * 2021-03-12 2022-09-15 William Marsh Rice University Charge-domain in-memory computing circuit
CN115394336A (zh) * 2022-06-02 2022-11-25 浙江大学 一种存算fpga架构
CN115810374A (zh) * 2022-11-28 2023-03-17 安徽大学 存储电路、具有bcam寻址和逻辑运算功能的存内计算电路
CN115938430A (zh) * 2022-12-13 2023-04-07 安徽大学 一种基于分支电流的存内累乘计算电路
CN116126779A (zh) * 2023-02-21 2023-05-16 安徽大学 一种9t存算电路、乘累加运算电路、存内运算电路及芯片
CN116129966A (zh) * 2022-12-30 2023-05-16 安徽大学 一种10t-sram单元、基于该种10t-sram单元的运算电路结构及芯片
CN116821048A (zh) * 2022-03-22 2023-09-29 华为技术有限公司 一种存算一体芯片及其操作方法
CN117056277A (zh) * 2023-08-18 2023-11-14 安徽大学 基于读写分离sram配置自适应扫描adc的乘累加存内计算电路
CN117271436A (zh) * 2023-11-21 2023-12-22 安徽大学 基于sram的电流镜互补存内计算宏电路、及芯片

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220391128A1 (en) * 2021-06-07 2022-12-08 Intel Corporation Techniques to repurpose static random access memory rows to store a look-up-table for processor-in-memory operations
US20230315389A1 (en) * 2022-04-04 2023-10-05 Taiwan Semiconductor Manufacturing Company, Ltd. Compute-in-memory cell

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112951294A (zh) * 2019-11-27 2021-06-11 台湾积体电路制造股份有限公司 计算设备以及计算方法
CN110942792A (zh) * 2019-11-29 2020-03-31 天津大学 一种应用于存算一体芯片的低功耗低泄漏sram
CN111431536A (zh) * 2020-05-18 2020-07-17 深圳市九天睿芯科技有限公司 子单元、mac阵列、位宽可重构的模数混合存内计算模组
US11176991B1 (en) * 2020-10-30 2021-11-16 Qualcomm Incorporated Compute-in-memory (CIM) employing low-power CIM circuits employing static random access memory (SRAM) bit cells, particularly for multiply-and-accumluate (MAC) operations
WO2022192744A1 (en) * 2021-03-12 2022-09-15 William Marsh Rice University Charge-domain in-memory computing circuit
CN113838505A (zh) * 2021-08-26 2021-12-24 季华实验室 一种基于cam的内存条目计数电路及内存装置
CN116821048A (zh) * 2022-03-22 2023-09-29 华为技术有限公司 一种存算一体芯片及其操作方法
CN114400031A (zh) * 2022-03-24 2022-04-26 之江实验室 一种补码映射的rram存算一体芯片及电子设备
CN115394336A (zh) * 2022-06-02 2022-11-25 浙江大学 一种存算fpga架构
CN115810374A (zh) * 2022-11-28 2023-03-17 安徽大学 存储电路、具有bcam寻址和逻辑运算功能的存内计算电路
CN115938430A (zh) * 2022-12-13 2023-04-07 安徽大学 一种基于分支电流的存内累乘计算电路
CN116129966A (zh) * 2022-12-30 2023-05-16 安徽大学 一种10t-sram单元、基于该种10t-sram单元的运算电路结构及芯片
CN116126779A (zh) * 2023-02-21 2023-05-16 安徽大学 一种9t存算电路、乘累加运算电路、存内运算电路及芯片
CN117056277A (zh) * 2023-08-18 2023-11-14 安徽大学 基于读写分离sram配置自适应扫描adc的乘累加存内计算电路
CN117271436A (zh) * 2023-11-21 2023-12-22 安徽大学 基于sram的电流镜互补存内计算宏电路、及芯片

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
一种准循环低密度校验码部分并行编码结构设计;赵岭;张晓林;;航空学报;20090115(第01期);第109-113页 *
基于静态随机存取存储器的存内计算研究进展;蔺智挺等;《电子与信息学报》;20211122;第4041-4056页 *
高可靠性的读写分离14T存储单元设计;张景波等;《电子与封装》;20220120;第1-7页 *

Also Published As

Publication number Publication date
CN117608519A (zh) 2024-02-27

Similar Documents

Publication Publication Date Title
CN117608519B (zh) 基于10t-sram的带符号乘法与乘累加运算电路
US10748603B2 (en) In-memory multiply and accumulate with global charge-sharing
Zhang et al. Time-domain computing in memory using spintronics for energy-efficient convolutional neural network
CN112558919B (zh) 一种存内计算位单元及存内计算装置
CN110970071B (zh) 低功耗静态随机存取存储器的存储单元及应用
CN116364137A (zh) 一种同侧双位线的8t单元、逻辑运算电路及cim芯片
KR20220110090A (ko) 컴퓨트 인 메모리
CN117636945B (zh) 5bit带符号位的同或与同或累加运算电路、CIM电路
CN116126779A (zh) 一种9t存算电路、乘累加运算电路、存内运算电路及芯片
CN114937470B (zh) 基于多比特sram单元的定点全精度存内计算电路
Zhao et al. NAND-SPIN-based processing-in-MRAM architecture for convolutional neural network acceleration
CN118132034A (zh) 乒乓式乘法单元及重构加法器树的存内计算电路、芯片
CN113345484A (zh) 一种数据运算电路及存算一体芯片
US20230068645A1 (en) Memory device and method for computing-in-memory (cim)
CN115658010A (zh) 一种脉冲宽度调制电路、量化电路、存算电路、芯片
CN112214197B (zh) Sram全加器及多比特sram全加器
Kim et al. SRAM-Based Processing-in-Memory (PIM)
JPS61195015A (ja) 像信号のデイジタルフイルタリング回路装置
Zhang et al. A digital bit-reconfigurable versatile compute-in-memory macro for machine learning acceleration
CN117807021B (zh) 2t-2mtj存算单元和mram存内计算电路
US11935586B2 (en) Memory device and method for computing-in-memory (CIM)
CN118298872B (zh) 输入权重比特位可配置的存内计算电路及其芯片
US20240071429A1 (en) Memory architecture supporting both conventional memory access mode and digital in-memory computation processing mode
CN116913344A (zh) 基于sram的双倍数据存储容量的存内计算方法和装置
Salehi In-memory Bulk Bitwise Logic Operation for Multi-level Cell Non-volatile Memories

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