CN116312670A - 一种9t1c存算电路、乘累加运算电路、存内运算电路、芯片 - Google Patents
一种9t1c存算电路、乘累加运算电路、存内运算电路、芯片 Download PDFInfo
- Publication number
- CN116312670A CN116312670A CN202310161572.7A CN202310161572A CN116312670A CN 116312670 A CN116312670 A CN 116312670A CN 202310161572 A CN202310161572 A CN 202310161572A CN 116312670 A CN116312670 A CN 116312670A
- Authority
- CN
- China
- Prior art keywords
- circuit
- memory
- capacitor
- multiplication
- 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.)
- Pending
Links
- 239000003990 capacitor Substances 0.000 claims abstract description 123
- 238000003860 storage Methods 0.000 claims abstract description 84
- 230000006870 function Effects 0.000 claims abstract description 32
- 230000005540 biological transmission Effects 0.000 claims abstract description 31
- 238000004364 calculation method Methods 0.000 claims abstract description 20
- 238000013139 quantization Methods 0.000 claims abstract description 12
- 238000006880 cross-coupling reaction Methods 0.000 claims abstract description 7
- 238000000034 method Methods 0.000 claims description 26
- 238000006243 chemical reaction Methods 0.000 claims description 19
- 230000008569 process Effects 0.000 claims description 19
- 238000013500 data storage Methods 0.000 claims description 13
- 238000009825 accumulation Methods 0.000 claims description 12
- 230000002457 bidirectional effect Effects 0.000 claims description 8
- 238000004891 communication Methods 0.000 claims description 6
- 238000012546 transfer Methods 0.000 claims description 6
- 230000014759 maintenance of location Effects 0.000 claims description 5
- 238000002360 preparation method Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 18
- 230000006872 improvement Effects 0.000 description 5
- 238000011160 research Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000003321 amplification Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 229910000765 intermetallic Inorganic materials 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002269 spontaneous effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/18—Bit line organisation; Bit line lay-out
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/12—Bit line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, equalising circuits, for bit lines
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Dram (AREA)
Abstract
本发明属于集成电路技术领域,具体涉及一种9T1C存算电路、乘累加运算电路、存内运算电路、芯片。9T1C存算电路具有数据读写保持功能和乘法运算功能;9T1C存算电路由6个NMOS管N0~N5,3个PMOS管P0~P2和1个电容C0构成。电路中的P0、N0、P1、N1构成交叉耦合结构,用于锁存数据;N2和N3作为传输管,各自位于交叉耦合结构左右两侧作为两个存储节点写通路;N4和P2构成传输门;N5作为计算控制端,C0作为传输电压差的电容。乘累加运算电路包括:由9T1C存算电路按列构成的运算阵列、字线组、位线组、输入信号线IL,输出信号线OL、列开关S和量化电路;并进一步构成存内运算电路,本发明相对现有方案提升了存算电路在功耗、稳定性、精度和运算效率等方面的表现。
Description
技术领域
本发明属于集成电路技术领域,具体涉及一种9T1C存算电路,利用9T1C存算电路设计的一种乘累加运算电路,一种基于9T1C-SRAM的存内运算电路以及基于9T1C-SRAM的CIM芯片。
背景技术
随着信息化技术的不断发展,大数据已经融入到人类社会生活的方方面面,这极大提高了社会的生产效率,也为人类的生活带来了便利。信息化和大规模的数据处理任务离不开各类集成电路的算力支持。近些年来,集成电路制程和工艺的快速迭代印证了摩尔定律,也使得芯片的性能不断提升,芯片的数据处理能力也一直呈指数级增长。但是随着芯片制程工艺达到10纳米以下,单一芯片的运算性能已经很难再产生太大的提升,这制约了集成电路的运算性能。另一方面,基于冯诺依曼架构的计算机系统需要分别在处理器和存储器中进行数据运算和存储,并需要在二者间进行数据传输,这种计算机架构也成为制约算力提升的另一因素。在芯片制程工艺短期难以发生革命性突破的背景下,计算机和大数据领域的科学家现在正将越来越多的精力投入突破到冯诺依曼架构的研究项目中。
目前,作为突破冯诺依曼架构的有效策略之一,存内计算(computing in memory,CIM)引起了广泛关注。存内计算将存储器与运算模块合二为一,大幅减少了数据的搬移,进而节省了这部分的时间和能耗开销。目前世界上各大学府的科学家,各大公司的科研团队竞相发力,使得对该领域的研究呈现出百花齐放的繁荣景象。
其中,SRAM由于其高速、低功耗和逻辑电路兼容性好的优点被广泛的用于最接近计算单元的高速缓存。目前基于SRAM的存内计算的研究主要集中在电压域、电流域和电荷域三个部分。标准SRAM单元是基于电压域信号实现数据存储操作的,而电流域计算单元的主要优点是简单性和与标准SRAM单元的兼容性,然而由于固有的非线性问题和接入晶体管的工艺变化问题,这两类器件的计算精度都相对较低。电荷域IMC(IntermetallicCompound)具有更好的计算精度和更高的并行度。计算是在电容上进行的,电容的电流变化比最小尺寸的接入晶体管小得多。同时,基于电荷共享的操作不受晶体管工作区域的影响,可以同时打开更多的电容,从而获得更高的吞吐量和效率增益。但是,基于电荷域SRAM的存储运算电路的设计更加复杂,难度相对较大,所以这一类的电路设计较前两者方案相对较少,并且通常也无法在功耗、数据存储稳定性和精度,以及逻辑运算性能等多方面同时满足用户的需求。
发明内容
为了解决现有基于SRAM的存算电路无法在功耗、稳定性、精度和运算效率等方面实现全面提升的问题,本发明提供一种9T1C存算电路、乘累加运算电路、存内运算电路、芯片。
本发明采用以下技术方案实现:
一种9T1C存算电路,其具有数据读写保持功能和乘法运算功能。9T1C存算电路由6个NMOS管N0~N5,3个PMOS管P0~P2和1个电容C0构成,电路连接关系如下:
P1的栅极、N1的栅极、P0的漏极、N0的漏极、N2的漏极、N4的栅极相连,并作为存储节点Q。P0的栅极、N0的栅极、N1的漏极、P1的漏极、N3的漏极、P2的栅极相连,并作为反向存储节点QB。P0和P1的源极相连并接VDD。N0和N1的源极相连并接VSS。N2和N3的栅极接字线WWL;N5的栅极接字线WLR。N2的源极接在位线BL上;N3和N5的源极接在位线BLB上。N4的漏极和P2的源极相连,并接在位线IL上。N4的源极、P2的漏极、N5的漏极相连并连接在电容C0的右极板,电容C0的左极板连接在位线OL上。
在本发明提供的9T1C存算电路的电路结构中,P0和N0构成一个反相器,P1和N1构成另一个反相器;两个反相器构成交叉耦合结构,进而形成用于存储并保持数据的两个存储节点Q和QB;N2和N3作为传输管,各自位于交叉耦合结构左右两侧作为两个存储节点写通路;N4和P2构成传输门;N5作为计算控制端,C0作为传输电压差的电容。
基于上述电路连接状态,本发明提供的9T1C存算电路在数据读取阶段支持进行单端双向访问。并且9T1C单元在执行乘法运算时既可以完成单比特数间的乘法,也可以完成单比特数与多比特数间的乘法。
作为本发明进一步地改进,9T1C存算电路执行数据读写保持的操作逻辑如下:
一、数据写操作
将字线WLR置为低电平,字线WWL置为高电平;然后,通过位线BL和BLB在存储节点Q和QB中写入待存储数据。
在数据写操作状态下,还可以选择将位线IL和OL均置为高电平,以使得电容两端电压保持为高电平,从而使电容两端无电压差,减少电荷的转移,进而降低器件的功耗。
二、数据保持操作
将字线WLR和WLL置为低电平,位线BL、BLB、IL和OL置为高电平;此时,N2、N3关断,且存储节点Q和QB分别连接N4和P2的栅极。
分析电路可知:在数据保持状态下,NMOS晶体管N2、N3均关断,并且存储节点Q和QB分别连接NMOS晶体管N4和PMOS晶体管P2的栅极。因此,位线BL、BLB、OL和IL均不会对存储节点Q或QB造成影响。PMOS晶体管P0、NMOS晶体管N0、PMOS晶体管P1和NMOS晶体管N1构成的锁存结构将可以稳定地锁存存储节点Q和QB的数据。
三、数据读操作
本发明提供的9T1C存算电路是一个具有单端双向访问功能的器件,即支持采用两种不同的方式读取存储节点的数据。具体地,本发明提供的9T1C存算电路支持的数据读操作分为如下的列读模式和行读模式:
1、在列读模式时,将字线WWL置为低电平,字线WLR置为高电平,位线BL、BLB和OL置为高电平,位线IL置为低电平,QB节点的读操作结果体现在位线BLB上:
(1)如果位线BLB可以保持高电平,则表示节点QB存储的数据为1,节点Q存储的数据为0。
(2)如果位线BLB的电压下降,则代表节点QB存储的数据为0,节点Q存储的数据为1。
2、在行读模式时,将字线WWL置为低电平,字线WLR置为高电平,位线BL、BLB和OL置为高电平,位线IL置为低电平,Q节点的读操作结果体现在位线IL上:
(1)如果位线IL可以保持低电平,则表示节点Q存储的数据为0,相应地,节点QB存储的数据为1。
(2)如果位线IL的电压升高,则代表节点Q存储的数据为1,相应地,节点QB存储的数据为0。
作为本发明进一步地改进,9T1C存算电路执行乘法运算包括单乘单模式和单乘多模式两种,具体的操作逻辑如下:
(1)在数据写入模式下,将第一操作数写入到9T1C存算电路的存储节点Q。
此外,需要强调的是,第一操作数的写入操作并非必须。因为对于每个9T1C存算电路而言,在上电后,存储节点Q或QB中必然已经存储有数据,本发明还可以直接选择相应的9T1C存算电路来执行本方案的乘法运算任务,因而无需额外进行数据写入。
(2)对各条信号线进行预充,分别包括:将位线OL置为高电平,IL置为低电平,WLR置为高电平,WWL置为低电平,BLB置为低电平。
(3)将第二操作数通过位线IL输入到9T1C存算电路中。
其中,在单乘单模式下,输入的第二操作数为表征二进制数1或0的高低电平。而在单乘多模式下,第二操作数为由多位二进制数按预设规则进行数模转换后得到的对应的电压值VDAC。
(4)将位线OL悬空,然后获取C0中电荷重新分配后位线OL的当前电压,并将其量化为乘积结果。
其中,在单乘单模式下,位线OL的电压为VDD时表示乘积结果为0,位线OL的电压为0时表示乘积结果为1。而在单乘多模式下,当第一操作数为0时,位线OL的电压为VDD,即乘积结果为0;当第一操作数为1时;位线OL的电压为VDD-VDAC;VDD-VDAC经预设规则的数转换后得到一个多位二进制数,即为乘积。
作为本发明进一步的改进,9T1C存算电路在非运算阶段应进行归零操作,以降低电路的功耗;归零操作的操作逻辑如下:
将字线WWL置为低电平,字线WLR置为高电平,位线BL、BLB、OL、IL置为高电平,通过N5由BLB对电容C0的左极板充电,使电容C0两端电压差清零。
在上述9T1C存算电路,本发明进一步提供一种乘累加运算电路,其包括:运算阵列、字线组、位线组、输入信号线IL,输出信号线OL、列开关S和量化电路。
其中,运算阵列由N个前述的9T1C存算电路按列排布而成。字线组包括N条字线WLL和N条字线WLR。运算阵列中的各个9T1C存算电路均连接一组独立的字线WLL和WLR;字线WLL和WLR用于在乘累加运算前选中各行的9T1C存算电路以便写入乘累加运算的第一操作数。位线组包括1条位线BL和1条位线BLB;同列的所有9T1C存算电路均连接在相同的位线BL、BLB上,位线BL、BLB用于在各个9T1C存算电路中写入乘累加运算的第一操作数。
输入信号线IL的数量为N条;运算阵列中每个9T1C存算电路分别连接一条独立的输入信号线IL,并作为各自运算过程中第二操作数的输入端。输出信号线OL的数量为1条,同列的所有9T1C存算电路均连接在该条输出信号线OL上,OL作为乘累加运算结果的输出端。列开关S连接在输出信号线OL与电源VDD之间,用于控制输出信号线OL与电源VDD的连通状态。
量化电路连接在输出信号线OL上,用于将输出信号线OL上的电压值转换为一个表征乘累加运算结果的数字量。
作为本发明进一步的改进,该型乘累加运算电路执行乘累加运算的操作逻辑如下:
(1)准备阶段:
对运算阵列中的所有9T1C存算电路进行归零操作,以保证运算阵列中所有电容C0的初始状态相同,即电容C0的右极板电压Vc保持一致。
(2)预存阶段:
依次将各行的字线WLR置为低电平,字线WWL置为高电平。然后,通过位线BL和BLB在各行的9T1C存算电路中的存储节点中写入各自的第一操作数。
(3)预充阶段:
将列开关S闭合,输出信号线OL连接VDD,使各个电容C0的左极板预充为VDD;WLR置于高电平,BLB预充为低电平,使各个电容C0右极板预充为“0”;位线IL预充为低电平。
(4)乘积运算阶段
通过输入信号线IL向各个9T1C存算电路输入经数模转换后的输入电压VDAC。此时WLR置为低电平,列开关S依旧闭合,各个9T1C存算电路中的电容C0两端的电压差根据存储单元Q值发生如下改变:
a.当Q=“1”时,传输门打开,输入值通过传输门输入到电容C0的右极板,电容C0的左极板电压保持为VDD,电容C0的右极板电压保持为VDAC;此时,电容C0的两端电压差为VDD-VDAC。
b.当Q=“0”时,传输门关闭;电容C0的左极板电压保持为VDD,电容C0的右极板电压为0;此时,电容C0的两端电压差仍保持为VDD。
由此可知:各个9T1C存算电路的乘法结果均累积到了各自电容C0的右极板上。
(5)累加运算阶段:
将列开关S断开,使输出信号线OL悬空,即电容左极板悬空。然后,将WLR置为高电平,位线IL置为低电平,使各行中电容C0左极板电压根据存储单元Q值发生如下改变;
a.当Q=“1”时,传输门打开,电容C0的右极板电压值被位线IL拉低为0,此时由于电容C0的两端电压差不能突变,并且乘法运算阶段电容C0的电压差为VDD-VDAC,所以电容C0的左极板电压值即变为VDD-VDAC。
b.当Q=“0”时,传输门关闭,电容C0的两端电压差仍保持VDD,所以电容C0的左极板电压保持VDD。
此时,每个9T1C存算电路的乘法结果体现为电源电压VDD减去电容C0左极板电压的值;由于一列的位线OL共享,所以各个9T1C存算电路中电容C0的左极板电荷进行共享,在位线OL上得到最后乘累加结果对应的模拟量。
(6)量化输出
按照预设的模数转换规则将OL的电压值转换为对应数字量,即为最终的乘累加运算结果。
本发明还包括一种基于9T1C-SRAM的存内运算电路,其具有数据读写保持功能、乘法运算功能和乘累加运算功能。并在数据读阶段支持进行单端双向访问;而电路支持的乘法和乘累加运算功能包括单比特乘法和多比特乘法。具体地,按照功能划分,本发明提供的基于9T1C-SRAM的存内运算电路包括:存算阵列、字线组、位线组、输入信号线组、输出信号线组、字线驱动器、译码器、预充电路、时序控制模块、模式切换、读写控制电路、开关控制电路、输入模块,以及量化输出电路。
其中,存算阵列由N×M个前述的9T1C存算电路按N行M列的阵列方式排布而成。字线组包括N条字线WLL和N条字线WLR。存算阵列中的同行的各个9T1C存算电路均连接在同一组字线WLL和WLR上。位线组包括M条位线BL和M条位线BLB。存算阵列中同列的所有9T1C存算电路均连接在相同的位线BL、BLB上;输入信号线组包括N条输入信号线IL;存算阵列中同行的所有9T1C存算电路均连接在一条输入信号线IL。输出信号线组包括M条输出信号线OL。存算阵列中同列的所有9T1C存算电路均连接在一条输出信号线OL上。
字线驱动器用于控制各条字线WLR和WWL的开启。译码器与字线驱动器连接,译码器用于将地址信号译码后传入到字线驱动器。预充电路用于对位线BL、BLB和输出信号线OL进行预充操作;时序控制模块用于生成执行数据存储任务或执行乘法运算和乘累加运算过程中所需的各个时钟信号。模式切换用于切换存内运算电路的工作模式,存内运算电路的工作模式包括数据存储模式和逻辑运算模式。读写控制电路用于对存内运算电路执行数据读写操作的过程进行控制。
开关控制电路包括M个列开关S,每个列开关S分别连接在其中一条输出信号线OL与电源VDD之间,用于控制该输出信号线OL与电源VDD的连通状态。输入模块在乘法运算或乘累加运算阶段对第二操作数进行数模转换,然后通过输入信号线IL输入到对应的9T1C存算电路中。
量化输出电路连接在输出信号线OL、位线BLB和输入信号线IL上;量化输出电路包括数据读部分和运算输出部分。数据读部分用于输出各存储节点的存储数据;运算输出部分用于对OL的电压进行模数转换,输出对应的乘法运算结果或乘累加运算结果。
作为本发明进一步的改进,在存算阵列中,各个9T1C存算电路作为实现数据存储功能和乘法运算功能的基本单元。同一列中的所有9T1C存算电路与列开关S共同构成执行乘累加运算的基本单元。该基于9T1C-SRAM的存内运算电路中各列的9T1C存算电路支持并行执行乘累加运算。
本发明还包括一种基于9T1C-SRAM的CIM芯片,其由如前述的基于9T1C-SRAM的存内运算电路封装而成。
本发明提供的技术方案,具有如下有益效果:
本发明设计的9T1C-SRAM器件是一种电荷域型SRAM器件,该器件具有常规的数据读写和保持性能,并且还可以实现单比特和多比特的乘法运算,是一种性能更优的CIM电路;应用前景更加广阔。
本发明方案提供的电路中,计算过程是在电容上进行的,电容的电流变化比最小尺寸的接入晶体管小得多。同时,基于电荷共享的操作不受晶体管工作区域的影响,可以同时打开更多的电容,从而获得更高的吞吐量和效率增益,可大幅提高乘累加运算的效率和精度。
本发明提供的器件利用电容两端电压不能突变的特点,进行乘法计算和加法计算,提高了线性度和计算精度。该器件可以实现单边计算,并支持无损失等分多位输入,因而具有更高的计算精度和并行度。
本发明提供的9T1C-SRAM从数据存储功能角度看,电路结构简单,具有较低的功耗。并且因为采用读解耦的方式,可以有效解决读破坏问题;提高电路中存储的数据的安全性和稳定性。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例1中提供的一种9T1C存算电路的电路图。
图2为图1的电路在数据读节点采用列读模式时的工作原理图。
图3为图1的电路在数据读节点采用行读模式时的工作原理图。
图4为图1的电路完成0×0=0的单比特乘法运算时的信号状态图。
图5为图1的电路完成0×1=0的单比特乘法运算时的信号状态图。
图6为图1的电路完成1×0=0的单比特乘法运算时的信号状态图。
图7为图1的电路完成1×1=1的单比特乘法运算时的信号状态图。
图8为图1中的电路执行多比特乘法运算时在不同阶段下的操作时序图。
图9为图1的电路完成0×V=0的多比特乘法运算时的信号状态图。
图10为图1的电路完成1×V=V的多比特乘法运算时的信号状态图。
图11为图8中两种不同的多比特乘法运算执行过程中各信号的波形图。
图12为本发明实施例2中提供的一种乘累加运算电路的模块示意图。
图13为本发明实施例2中利用4×1的乘累加运算阵列执行运算任务时的状态图。
图14本发明实施例3中提供的一种基于9T1C-SRAM的存内运算电路的架构图。
图15为本发明实施例3中利用4×4的乘累加运算阵列执行并行乘累加运算任务时的状态图。
图16为图15对应的运算任务执行阶段各信号的波形图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步地详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
实施例1
本实施例提供一种9T1C存算电路,其具有数据读写保持功能和乘法运算功能。如图1所示,本实施例提供的9T1C存算电路由6个NMOS管N0~N5,3个PMOS管P0~P2和1个电容C0构成,电路连接关系如下:
P1的栅极、N1的栅极、P0的漏极、N0的漏极、N2的漏极、N4的栅极相连,并作为存储节点Q。P0的栅极、N0的栅极、N1的漏极、P1的漏极、N3的漏极、P2的栅极相连,并作为反向存储节点QB。P0和P1的源极相连并接VDD。N0和N1的源极相连并接VSS。N2和N3的栅极接字线WWL;N5的栅极接字线WLR。N2的源极接在位线BL上;N3和N5的源极接在位线BLB上。N4的漏极和P2的源极相连,并接在位线IL上。N4的源极、P2的漏极、N5的漏极相连并连接在电容C0的右极板,电容C0的左极板连接在位线OL上。
在本实施例提供的9T1C存算电路的电路结构中,P0和N0构成一个反相器,P1和N1构成另一个反相器;两个反相器构成交叉耦合结构,进而形成用于存储并保持数据的两个存储节点Q和QB。N2和N3作为传输管,各自位于交叉耦合结构左右两侧,并作为两个存储节点写通路。N4和P2构成传输门;N5作为计算控制端,C0作为传输电压差的电容。
基于上述电路连接状态,本实施例提供的9T1C存算电路在数据读阶段支持进行单端双向访问。并且9T1C单元在执行乘法运算时既可以完成单比特数间的乘法,也可以完成单比特数与多比特数间的乘法。
其中,9T1C存算电路执行数据读写保持的操作逻辑如下:
一、数据写操作
将字线WLR置为低电平,字线WWL置为高电平;然后,通过位线BL和BLB在存储节点Q和QB中写入待存储数据。
在数据写操作状态下,还可以选择将位线IL和OL均置为高电平,以使得电容两端电压保持为高电平,从而使电容两端无电压差,减少电荷的转移,进而降低器件的功耗。
二、数据保持操作
将字线WLR和WLL置为低电平,位线BL、BLB、IL和OL置为高电平;此时,N2、N3关断,且存储节点Q和QB分别连接N4和P2的栅极。
分析电路可知:在数据保持状态下,NMOS晶体管N2、N3均关断,并且存储节点Q和QB分别连接NMOS晶体管N4和PMOS晶体管P2的栅极。因此,位线BL、BLB、OL和IL均不会对存储节点Q或QB造成影响。PMOS晶体管P0、NMOS晶体管N0、PMOS晶体管P1和NMOS晶体管N1构成的锁存结构将可以稳定地锁存存储节点Q和QB的数据。
三、数据读操作
本实施例提供的9T1C存算电路是一个具有单端双向访问功能的器件,即支持采用两种不同的方式读取存储节点的数据。具体地,本发明提供的9T1C存算电路支持的数据读操作分为如下的列读模式和行读模式:
1、在列读模式下,将字线WWL置为低电平,字线WLR置为高电平,位线BL、BLB和OL置为高电平,位线IL置为低电平,QB节点的读操作结果体现在位线BLB上:
(1)如果位线BLB可以保持高电平,则表示节点QB存储的数据为1,节点Q存储的数据为0。
(2)如果位线BLB的电压下降,则代表节点QB存储的数据为0,节点Q存储的数据为1。
以下结合图2对列读模式进一步进行说明。在图2中,9T1C存算电路的存储节点Q中存储的数据为“1”,即存储节点Q为高电平,QB为低电平。在列读操作开始时,位线BL和BLB预充电至高电平,字线WWL置为低电平,字线WLR置为高电平,NMOS晶体管N4、N5和PMOS晶体管P2被开启。则位线BLB会通过传输管N5和传输门N4和P2向位线IL放电。此时,位线BLB上的电压下降,经过模拟数字转换器ADC放大后,读出结果为“0”。也就是说:BLB读出存储节点QB此时存储的数据为“0”,相应地,存储节点Q中,存储的数据为“1”。这与存储节点中实际存储的数据相符。
相反地,若列读操作前存储单元存储节点Q中存储的数据为“0”,即Q为低电平,QB为高电平。那么传输门N4和P2则不会被开启,BLB仍然保持为高电平,输出结果为QB的值为“1”,相应的Q的值为“0”。
2、在行读模式下,将字线WWL置为低电平,字线WLR置为高电平,位线BL、BLB和OL置为高电平,位线IL置为低电平,Q节点的读操作结果体现在位线IL上:
(1)如果位线IL可以保持低电平,则表示节点Q存储的数据为0,相应地,节点QB存储的数据为1。
(2)如果位线IL的电压升高,则代表节点Q存储的数据为1,相应地,节点QB存储的数据为0。
以下结合图3对列读模式进一步进行说明。在图3中,9T1C存算电路的存储节点Q中存储的数据为“1”,即:存储节点Q为高电平,QB为低电平。在行读操作开始时,位线BL和BLB预充电至高电平,字线WWL置为低电平,字线WLR置为高电平,NMOS晶体管N4、N5和PMOS晶体管P2被开启,BLB通过传输管N5和传输门N4和P2对IL充电,位线IL上的电压被拉高,经过模拟数字转换器ADC放大后,读出存储节点Q中存储的数据为“1”,相应地,存储节点QB的值为“0”。
相反地,若行读操作前存储单元存储节点Q中存储的数据为“0”。即:Q为低电平,QB为高电平,那么传输门N4和P2则不会被开启,IL仍然保持为低电平,输出结果为Q的值为“0”,相应的QB的值为“1”。
四、乘法运算
本实施例提供的9T1C存算电路具有可以执行乘法运算的功能。特别地,该型9T1C存算电路支持的乘法运算包括单乘单模式和单乘多模式两种,具体的操作逻辑如下:
(1)在数据写入模式下,将第一操作数写入到9T1C存算电路的存储节点Q。
此外,需要强调的是,第一操作数的写入操作并非必须。因为对于每个9T1C存算电路而言,在上电状态下,存储节点Q或QB中必然已经存储有数据,本发明还可以直接选择相应的9T1C存算电路来执行本方案的乘法运算任务,因而无需额外进行数据写入。
(2)对各条信号线线进行预充,分别包括:将位线OL置为高电平,IL置为低电平,WLR置为高电平,WWL置为低电平,BLB置为低电平。
(3)将第二操作数通过位线IL输入到9T1C存算电路中。
其中,在单乘单模式下,输入的第二操作数为表征二进制数1或0的高低电平。而在单乘多模式下,第二操作数为由多位二进制数按预设规则进行数模转换后得到的对应的电压值VDAC。
(4)将位线OL悬空,然后获取C0中电荷重新分配后位线OL的当前电压,并将其量化为乘积结果。
其中,在单乘单模式下,位线OL的电压为VDD时表示乘积结果为0,位线OL的电压为0时表示乘积结果为1。而在单乘多模式下,当第一操作数为0时,位线OL的电压为VDD,即乘积结果为0;当第一操作数为1时,位线OL的电压为VDD-VDAC;VDD-VDAC经预设规则的数转换后得到一个多位二进制数,即为乘积。
以下分别以单比特乘法和多比特乘法为例,对本实施例9T1C存算电路执行乘法运算的过程进行解释说明:
在本实施例中,9T1C存算电路执行单比特数和单比特数间的乘法运算的四种状态分别如图4-7所示。
在图4中,9T1C存算电路预先已经完成了第一操作数的预存,即Q=0,在这种状态下,如果位线IL的输入为低电平,则代表第二操作数为0。运算开始前,将OL预充至高电平,然后在运算阶段保持OL悬空。此时,由于Q=0,传输门N4和P2未导通,则OL最终仍然保持高电平VDD,将OL的高电平状态定义为0,则乘积结果为0,实现的乘法运算为0×0=0。
在图5中,9T1C存算电路预先已经完成了第一操作数的预存,即Q=0,在这种状态下,如果位线IL的输入为高电平VDD,则代表第二操作数为1。运算开始前,将OL预充至高电平,然后在运算阶段保持OL悬空。此时,由于Q=0,传输门N4和P2未导通,则OL最终仍然保持高电平VDD,将OL的高电平状态定义为0,则乘积结果为0,实现的乘法运算为0×1=0。
在图6中,9T1C存算电路预先已经完成了第一操作数的预存,即Q=1,在这种状态下,如果位线IL的输入为低电平,则代表第二操作数为0。运算开始前,将OL预充至高电平,然后在运算阶段保持OL悬空。此时,由于Q=1,传输门N4和P2导通,使位线IL与电容右极板连通,使电容右极板电压值保持为低电平,则OL最终仍然保持高电平VDD,将OL的高电平状态定义为0,则乘积结果为0,实现的乘法运算为1×0=0。
在图7中,9T1C存算电路预先已经完成了第一操作数的预存,即Q=1,在这种状态下,如果位线IL的输入为高电平VDD,则代表第二操作数为1。运算开始前,将OL预充至高电平,然后在运算阶段保持OL悬空。此时,由于Q=1,传输门N4和P2导通,使位线IL与电容右极板连通,从而使电容右极板电压值变为高电平,则OL将放电至低电平,将OL的低电平状态定义为1,则乘积结果为1,实现的乘法运算为1×1=1。
综上所述:图1中的9T1C存算电路在执行单比特乘法运算时的真值表如下表所示:
表1:本实施例中9T1C存算电路的单比特乘法运算真值表
在本实施例中,9T1C存算电路执行单比特数和多比特数间的乘法运算的的运算过程可以结合图8来进行说明,图8中左侧部分为以1bit的数字“1”为第一操作数,VDAC(多比特数对应的模拟量)为第二操作数的乘法运算。右侧部分则是以1bit的数字“0”为第一操作数,VDAC为第二操作数的乘法运算的乘法运算。运算过程大致分为三个阶段:预充阶段闭合列开关S,将OL预充至高电平;输入阶段将VDAC通过输入信号线IL输入到9T1C存算电路;而计算阶段则将IL重新置为低电平,并断开列开关S。
具体地,0乘以多比特数的运算过程可结合图8中的右侧部分和图9。在图9中,9T1C存算电路预先已经完成了第一操作数的预存,即Q=0。然后,对于任意一个多位二进制数,都可以按照一个特定编码规则转换为一个对应的模拟电位VDAC;然后将该模拟电位VDAC通过位线IL输入到9T1C存算电路中作为第二操作数。运算开始前。将OL预充至高电平,然后在运算阶段保持OL悬空。此时,由于Q=0,传输门N4和P2未导通,则OL将仍保持高电平VDD,将OL的低高电平VDD状态定义为0,则代表乘积结果为0,实现的乘法运算为0×V=0。这里“V”用来表示任意一个多位二进制数。即:当第一操作数为0时,无论第二操作数为多少,乘积结果都为0。
具体地,1乘以多比特数的运算过程可结合图8中的左侧部分和图10。在图10中,9T1C存算电路预先已经完成了第一操作数的预存,即Q=1。然后,对于任意一个多位二进制数数,都可以按照一个特定编码规则转换为一个对于的模拟电位VDAC;然后将该模拟电位VDAC通过位线IL输入到9T1C存算电路中作为第二操作数。运算开始前。将OL预充至高电平,然后在运算阶段保持OL悬空。此时,由于Q=1,传输门N4和P2导通,使位线IL与电容右极板连通,从而使电容右极板电压值上升为VDAC,则OL的电位将根据输入的IL的值而下降为VDD-VDAC;此时通过一个特点的模数转换规则,可以将VDD-VDAC转换与输入的第二操作数相同的数字量。即实现了乘法运算1×V=V,即:当第一操作数为1时,无论第二操作数为多少,乘积结果都为第二操作数。
其中,图8中两种不同的单比特乘多比特数的运算过程中的信号时序图如图11所示。
综上所述:图1中的9T1C存算电路在执行多比特乘法运算时的真值表如下表所示:
表2:本实施例中9T1C存算电路的多比特乘法运算真值表
至此,可以发现:本实施例提供的9T1C存算电路具有完整的数据存储功能,并且可以执行全功能的乘法运算操作,包括单比特乘法和多比特乘法。
此外,在本实施例提供的9T1C存算电路中,考虑到电容C0的两侧极板在非运算操作下如果存在自发的电荷转移,会造成器件的功耗升高。因此,在非运算阶段,9T1C存算电路应主动执行归零操作,以降低电路的功耗。归零操作的操作逻辑如下:
将字线WWL置为低电平,字线WLR置为高电平,位线BL、BLB、OL、IL置为高电平,通过N5由BLB对电容C0的左极板充电,使电容C0两端电压差清零。
实施例2
在实施例1中提供的9T1C存算电路的基础上,本实施例进一步提供了一种乘累加运算电路。如图12所示,按照功能模块划分,本实施例的乘累加运算电路包括:运算阵列、字线组、位线组、输入信号线IL,输出信号线OL、列开关S和量化电路。
其中,运算阵列由N个如实施例1的9T1C存算电路按列排布而成。字线组包括N条字线WLL和N条字线WLR。运算阵列中的各个9T1C存算电路均连接一组独立的字线WLL和WLR;字线WLL和WLR用于在乘累加运算前选中各行的9T1C存算电路以便写入乘累加运算的第一操作数。位线组包括1条位线BL和1条位线BLB;同列的所有9T1C存算电路均连接在相同的位线BL、BLB上,位线BL、BLB用于在各个9T1C存算电路中写入乘累加运算的第一操作数。
输入信号线IL的数量为N条;运算阵列中每个9T1C存算电路分别连接一条独立的输入信号线IL,并作为各自运算过程中第二操作数的输入端。输出信号线OL的数量为1条,同列的所有9T1C存算电路均连接在该条输出信号线OL上,OL作为乘累加运算结果的输出端。列开关S连接在输出信号线OL与电源VDD之间,用于控制输出信号线OL与电源VDD的连通状态。
量化电路连接在输出信号线OL上,用于将输出信号线OL上的电压值转换为一个表征乘累加运算结果的数字量。
该型乘累加运算电路执行乘累加运算的操作逻辑如下:
(1)准备阶段:
对运算阵列中的所有9T1C存算电路进行归零操作,以保证运算阵列中所有电容C0的初始状态相同,即电容C0的右极板电压Vc保持一致。
(2)预存阶段:
依次将各行的字线WLR置为低电平,字线WWL置为高电平。然后,通过位线BL和BLB在各行的9T1C存算电路中的存储节点中写入各自的第一操作数。
(3)预充阶段:
将列开关S闭合,输出信号线OL连接VDD,使各个电容C0的左极板预充为VDD;WLR置于高电平,BLB预充为低电平,使各个电容C0右极板预充为“0”;位线IL预充为低电平。
(4)乘积运算阶段
通过输入信号线IL向各个9T1C存算电路输入经数模转换后的输入电压VDAC。此时WLR置为低电平,列开关S依旧闭合,各个9T1C存算电路中的电容C0两端的电压差根据存储单元Q值发生如下改变:
a.当Q=“1”时,传输门打开,输入值通过传输门输入到电容C0的右极板,电容C0的左极板电压保持为VDD,电容C0的右极板电压保持为VDAC;此时,电容C0的两端电压差为VDD-VDAC。
b.当Q=“0”时,传输门关闭,电容C0的左极板电压保持为VDD,电容C0的右极板电压为0;此时,电容C0的两端电压差仍保持为VDD。
由此可知:各个9T1C存算电路的乘法结果均累积到了各自电容C0的右极板上。
(5)累加运算阶段:
将列开关S断开,使输出信号线OL悬空,即电容左极板悬空。然后,将WLR置为高电平,位线IL置为低电平,使各行中电容C0左极板电压根据存储单元Q值发生如下改变;
a.当Q=“1”时,传输门打开,电容C0的右极板电压值被位线IL拉低为0,此时由于电容C0的两端电压差不能突变,并且乘法运算阶段电容C0的电压差为VDD-VDAC,所以电容C0的左极板电压值即变为VDD-VDAC。
b.当Q=“0”时,传输门关闭,电容C0的两端电压差仍保持VDD,所以电容C0的左极板电压保持VDD。
此时,每个9T1C存算电路的乘法结果体现为电源电压VDD减去电容C0左极板电压的值;由于一列的位线OL共享,所以各个9T1C存算电路中电容C0的左极板电荷进行共享,在位线OL上得到最后乘累加结果对应的模拟量。
(6)量化输出
按照预设的模数转换规则将OL的电压值转换为对应数字量,即为最终的乘累加运算结果。
为了验证本实施例提供的乘累加运算电路的运算性能,以下结合图13的一个由四个9T1C存算电路构成的4×1阵列,对乘累加运算电路具体的运算效果进行说明。在图13中,从上至下的四个9T1C存算电路的存储值(第一操作数)依次为1、0、0、0;各个9T1C存算电路输入第二操作数分别为1.2V,0.8V,0.8V,0V。
因此,本次输入的理想运算结果为1.2×1+0.8×0+0.8×0+0×0=1.2V。
而在实际预算阶段,第一行的存储单元值为1,IL<0>为1.2V,则故单元电容左极板积累电压值VCL<0>为VDD-VDAC=1.2V-1.2V=0V。第二行的存储单元值为0,故单元电容左极板积累电压值VCL<1>为VDD=1.2V。同理可得;第三行中单元电容左极板积累电压值VCL<2>为VDD=1.2V。第四行中单元电容左极板积累电压值VCL<3>也为VDD=1.2V。
所以,故OL=(VCL<0>+VCL<0>+VCL<2>+VCL<3>)/4=0.9V。
基于本实施例中乘累加运算电路的原理可知,输出信号线的电压OL在运算过程应当满足下式:
因此可知,电路实际计算出的乘累加运算结果为:
代入VDD=1.2V,OL=0.8V,计算得出:
即:实际运算结果为1.2V。因此实际运算结果与理想结果相符。本次乘累加运算结果完全正确。
实施例3
在实施例1和实施例2方案的基础上,本实施例进一步提供一种基于9T1C-SRAM的存内运算电路,其具有数据读写保持功能、乘法运算功能和乘累加运算功能。并在数据读阶段支持进行单端双向访问;而电路支持的乘法和乘累加运算功能包括单比特乘法和多比特乘法。具体地,如图14所示,按照功能划分,本实施例提供的基于9T1C-SRAM的存内运算电路包括:存算阵列、字线组、位线组、输入信号线组、输出信号线组、字线驱动器、译码器、预充电路、时序控制模块、模式切换、读写控制电路、开关控制电路、输入模块,以及量化输出电路。
其中,存算阵列由N×M个前述的9T1C存算电路按N行M列的阵列方式排布而成。字线组包括N条字线WLL和N条字线WLR。存算阵列中的同行的各个9T1C存算电路均连接在同一组字线WLL和WLR上。位线组包括M条位线BL和M条位线BLB。存算阵列中同列的所有9T1C存算电路均连接在相同的位线BL、BLB上;输入信号线组包括N条输入信号线IL;存算阵列中同行的所有9T1C存算电路均连接在一条输入信号线IL。输出信号线组包括M条输出信号线OL。存算阵列中同列的所有9T1C存算电路均连接在一条输出信号线OL上。
字线驱动器用于控制各条字线WLR和WWL的开启。译码器与字线驱动器连接,译码器用于将地址信号译码后传入到字线驱动器。预充电路用于对位线BL、BLB和输出信号线OL进行预充操作;时序控制模块用于生成执行数据存储任务或执行乘法运算和乘累加运算过程中所需的各个时钟信号。模式切换用于切换存内运算电路的工作模式,存内运算电路的工作模式包括数据存储模式和逻辑运算模式。读写控制电路用于对存内运算电路执行数据读写操作的过程进行控制。
开关控制电路包括M个列开关S,每个列开关S分别连接在其中一条输出信号线OL与电源VDD之间,用于控制该输出信号线OL与电源VDD的连通状态。输入模块在乘法运算或乘累加运算阶段对第二操作数进行数模转换,然后通过输入信号线IL输入到对应的9T1C存算电路中。
量化输出电路连接在输出信号线OL、位线BLB和输入信号线IL上;量化输出电路包括数据读部分和运算输出部分。数据读部分用于输出各存储节点的存储数据;运算输出部分用于对OL的电压进行模数转换,输出对应的乘法运算结果或乘累加运算结果。
本实施例中的基于9T1C-SRAM的存内运算电路实际上就是由实施例1和2中的基础单元电路构成的一个大规模集成电路,因此该电路具有实施例1和2的完整功能。例如,在存算阵列中,各个9T1C存算电路作为实现数据存储功能和乘法运算功能的基本单元。而同一列中的所有9T1C存算电路与列开关S共同构成执行乘累加运算的基本单元。
为了验证上述基于9T1C-SRAM的存内运算电路中,存算阵列的并行乘累加运算性能,本实施例利用如图15的4×4阵列,同时进行4列的乘加结果运算,每列得到4个4bit*1bit的乘法结果之和。其中,4bit输入值使用位线IL的输入电压值进行区分,1bit权重使用存储单元的值进行区分。以输入电压为1.2V、0.8V、0.8V、0V为例,存储单元存储值逐列依次为“0000、1000、0110、0111”为例,进行乘累加的运算,具体计算如下:
对于第一列:
理论运算结果应当为:1.2×0+0.8×0+0.8×0+0×0=0V
运算过程中,因为IL<0>为1.2V,存储单元的值为0,故单元电容左极板积累电压值VCL<00>为VDD=1.2V,同理可得VCL<10>、VCL<20>、VCL<30>均为VDD。
故OL<0>=(VCL<00>+VCL<10>+VCL<20>+VCL<30>)/4=1.2V;
进一步计算可知:乘累加运算结果为:4×(1.2V-1.2V)=0。
对于第二列:
理论运算结果应当为:1.2×1+0.8×0+0.8×0+0×0=1.2V
运算过程中,因为IL<0>=1.2V,存储单元的值为1,故单元电容左极板积累电压值VCL<01>为VDD-VDAC=1.2V-1.2V=0V。IL<1>=0.8V,存储单元的值为0,故单元电容左极板积累电压值VCL<11>为VDD=1.2V。IL<2>=0.8V,存储单元的值为0,故单元电容左极板积累电压值VCL<21>为VDD=1.2V。IL<3>=0V,存储单元的值为0,故单元电容左极板积累电压值VCL<31>为VDD=1.2V。
故OL<1>=(VCL<01>+VCL<11>+VCL<21>+VCL<31>)/4=0.9V。
进一步计算可知:乘累加运算结果为:4×(1.2V-0.9V)=1.2V。
对于第三列:
理论运算结果应当为:1.2×0+0.8×1+0.8×1+0×0=1.6V
运算过程中,因为IL<0>=1.2V,存储单元的值为0,故单元电容左极板积累电压值VCL<02>为VDD=1.2V。IL<1>=0.8V,存储单元的值为1,故单元电容左极板积累电压值VCL<12>为VDD-VDAC=1.2V-0.8V=0.4V。IL<2>=0.8V,存储单元的值为1,故单元电容左极板积累电压值VCL<22>为VDD-VDAC=1.2V-0.8V=0.4V。IL<3>=0V,存储单元的值为0,故单元电容左极板积累电压值VCL<32>为VDD=1.2V。
故OL<2>=(VCL<02>+VCL<12>+VCL<22>+VCL<32>)/4=0.8V;
进一步计算可知:乘累加运算结果为:4×(1.2V-0.8V)=1.6V。
对于第四列:
理论运算结果应当为:1.2×1+0.8×1+0.8×1+0×1=2.8V
运算过程中,因为IL<0>=1.2V,存储单元的值为1,故单元电容左极板积累电压值VCL<03>为VDD-VDAC=1.2V-1.2V=0V;IL<1>=0.8V,存储单元的值为1,故单元电容左极板积累电压值VCL<13>为VDD-VDAC=1.2V-0.8V=0.4V;IL<2>=0.8V,存储单元的值为1,故单元电容左极板积累电压值VCL<23>为VDD-VDAC=1.2V-0.8V=0.4V;IL<3>=0V,存储单元的值为1,故单元电容左极板积累电压值VCL<33>为VDD-VDAC=1.2V-0V=1.2V;故OL<3>=(VCL<03>+VCL<13>+VCL<23>+VCL<33>)/4=0.5V。
进一步计算可知:乘累加运算结果为:4×(1.2V-0.5V)=2.8V。
综上所述本实施例中并行完成的四个乘累加运算的结果均完全正确。同时,在图13中阵列的乘累加运算过程中,各信号的时序波形图如图14所示,由图14可知:在经过三个周期后,即可得到4组4行累加的4*1乘加结果。这三个周期分别为预充周期(将IL和OL预充至预设电平)、输入周期(输入各个第二操作数)和计算周期(各阵列进行运算,并将结果体现在OL上)。由此可知,使用本实施例提供的基于9T1C-SRAM的存内运算电路,可以实现高线性的多比特乘累加运算。
此外,需要特别说明的是:在实际应用中,本实施例中基于9T1C-SRAM的存内运算电路还可以封装成一种基于9T1C-SRAM的CIM芯片,并作为芯片生成和对外出售。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种9T1C存算电路,其特征在于:其具有数据读写保持功能和乘法运算功能;9T1C存算电路由6个NMOS管N0~N5,3个PMOS管P0~P2和1个电容C0构成,电路连接关系如下:
P1、N1、N4的栅极与P0、N0、N2的漏极相连,并作为存储节点Q;P0、N0、P2的栅极与N1、P1、N3的漏极相连,并作为反向存储节点QB;P0和P1的源极相连并接VDD;N0和N1的源极相连并接VSS;N2和N3的栅极接字线WWL;N5的栅极接字线WLR;N2的源极接在位线BL上;N3和N5的源极接在位线BLB上;N4的漏极和P2的源极相连,并连接在位线IL上;N4的源极与P2、N5的漏极相连,并连接在电容C0的右极板,C0的左极板连接在位线OL上。
2.如权利要求1所述的9T1C存算电路,其特征在于:电路中的P0和N0构成一个反相器,P1和N1构成另一个反相器;两个反相器构成交叉耦合结构,形成用于存储并保持数据的两个存储节点Q和QB;N2和N3作为传输管,各自位于交叉耦合结构左右两侧作为两个存储节点写通路;N4和P2构成传输门;N5作为计算控制端,C0作为传输电压差的电容;
其中,所述9T1C存算电路在数据读阶段支持进行单端双向访问;9T1C单元支持的乘法运算包括单比特数间的乘法和单比特数与多比特数间的乘法。
3.如权利要求2所述的9T1C存算电路,其特征在于:所述9T1C存算电路执行数据读写保持的操作逻辑如下:
一、数据写操作
将字线WLR置为低电平,字线WWL置为高电平;然后,通过位线BL和BLB在存储节点Q和QB中写入待存储数据;
二、数据保持操作
将字线WLR和WLL置为低电平,位线BL、BLB、IL和OL置为高电平;此时,N2、N3关断,且存储节点Q和QB分别连接N4和P2的栅极;
三、数据读操作
所述9T1C存算电路支持的数据读操作分为如下的列读模式和行读模式:
1、在列读模式时,将字线WWL置为低电平,字线WLR置为高电平,位线BL、BLB和OL置为高电平,位线IL置为低电平,QB节点的读操作结果体现在位线BLB上;
2、在行读模式时,将字线WWL置为低电平,字线WLR置为高电平,位线BL、BLB和OL置为高电平,位线IL置为低电平,Q节点的读操作结果体现在位线IL上。
4.如权利要求2所述的9T1C存算电路,其特征在于:所述9T1C存算电路支持的乘法运算包括单乘单模式和单乘多模式两种,具体的操作逻辑如下:
(1)在数据写入模式下,将第一操作数写入到9T1C存算电路的存储节点Q;
(2)对各条信号线线进行预充,分别包括:将位线OL置为高电平,IL置为低电平,WLR置为高电平,WWL置为低电平,BLB置为低电平;
(3)将第二操作数通过位线IL输入到9T1C存算电路中;
其中,在单乘单模式下,输入的所述第二操作数为表征二进制数1或0的高低电平;在单乘多模式下,所述第二操作数为由多位二进制数按预设规则进行数模转换后得到的对应的电压值VDAC;
(4)将位线OL悬空,然后获取C0中电荷重新分配后位线OL的当前电压,并将其量化为乘积结果;
其中,在单乘单模式下,位线OL的电压为VDD时表示乘积结果为0,位线OL的电压为0时表示乘积结果为1;在单乘多模式下,当第一操作数为1时,位线OL的电压为VDD,即乘积结果为0;当第一操作数为0时;位线OL的电压为VDD-VDAC;VDD-VDAC经预设规则的数转换后得到一个多位二进制数,即为乘积。
5.如权利要求2所述的9T1C存算电路,其特征在于:所述9T1C存算电路在非运算阶段应进行归零操作,以降低电路的功耗;所述归零操作的操作逻辑如下:
将字线WWL置为低电平,字线WLR置为高电平,位线BL、BLB、OL、IL置为高电平,通过N5由BLB对电容C0的左极板充电,使电容C0两端电压差清零。
6.一种乘累加运算电路,其特征在于,其包括:
运算阵列,其由N个如权利要求1-5中任意一项所述的9T1C存算电路按列排布而成;
字线组,其包括N条字线WLL和N条字线WLR;所述运算阵列中的各个9T1C存算电路均连接一组独立的字线WLL和WLR;字线WLL和WLR用于在乘累加运算前选中各行的9T1C存算电路以便写入乘累加运算的第一操作数;
位线组,其包括1条位线BL和1条位线BLB;同列的所有9T1C存算电路均连接在相同的位线BL、BLB上,位线BL、BLB用于在各个9T1C存算电路中写入乘累加运算的第一操作数;
输入信号线IL,其数量为N条;所述运算阵列中每个9T1C存算电路分别连接一条独立的输入信号线IL,并作为各自运算过程中第二操作数的输入端;
输出信号线OL,同列的所有9T1C存算电路均连接在输出信号线OL上,OL作为乘累加运算结果的输出端;
列开关S,其连接在输出信号线OL与电源VDD之间,用于控制输出信号线OL与电源VDD的连通状态;以及
量化电路,其连接在所述输出信号线OL上,用于将输出信号线OL上的电压值转换为一个表征乘累加运算结果的数字量。
7.如权利要求6所述的乘累加运算电路,其特征在于,其执行乘累加运算的操作逻辑如下:
(1)准备阶段:
对所述运算阵列中的所有9T1C存算电路进行归零操作,以保证运算阵列中所有电容C0的初始状态相同,即电容C0的右极板电压Vc保持一致;
(2)预存阶段:
依次将各行的字线WLR置为低电平,字线WWL置为高电平;然后,通过位线BL和BLB在各行的9T1C存算电路中的存储节点中写入各自的第一操作数;
(3)预充阶段:
将列开关S闭合,输出信号线OL连接VDD,使各个电容C0的左极板预充为VDD;WLR置于高电平,BLB预充为低电平,使各个电容C0右极板预充为“0”;位线IL预充为低电平;
(4)乘积运算阶段
通过输入信号线IL向各个9T1C存算电路输入经数模转换后的输入电压VDAC;此时,WLR置为低电平,列开关S依旧闭合,各个9T1C存算电路中的电容C0两端的电压差根据存储单元Q值发生如下改变:
a.当Q=“1”时,传输门打开,输入值通过传输门输入到电容C0的右极板,电容C0的左极板电压保持为VDD,电容C0的右极板电压保持为VDAC;此时,电容C0的两端电压差为VDD-VDAC;
b.当Q=“0”时,传输门关闭;电容C0的左极板电压保持为VDD,电容C0的右极板电压为0;此时,电容C0的两端电压差仍保持为VDD;
由此可知:各个9T1C存算电路的乘法结果均累积到了各自电容C0的右极板上;
(5)累加运算阶段:
将列开关S断开,使输出信号线OL悬空,即电容左极板悬空;将WLR置为高电平,位线IL置为低电平,使各行中电容C0左极板电压根据存储单元Q值发生如下改变;
a.当Q=“1”时,传输门打开,电容C0的右极板电压值被位线IL拉低为0,此时由于电容C0的两端电压差不能突变,并且乘法运算阶段电容C0的电压差为VDD-VDAC,所以电容C0的左极板电压值即变为VDD-VDAC;
b.当Q=“0”时,传输门关闭,电容C0的两端电压差仍保持VDD,所以电容C0的左极板电压保持VDD;
此时,每个9T1C存算电路的乘法结果体现为电源电压VDD减去电容C0左极板电压的值;由于一列的位线OL共享,所以各个9T1C存算电路中电容C0的左极板电荷进行共享,在位线OL上得到最后乘累加结果对应的模拟量;
(6)量化输出
按照预设的模数转换规则将OL的电压值转换为对应数字量,即为最终的乘累加运算结果。
8.一种基于9T1C-SRAM的存内运算电路,其特征在于,其具有数据读写保持功能、乘法运算功能和乘累加运算功能,并在数据读阶段支持进行单端双向访问;乘法和乘累加运算功能包括单比特乘法和多比特乘法;所述基于9T1C-SRAM的存内运算电路包括:
存算阵列,其由N×M个如权利要求1-5中任意一项所述的9T1C存算电路按N行M列的阵列方式排布而成;
字线组,其包括N条字线WLL和N条字线WLR;所述存算阵列中同行的各个9T1C存算电路均连接在同一组字线WLL和WLR上;
位线组,其包括M条位线BL和M条位线BLB;所述存算阵列中同列的所有9T1C存算电路均连接在相同的位线BL、BLB上;
输入信号线组,其包括N条输入信号线IL;所述存算阵列中同行的所有9T1C存算电路均连接在一条输入信号线IL;
输出信号线组,其包括M条输出信号线OL;所述存算阵列中同列的所有9T1C存算电路均连接在一条输出信号线OL上;
字线驱动器,其用于控制各条字线WLR和WWL的开启;
译码器,其与字线驱动器连接,所述译码器用于将地址信号译码后传入到所述字线驱动器;
预充电路,其用于对位线BL、BLB和输出信号线OL进行预充操作;
时序控制模块,其用于生成执行数据存储任务或执行乘法运算和乘累加运算过程中所需的各个时钟信号;
模式切换电路,其用于切换所述存内运算电路的工作模式,所述存内运算电路的工作模式包括数据存储模式和逻辑运算模式;
读写控制电路,其用于对存内运算电路执行数据读写操作的过程进行控制;
开关控制电路,其包括M个列开关S,每个列开关S分别连接在其中一条输出信号线OL与电源VDD之间,用于控制该输出信号线OL与电源VDD的连通状态;
输入模块,其在乘法运算或乘累加运算阶段对第二操作数进行数模转换,然后通过输入信号线IL输入到对应的9T1C存算电路中;以及
量化输出电路,其连接在所述输出信号线OL、位线BLB和/或输入信号线IL上;所述量化输出电路包括数据读部分和运算输出部分,所述数据读部分用于输出各存储节点的存储数据,所述运算输出部分用于对OL的电压进行模数转换,输出对应的乘法运算结果或乘累加运算结果。
9.如权利要求8所述的基于9T1C-SRAM的存内运算电路,其特征在于:在所述存算阵列中,各个9T1C存算电路作为实现数据存储功能和乘法运算功能的基本单元;同一列中的所有9T1C存算电路与列开关S共同构成执行乘累加运算的基本单元;所述基于9T1C-SRAM的存内运算电路中各列的9T1C存算电路支持并行执行乘累加运算。
10.一种基于9T1C-SRAM的CIM芯片,其特征在于:其由如权利要求8所述的基于9T1C-SRAM的存内运算电路封装而成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310161572.7A CN116312670A (zh) | 2023-02-24 | 2023-02-24 | 一种9t1c存算电路、乘累加运算电路、存内运算电路、芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310161572.7A CN116312670A (zh) | 2023-02-24 | 2023-02-24 | 一种9t1c存算电路、乘累加运算电路、存内运算电路、芯片 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116312670A true CN116312670A (zh) | 2023-06-23 |
Family
ID=86786215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310161572.7A Pending CN116312670A (zh) | 2023-02-24 | 2023-02-24 | 一种9t1c存算电路、乘累加运算电路、存内运算电路、芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116312670A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117708042A (zh) * | 2023-12-28 | 2024-03-15 | 中科南京智能技术研究院 | 一种单边控制的存内计算电路及存储器 |
CN117910424A (zh) * | 2024-03-20 | 2024-04-19 | 安徽大学 | 时域存算单元、时域量化单元、及时域存内计算结构 |
CN118280410A (zh) * | 2024-05-24 | 2024-07-02 | 安徽大学 | 10t1c-sram存算单元、存算阵列、及存算电路 |
-
2023
- 2023-02-24 CN CN202310161572.7A patent/CN116312670A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117708042A (zh) * | 2023-12-28 | 2024-03-15 | 中科南京智能技术研究院 | 一种单边控制的存内计算电路及存储器 |
CN117910424A (zh) * | 2024-03-20 | 2024-04-19 | 安徽大学 | 时域存算单元、时域量化单元、及时域存内计算结构 |
CN117910424B (zh) * | 2024-03-20 | 2024-05-28 | 安徽大学 | 时域存算单元、时域量化单元、及时域存内计算结构 |
CN118280410A (zh) * | 2024-05-24 | 2024-07-02 | 安徽大学 | 10t1c-sram存算单元、存算阵列、及存算电路 |
CN118280410B (zh) * | 2024-05-24 | 2024-07-30 | 安徽大学 | 10t1c-sram存算单元、存算阵列、及存算电路 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Su et al. | 16.3 A 28nm 384kb 6T-SRAM computation-in-memory macro with 8b precision for AI edge chips | |
Fujiwara et al. | A 5-nm 254-TOPS/W 221-TOPS/mm 2 fully-digital computing-in-memory macro supporting wide-range dynamic-voltage-frequency scaling and simultaneous MAC and write operations | |
CN116312670A (zh) | 一种9t1c存算电路、乘累加运算电路、存内运算电路、芯片 | |
CN112151091B (zh) | 一种8t sram单元及存内计算装置 | |
CN111816232B (zh) | 一种基于4管存储结构的存内计算阵列装置 | |
CN113467751B (zh) | 一种基于磁性随机存储器的模拟域存内计算阵列结构 | |
CN113255904B (zh) | 电压裕度增强型电容耦合存算一体单元、子阵列及装置 | |
CN109979503B (zh) | 一种在内存中实现汉明距离计算的静态随机存储器电路结构 | |
CN113257306B (zh) | 一种基于静态随机存取存储器的存算一体阵列及加速装置 | |
CN112992223A (zh) | 一种存内计算单元、阵列及装置 | |
CN110176264B (zh) | 一种基于内存内计算的高低位合并电路结构 | |
CN113342126B (zh) | 一种基于ReRAM的可重构电流镜加权电路 | |
CN110970071B (zh) | 低功耗静态随机存取存储器的存储单元及应用 | |
Kim et al. | 10T SRAM computing-in-memory macros for binary and multibit MAC operation of DNN edge processors | |
CN113782072B (zh) | 一种多比特存内计算电路 | |
CN116364137A (zh) | 一种同侧双位线的8t单元、逻辑运算电路及cim芯片 | |
CN117079688A (zh) | 一种电流域8tsram单元及动态自适应量化的存算电路 | |
CN116126779A (zh) | 一种9t存算电路、乘累加运算电路、存内运算电路及芯片 | |
CN114496010A (zh) | 一种基于磁性随机存储器的模拟域近存计算阵列结构 | |
Chen et al. | MC 2-RAM: An in-8T-SRAM computing macro featuring multi-bit charge-domain computing and ADC-reduction weight encoding | |
CN112233712B (zh) | 一种6t sram存算装置、存算系统及存算方法 | |
Sehgal et al. | Trends in analog and digital intensive compute-in-SRAM designs | |
CN114038492A (zh) | 一种多相采样存内计算电路 | |
CN116204490A (zh) | 一种基于低电压技术的7t存算电路、乘累加运算电路 | |
CN117316237A (zh) | 时域8t1c-sram存算单元及时序跟踪量化的存算电路 |
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 |