CN118298872B - 输入权重比特位可配置的存内计算电路及其芯片 - Google Patents
输入权重比特位可配置的存内计算电路及其芯片 Download PDFInfo
- Publication number
- CN118298872B CN118298872B CN202410719768.8A CN202410719768A CN118298872B CN 118298872 B CN118298872 B CN 118298872B CN 202410719768 A CN202410719768 A CN 202410719768A CN 118298872 B CN118298872 B CN 118298872B
- Authority
- CN
- China
- Prior art keywords
- bit
- cbl
- bit line
- input
- signed
- 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
Links
- 230000005540 biological transmission Effects 0.000 claims abstract description 71
- 238000004364 calculation method Methods 0.000 claims abstract description 23
- 239000003990 capacitor Substances 0.000 claims abstract description 23
- 230000002093 peripheral effect Effects 0.000 claims abstract description 15
- 238000013500 data storage Methods 0.000 claims abstract description 7
- 238000007726 management method Methods 0.000 claims description 14
- 230000008859 change Effects 0.000 claims description 13
- 101150110971 CIN7 gene Proteins 0.000 claims description 6
- 101150110298 INV1 gene Proteins 0.000 claims description 6
- 101100397044 Xenopus laevis invs-a gene Proteins 0.000 claims description 6
- 239000000047 product Substances 0.000 description 53
- 238000000034 method Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 10
- 238000013461 design Methods 0.000 description 9
- 230000006872 improvement Effects 0.000 description 7
- 238000007599 discharging Methods 0.000 description 6
- 238000002474 experimental method Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 238000013527 convolutional neural network Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 239000012467 final product Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/41—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
- G11C11/413—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
-
- 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
- G06F7/523—Multiplying only
-
- 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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- 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)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Static Random-Access Memory (AREA)
Abstract
本发明属于集成电路技术领域,具体涉及一种输入权重比特位可配置的存内计算电路,以及对应的CIM芯片。该存内计算电路中包括:SRAM阵列、外围电路、关断控制模块、计算模块、传输控制模块、输入模块,以及输出模块。其中,SRAM阵列与外围电路配合能够实现SRAM电路的数据存储功能,而SRAM阵列配合其余各部分则可以实现多比特的带符号数和无符号数间的乘法运算。本发明中的计算单元和SRAM单元配合可以执行带符号数与单比特无符号数的乘法,通过挂载不同电容进行电荷分享又可以实现带符号数与多比特权重的乘法。电路工作原理与既有电路不同,并可以克服现有电路普遍存在的面积开销大,运算效率低、延迟和功耗较高的问题。
Description
技术领域
本发明属于集成电路技术领域,具体涉及一种输入权重比特位可配置的存内计算电路,以及对应的CIM芯片。
背景技术
随着人工智能的快速发展和普及,卷积神经网络(CNN)和深度神经网络(DNN)已经成为计算机视觉领域最具影响力的创新之一。CNN和DNN等神经网络进行数据处理上需要进行大量的乘法和乘累加(MAC)运算,这种运算在基于冯诺依曼架构的计算机中进行处理时。由于需要在处理器和存储器间频率搬运数据,因而造成了较高的能量消耗和延迟,这个问题被称为冯诺依曼瓶颈或内存墙。基于冯诺依曼架构的DNN处理器和加速器的演示表明,能量消耗和延迟主要取决于处理器和存储器之间输入数据。因此,传统的冯诺依曼计算机并不适合处理神经网络等人工智能相关的计算任务。
为了克服冯诺依曼瓶颈,技术人员提出一种基于存储器的存内运算(CIM)架构,这种计算机架构直接利用存储器来实现逻辑运算,无需在存储器和处理器进行数据搬运,因而可以大幅提高数据处理效率降低设备功耗。
卷积神经网络中包含大量带符号的乘法与乘累加操作。既有的多位权重CIM电路实现该类正权重和负权重的运算任务时主要有两个特点:一是分离的正负权重放置。在分离的正负权重放置中,正负权重放在单独的列中,因而需要2k个SRAM单元来存储有符号的k位权重,这增加了面积开销并降低了推理速度。二是具有近存储器MAC操作的存储器内权重处理。在具有近存储器MAC操作的存储器内权重处理中,则需要将多个脉宽调制WL应用于k个SRAM单元,进而将带符号的k位数字权重转换为用于在近存储器电路中计算的MAC操作的模拟值;这种对运算数据进行特殊编码和模数转换的过程会显著增加电路运算过程的延迟、面积开销和整体功耗。
发明内容
为了解决现有各类具有带符号乘法与乘累加运算功能的CIM电路普遍存在的面积开销大,运算效率低、延迟和功耗较高的问题,本发明提供一种输入权重比特位可配置的存内计算电路及其芯片。
本发明提供的技术方案为:
一种输入权重比特位可配置的存内计算电路,按照功能划分,该存内计算电路中包括:SRAM阵列、外围电路、关断控制模块、多个计算模块、传输控制模块、输入模块,以及输出模块。其中,SRAM阵列与外围电路配合能够实现SRAM电路的数据存储功能,而SRAM阵列配合其余各部分则可以实现多比特的带符号数和无符号数间的乘法运算。
在本发明的存内计算电路中,SRAM阵列中位于同一行的各个SRAM单元两侧的传输管连接在同一组字线WLL和WLR上。SRAM阵列一方面配合外围电路实现对数据的读、写、保持操作;另一方面则将自身包含的各个SRAM单元用于存储乘法运算中无符号数的其中一个bit位。
关断控制模块包括多个传输门,各个传输门用于打断SRAM阵列的位线BL和BLB;进而将SRAM阵列划分成以n行单列的SRAM单元为一个基本单元的多个部分。SRAM阵列中每个基本单元与至少一个计算模块连接,进而构成一个BLK。
BLK中的每个计算模块包括两个NMOS管N3、N4,两个PMOS管P1、P2,以及一个电容C。电路连接关系为:P1和N3的漏极连接在计算位线CBL上;N3的栅极接位线BL,P1的栅极接位线BLB; N3的源极与N4的漏极相连;P1的源极与P2的漏极相连;N4的栅极接输入字线INN;P2的栅极接输入字线INP;N4的源极接VSS;P2的源极接VDD;电容C的一端连接在计算位线CBL上,另一端接VSS;位于同一行的各个计算模块共享同一条计算位线CBL以及输入字线INN和INP;
传输控制模块由多个传输门构成;每个传输门用于管理相邻两个计算模块间的计算位线CBL的连通状态,进而在不同列上通过电荷共享的方式实现对乘法运算中无符号数的各位进行权重配置;
输入模块包括输入编码单元、关断管理单元、传输管理单元和预充电单元。其中,输入编码单元与每一行的各个计算模块相连;输入编码单元用于管理字线WLL、WLR以及输入字线INN和INP的电平状态,进而输入由WLL、WLR、INN和INP的电平状态表征的乘法运算的带符号数。关断管理单元用于产生输入到关断控制模块中的各个传输门的使能信号。传输管理单元则用于产生输入到传输控制模块中的各个传输门的使能信号。预充电单元用于在执行逻辑运算任务时将计算位线CBL预充到指定电位。
输出模块包括ADC单元、移位器和加法器。ADC单元的输入端连接各行的计算位线CBL和参考电平,并用于输出根据CBL的电平状态量化出的乘法运算结果。加法器和移位器共同实现对乘法运算中带符号数的各位进行权重配置。
作为本发明进一步的改进,SRAM单元采用6T-SRAM单元或其它具有双字线的SRAM单元;
6T-SRAM单元包括两个NMOS管N1、N2,以及两个反相器INV0、INV1。电路连接关系如下:INV0的输入端、INV1的输出端与N1的源极相连,并作为存储节点Q。INV0的输出端、INV1的输入端与N2的源极相连,并作为存储节点QB。N1、N2的漏极分别连接在位线BL和BLB上,N1、N2的栅极分别连接字线WLL、WLR。
作为本发明进一步的改进,每个BLK中包含两个计算模块,其中一个计算模块连接在当前列中的位线BL和BLB的上方,另一个计算模块连接在当前列中的位线BL和BLB的下方。
作为本发明进一步的改进,位于相邻列的M个BLK构成了一个SBLK。在同一个SBLK中,各个BLK的计算模块上挂载的电容C的电容值按照1、2、4、8、…、2M-1的倍率进行配置;各个BLK挂载的电容的电容值倍率即为SBLK中各个BLK执行乘法运算时的位权重。
作为本发明进一步的改进,每个BLK作为执行2bit带符号数与1bit无符号数间乘法运算的操作对象,操作逻辑如下:
(1)将1bit无符号数预先存储BLK中指定的SRAM单元中,并将计算位线CBL预充到VSS与VDD的中间电位。
(2)将WLL、WLR、INN和INP置为指定的电平状态,进而实现向BLK中输入对应的2bit带符号数。
(3)对计算结束后的计算位线CBL的电平状态进行量化,得到乘法运算的结果:
其中,当计算位线CBL的位线电压上升,则表示乘积为“+1”;当计算位线CBL的位线电压下降,则表示乘积为“-1”;当计算位线CBL的位线电压保持不变,则表示乘积为“0”。
在本发明中,将WLL、INN和INP置低电平,WLR置高电平时,表征输入的乘法运算中的带符号数为“+1”。将WLL、INN和INP置高电平,WLR置低电平,表征输入的乘法运算中的带符号数为“-1”。将WLL和INN置低电平,WLR和INP置高电平,表征输入的乘法运算中的带符号数为“0”。
作为本发明进一步的改进,每个SBLK配合传输控制模块共同构成执行2bit带符号数与Mbit无符号数间乘法运算的操作对象,操作逻辑如下:
(1)将各列的计算位线CBL预充到VDD和VSS的中间电位,然后断开传输控制模块中位于各BLK间的传输门。
(2)将Mbit的无符号数按位分解为N个单比特数,并将各个单比特数按对应位权重预存到各个BLK中指定的SRAM单元中。
(3)将WLL、WLR、INN和INP置为指定的电平状态,进而实现向BLK中输入对应的2bit带符号数;2bit带符号数与Mbit无符号数各位上的乘积体现在每个BLK中CBL的位线电压上。
(4)将传输控制模块中位于各BLK间的传输门闭合,不同BLK的CBL相互连通并实现电荷共享,此时,2bit带符号数与Mbit无符号数的乘积体现在计算位线CBL的位线电压的变化上。具体的,CBL的位线电压的变化方向反映乘积的符号,CBL的变化幅度则反映乘积的数值大小。
作为本发明进一步的改进,多个SBLK配合关断控制模块、传输控制模块、移位器和全加器共同构成4bit以上带符号数与Mbit无符号数乘法运算的操作对象,操作逻辑为:
(1)将带符号数中的数值部分逐位分解为多个单比特数,并将单比特数与原符号位组合,构成多个2bit带符号数。
(2)利用关断控制模块将同列中各个SBLK隔离开;并由隔离后的每个SBLK配合传输控制模块完成各个2bit带符号数与Mbit无符号数间的乘法运算,得到对应的多个乘积结果。
(3)采用移位器根据2bit带符号数的数值部分在原多比特带符号数中的位权重,对各个乘积结果进行移位,然后在将移位后的乘积结果通过加法器进行加和,最终得到4bit以上带符号数与Mbit无符号数的乘积。
作为本发明进一步的改进,每个SBLK配合传输控制模块至多能够完成两个2bit带符号数与Mbit无符号数乘法的运算任务,其中,每个BLK中的其中一行SRAM单元配合上方的计算模块完成其中一个运算任务;另外一行SRAM单元配合下方的计算模块完成另一个运算任务。
本发明还包括一种CIM芯片,其由如前述的输入权重比特位可配置的存内计算电路封装而成。
本发明提供的技术方案,具有如下有益效果:
本发明基于双字线的SRAM单元设计了一种带符号乘法的存内计算电路,该电路将1bit权重存储在SRAM单元内, 2bit带符号数分为1bit符号位和1bit无符号数两部分、1bit符号位通过控制双字线WLL和WLR的高低电平表示,1bit无符号数结合新增的计算部分的输入字线INN和INP进行控制。在电路中,根据表征权重和带符号数中各个信号的不同取值,可以控制计算字线CBL相对电源和地的充放电路径的导通,进而通过CBL的位点电压变化表征最终的乘积结果。
本发明通过同一个SBLK上的不同BLK的计算位线CBL上配置不同大小的电容,并对各个BLK上的计算位线CBL通过传输控制模块进行打断控制。利用这种特殊的电路设计,可以通过电荷共享的方式在不同BLK上实现不同的位权重,无需借助其他外围电路就可以实现2bit带符号数与多bit无符号数的乘法运算,整个计算的宏电路设计精巧,运算时间短、运算效率高。
在2bit带符号数与多bit无符号数乘法基础上,本发明的电路还借助移位器和加法器实现了多bit待符号数与多bit无符号数乘法,以及上述各种乘法对应的MAC运算,该存内计算电路的性能强大,面积开销较小,集成度高。另外,由于本发明电路在各类运算中无需借助外围电路进行无符号数的位权重处理,因此运算效率更高,也可以改善电路运算过程的延迟和功耗。
附图说明
图1为本发明实施例1中提供的输入权重比特位可配置的存内计算电路的电路架构图。
图2为本发明实施例1的存内计算电路中基于6T-SRAM单元的SRAM阵列的电路图。
图3为本发明实施例1中不同的SBLK之间设置的关断控制模块的电路图。
图4为本发明实施例1中每个BLK中计算模块部分的详细电路图。
图5为本发明实施例1的SBLK中,传输控制模块的传输门在不同BLK间的分布图。
图6为本发明实施例1中输入模块和输出模块的电路原理图。
图7为本发明实施例1的每个BLK中,执行2bit带符号数与1bit无符号数间乘法的最小基本单位的电路图。
图8为本发明实施例1中,执行2bit带符号数与4bit无符号数乘法的最小基本单位的电路图。
图9为测试实验中单个BLK执行带符号数乘法运算阶段的计算位线CBL的信号图。
图10为测试实验中2bit带符号数“11”与4bit权重在乘法运算阶段的计算位线CBL的信号图。
图11为测试实验中2bit带符号数“01”与4bit权重在乘法运算阶段的计算位线CBL的信号图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步地详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
实施例1
本实施例提供一种输入权重比特位可配置的存内计算电路,该存内计算电路是基于传统的SRAM电路设计的,其包括SRAM电路中的SRAM阵列及其对应的各种用于实现数据存储功能的外围电路。以及在SRAM电路基础上新增的用于实现带符号多比特乘法及乘累加(MAC)运算的其他电路模块。具体的,如图1所示,按照功能划分,除了SRAM阵列和外围电路之外,该存内计算电路中还包括:关断控制模块、多个计算模块、传输控制模块、输入模块,以及输出模块。其中,SRAM阵列与外围电路配合能够实现SRAM电路的数据存储功能,而SRAM阵列配合其余各部分则可以实现多比特的带符号数和无符号数间的乘法运算。
在本实施例的方案中,外围电路主要包括字线驱动器、地址译码器、预充电路、时序控制模块、读写选择模块等。其中,字线驱动器用于控制SRAM阵列中各行的字线WLL和WLR的开启。地址译码器与字线驱动器连接,地址译码器用于将地址信号译码后传入到字线驱动器。预充电路用于对位线BL、BLB等信号线进行预充操作。时序控制模块用于生成执行数据存储任务或逻辑运算过程中所需的各个时钟信号。读写选择模块用于选中SRAM阵列中需要执行读写操作的各个SRAM单元。此外,考虑到本实施例中的存内计算电路同时具备数据存储和逻辑运算两种功能,外围电路中还应当包括一个模式切换电路,模式切换电路用于切换存内计算电路的工作模式。
在本实施例的电路方案,如图2所示,SRAM阵列由6T-SRAM单元构建而成。6T-SRAM单元由两个PMOS管P1~P2和4个NMOS管N1~N4构成。电路连接关系如下:P1、P2、N3、N4构成反相交叉偶合的数据锁存结构,数据锁存结构中包括两个反相的存储节点Q和QB;N1、N2的源级分别连接在Q和QB上;N1、N2的漏极分别连接在位线BL和BLB上,N1、N2的栅极分别连接字线WLL、WLR。
在其它实施例中,除了6T-SRAM单元之外,也可以选择在6T-SRAM单元基础上增加新的MOS管后得到的其它具有双字线的SRAM单元。以确保本实施例中的SRAM阵列中位于同一行的各个SRAM单元两侧的传输管分别连接在同一组字线WLL和WLR上。并由字线WLL和WLR分别控制6T-SRAM单元中的存储节点Q和QB与对应侧的位线BL和BLB之间的连通状态。
在本实施例提供的存内计算电路中,SRAM阵列一方面配合外围电路实现对数据的读、写、保持操作;另一方面则将自身包含的各个SRAM单元用于存储乘法运算中无符号数的其中一个bit位,进而由选中的SRAM单元配合位线上连接的计算模块共同实现无符号数与输入的带符号数间的乘法运算。
如图3所示,关断控制模块包括多个传输门,各个传输门用于打断SRAM阵列的位线BL和BLB,进而将SRAM阵列划分成以n行单列的SRAM单元为一个基本单元的多个部分。具体的,在本实施例中,将SRAM阵列每列中连续的16个SRAM单元作为一个基本单元,然后在同列的基本单元两侧的位线BL和BLB上分别设置一个传输门,传输门可以控制同列的基本单元中位线BL和BLB的通断。以一个128×128的SRAM阵列为例,共可分为8×128个基本单元,则每一列的位线上BL和BLB上分别设置了7个传输门,关断控制模块中合计包含7×2×128个传输门。
如图1所示,SRAM阵列中每个基本单元与至少一个计算模块连接,进而构成一个可以实现乘法运算功能的阵列运算模块,本实施例将其记为BLK。如图4所示,BLK中的每个计算模块包括两个NMOS管N5、N6,两个PMOS管P3、P4,以及一个电容C。电路连接关系为:P3和N5的漏极连接在计算位线CBL上;N5的栅极接位线BL,P3的栅极接位线BLB; N5的源极与N6的漏极相连;P3的源极与P4的漏极相连;N4的栅极接输入字线INN;P4的栅极接输入字线INP;N6的源极接VSS;P4的源极接VDD;电容C的一端连接在计算位线CBL上,另一端接VSS。此外,在整个SRAM阵列中,位于同一行的各个计算模块共享同一条计算位线CBL以及输入字线INN和INP。
在BLK中,任意一个SRAM单元通过位线BL和BLB与计算模块电连接,并构成可以执行2bit带符号数与1bit无符号数间乘法运算的基本单位。考虑到每个BLK中包含16个SRAM单元,本实施例的方案进一步在每个BLK中设置了两个计算模块,其中一个计算模块连接在当前列中的位线BL和BLB的上方,另一个计算模块连接在当前列中的位线BL和BLB的下方。基于该项优化设计,单个BLK最多同时支持进行两路2bit带符号数与1bit无符号数的乘法运算。
此外,在本实施例的方案中,位于相邻列的M个BLK构成了一个SBLK。利用每个SLBK可以用于实现2bit带符号数与Mbit无符号数间的乘法运算。考虑到实际应用场景对无符号数的位数要求不至于太大,本实施例将每个SBLK中BLK的列数设置为4,即每个SBLK用于实现2bit带符号数乘4bit无符号数。具体地,SLBK中的每列的BLK可以分别实现2bit带符号数与4bit无符号数中的其中一位相乘,在此基础上,为各列BLK赋予不同的位权重,并将各个BLK的运算结果相关即可实现2bit带符号数与4bit无符号数间的乘法运算。
为了在SBLK中实现多比特数间的乘法运算功能,本实施例在同一个SBLK中,将各个BLK的计算模块上挂载的电容C的电容值按照1、2、4、8的倍率进行配置;各个BLK挂载的电容值倍率即为SBLK中各个BLK执行乘法运算时的位权重。
在本实施例的电路设计中,传输控制模块由多个传输门构成。如图5所示,在每个SBLK中,相邻两个BLK中的计算位线CBL通过一个传输门连接,因此该传输门可以管理相邻两个计算模块间的计算位线CBL的连通状态。结合前文可知,同一个SBLK中每个BLK的计算位线上挂载的电容大小不同,因此,此处设置的传输控制模块可以同一个SBLK的不同BLK上通过电荷共享的方式实现对乘法运算中无符号数的各位进行权重配置。具体地,通过电容和传输控制模块的设计如何能够实现对BLK的位权重进行配置,将在后文进行详细说明。
如图6所示,本实施例的输入模块包括输入编码单元、关断管理单元、传输管理单元和预充电单元。其中,输入编码单元与每一行的各个计算模块相连;输入编码单元用于管理字线WLL、WLR以及输入字线INN和INP的电平状态,进而在执行逻辑运算任务时向电路中指定的BLK输入由WLL、WLR、INN和INP的电平状态表征的乘法运算的带符号数。具体的,在本实施例的电路中,四条信号线与2bit带符号数间的编码规则如下:
将WLL、INN和INP置低电平,WLR置高电平时,表征输入的乘法运算中的带符号数为“+1”。将WLL、INN和INP置高电平,WLR置低电平,表征输入的乘法运算中的带符号数为“-1”。将WLL和INN置低电平,WLR和INP置高电平,表征输入的乘法运算中的带符号数为“0”。
关断管理单元用于产生输入到关断控制模块中的各个传输门的使能信号,每个传输门的使能信号包括ENS和XENS。以本实施例128×128的SRAM阵列为例,关断控制模块中包含7×2×128个传输门,因此关断管理单元需要产生输出到各个传输门的7×2×128路的使能信号。传输管理单元则用于产生输入到传输控制模块中的各个传输门的使能信号。传输控制模块中包含7×2×128个传输门,因此传输管理单元需要产生输出到各个传输门的3×2×8×128路的使能信号。
本实施例中的预充电单元用于在执行逻辑运算任务时将计算位线CBL预充到指定电位;在每个BLK和SBLK中,计算位线CBL在运算前需要预充到VDD和VSS的中间电位,运算之后,位线电压的变化则反应了运算结果,例如当CBL的位线电压上升则说明乘积为正数,当CBL的位线电压下降则说明乘积为负数,当CBL的位线电压在运算前后保持不变,则说明乘积为零。此外,CBL的位线电压上升或下降的幅度还反映了乘积的数值大小。
输出模块包括ADC单元、移位器和加法器。ADC单元的输入端连接各行的计算位线CBL和参考电平,并用于输出根据CBL的电平状态量化出的乘法运算结果。ADC单元构成了本实施例中将CBL的位线电压的模拟量转换为乘积结果对应的数字量的模数转换电路,特别地,考虑到本实施例电路方案支持多比特乘法,乘积结果包括多种不同大小的数值,因此ADC单元需要选择参考电平可以进行动态变化的逐次逼近型ADC。在前文中介绍,BLK上挂载的电容,实现了对乘法运算中无符号数的各位进行权重配置,此处的加法器和移位器则共同实现对乘法运算中带符号数的各位进行权重配置,具体的操作逻辑也在后文进行详细解释。
利用本实施例提供的输入权重比特位可配置的存内计算电路,可以分别实现2bit带符号数与单bit无符号数的乘法运算,2bit带符号数与多(≥2)bit无符号数的乘法运算,多bit带符号数与多bit无符号数的乘法运算,以及对应的乘累加运算。为了使得本实施例中电路的工作原理和性能更加清楚,以下内容以上述各种运算为例,对本实施例电路方案的操作逻辑进行详细说明。
一、2bit带符号数与单bit无符号数乘法
在本实施例的存内计算电路中,每个BLK作为执行2bit带符号数与1bit无符号数间乘法运算的操作对象,具体的,执行运算的电路部分如图7所示。运算过程的操作逻辑如下:
(1)将1bit无符号数预先存储BLK中指定的SRAM单元中,并将计算位线CBL预充到VSS与VDD的中间电位。
(2)将WLL、WLR、INN和INP置为指定的电平状态,进而实现向BLK中输入对应的2bit带符号数。
(3)对计算结束后的计算位线CBL的电平状态进行量化,得到乘法运算的结果:
其中,当计算位线CBL的位线电压上升,则表示乘积为“+1”;当计算位线CBL的位线电压下降,则表示乘积为“-1”;当计算位线CBL的位线电压保持不变,则表示乘积为“0”。
详细地,2bit带符号数与1bit无符号数的乘法包括6种不同的运算过程,各个运算过程的操作逻辑和电路运行原理如下:
1、(+1)×1
首先,将无符合数“1”预存在6T-SRAM单元中,并将CBL预充到VDD/2。此时,6T-SRAM单元中的存储节点Q为高电平、QB为低电平。
然后,将WLL置低电平,WLR置高电平,此时,N1管保持关断,N2管被打开,QB端的数据通过N2管传到P3管的栅端,P3管被打开。与此同时,将INN端置低电位,INP端置低电位,则P4管也被打开。此时,CBL至VDD之间的充电路径被打开,而由于N5和N6未能导通,则CBL至VSS之间的放电路径保持关闭。因此,计算位线CBL上的位线电压会从VDD/2逐渐升高到VDD。CBL的位线电压升高,表示乘积结果为(+1)。
即完成运算:(+1)×1=(+1)。
2、(-1)×1
首先,将第二操作数“1”预存在6T-SRAM单元中,并将CBL预充到VDD/2。此时,6T-SRAM单元中的存储节点Q为高电平、QB为低电平。
然后,将WLL置高电平,WLR置低电平,此时,N1管被打开,N2管保持关断,Q端的数据通过N1管传到N5管的栅端,N5管被打开。与此同时,将INN端置高电位,INP端置高电位,则N6管也被打开。此时,CBL至VSS之间的放电路被打开;而由于P3和P4未能导通,则CBL至VDD之间的充电路径被关闭。因此,计算位线CBL上的位线电压会从VDD/2逐渐降低到VSS。CBL的位线电压降低,表示乘积结果为(-1)。
即完成运算:(+1)×1=(+1)。
3、(+1)×0
首先,将第二操作数“0”预存在6T-SRAM单元中,并将CBL预充到VDD/2。此时,6T-SRAM单元中的存储节点Q为低电平、QB为高电平。
然后,将WLL置低电平,WLR置高电平,此时,N2管被打开,N1管保持关断,QB端的数据通过N2管传到P3管的栅端,P3管被关闭。与此同时,将INN端置低电位,INP端置低电位,则N6管也被关闭。在此状态下,由于N6和P3均关闭,则CBL至VSS之间的放电路被关闭,CBL至VDD之间的充电路径也被关闭。因此,计算位线CBL上的位线电压保持当前电平状态不变,则表示乘积结果为0。
即完成运算:(+1)×0=0。
4、(-1)×0
首先,将第二操作数“0”预存在6T-SRAM单元中,并将CBL预充到VDD/2。此时,6T-SRAM单元中的存储节点Q为低电平、QB为高电平。
然后,将WLL置高电平,WLR置低电平,此时,N1管被打开,N2管保持关断,Q端的数据通过N1管传到N5管的栅端,N5管被关闭。与此同时,将INN端置高电位,INP端置高电位,则P4管也被关闭。在此状态下,由于N5和P4均关闭,则CBL至VSS之间的放电路被关闭,CBL至VDD之间的充电路径也被关闭。因此,计算位线CBL上的位线电压保持当前电平状态不变,则表示乘积结果为0。
即完成运算:(-1)×0=0。
5、0×1
首先,将第二操作数“1”预存在6T-SRAM单元中,并将CBL预充到VDD/2。此时,6T-SRAM单元中的存储节点Q为高电平、QB为低电平。
然后,将WLL置低电平,WLR置低电平,此时,N1管和N2均被关断。与此同时,将INN端置低电位,INP端置高电位。在此状态下, CBL至VSS之间的放电路被关闭,CBL至VDD之间的充电路径也被关闭。因此,计算位线CBL上的位线电压保持当前电平状态不变,则表示乘积结果为0。
即完成运算:0×1=0。
6、0×0
首先,将第二操作数“0”预存在6T-SRAM单元中,并将CBL预充到VDD/2。此时,6T-SRAM单元中的存储节点Q为低电平、QB为高电平。
然后,将WLL置低电平,WLR置低电平,此时,N1管和N2均被关断。与此同时,将INN端置低电位,INP端置高电位。在此状态下, CBL至VSS之间的放电路被关闭,CBL至VDD之间的充电路径也被关闭。因此,计算位线CBL上的位线电压保持当前电平状态不变,则表示乘积结果为0。
即完成运算:0×0=0。
综上所述,总结本实施例的存内运算电路执行2bit带符号数和1bit无符号数运算过程的真值表如下表1所示:
表1:带符号乘法的存内运算电路运算过程的真值表
二、2bit带符号数与多bit无符号数乘法
如图8所示,本实施例的存内计算电路的每个SBLK中包括4个BLK,因此,每个SBLK配合传输控制模块共同构成执行2bit带符号数与4bit无符号数间乘法运算的操作对象,在其他实施例中,扩展SBLK中BLK的数量至M,并将每个BLK中挂载的电容的值按照20~2M-1的梯度进行配置,则可以使得每个SBLK支持实现2bit带符号数与Mbit无符号数乘法的运算,运算过程的操作逻辑如下:
(1)将各列的计算位线CBL预充到VDD和VSS的中间电位,然后断开传输控制模块中位于各BLK间的传输门。
(2)将Mbit的无符号数按位分解为N个单比特数,并将各个单比特数按对应位权重预存到各个BLK中指定的SRAM单元中。
(3)将WLL、WLR、INN和INP置为指定的电平状态,进而实现向BLK中输入对应的2bit带符号数;2bit带符号数与Mbit无符号数各位上的乘积体现在每个BLK中CBL的位线电压上。
(4)将传输控制模块中位于各BLK间的传输门闭合,不同BLK的CBL相互连通并实现电荷共享,此时,2bit带符号数与Mbit无符号数的乘积体现在计算位线CBL的位线电压的变化上。具体的,CBL的位线电压的变化方向反映乘积的符号,CBL的变化幅度则反映乘积的数值大小。
本实施例电路方案实现2bit×Mbit运算的方式是:该运算转换为M个2bit×1bit的运算,然后将2bit带符号数与Mbit无符号数各位上的运算分配到SBLK中的各个具有不同位权重的BLK上实际执行;此时,各个BLK的运算结果体现在各自的CBL。最后,通过传输控制模块连通各个BLK的CBL,由各个BLK上的电容C进行电荷共享,进而使得CBL的位线电压再次发生变化,最终,CBL位线电压的变化量△V可以体现出最终的乘积结果。
为了使得本实施例SBLK中通过CBL上挂载的电容C对无符号数的位权重进行配置的原理更加清楚,以下以2bit×2bit的运算进行简要说明:
执行2bit×2bit运算时,需要SBLK中的两列BLK,其中一个上挂载的电容为1C,另一个挂载的电容为2C。此时挂载1C电容的BLK为低位运算列,挂载2C电容的BLK为高位运算列。
在实际运算过程,假设运算过程为“+1×11”,乘积结果为“+3”。此时在电路中,两个BLK的CBL上的位线电压在电荷共享前均为VDD,电荷共享后CBL的位线电压仍为VDD,△V=VDD/2。
假设运算过程为“+1×10”,乘积结果为“+2”。此时在电路中,低位BLK的CBL上的位线电压在电荷共享前为VDD/2,高位BLK的CBL上的位线电压在电荷共享前为VDD。考虑到低位BLK挂载的电容为1C,高位BLK挂载的电容为2C,则电荷共享后CBL的位线电压为5VDD/6,△V=VDD/3。
假设运算过程为“+1×01”,乘积结果为“+2”。此时在电路中,低位BLK的CBL上的位线电压在电荷共享前为VDD,低位BLK的CBL上的位线电压在电荷共享前为VDD/2,考虑到低位BLK挂载的电容为1C,高位BLK挂载的电容为2C,则电荷共享后CBL的位线电压为2VDD/3,△V=VDD/6。
假设运算过程为“+1×00”,乘积结果为“+2”。此时在电路中,两个BLK的CBL上的位线电压在电荷共享前均为VDD/2,在电荷共享后的位线电压仍为VDD/2,△V=0。
由此可见,当乘积结果呈+3、+2、+1、0梯级下降时,电荷共享后的CBL上的位线电压的变化量△V也呈VDD/2、VDD/3、VDD/6、0梯级下降,每一级的下降量为VDD/6。
总结规律为:在本实施例的电荷共享机制中,当乘积结果包括2M种情况时,SBLK可以将CBL的位线电压的变化量(从VDD/2到VDD)划分为2M个不同的梯度,并在不同梯度的△V和不同乘积结果的数字量间建立映射关系。
以上仅以2bit带符号数为正数的例子进行介绍,基于相同原理,当2bit带符号数为负数,也应当具备相同规律。同理,当SBLK中的BLK数量增加之后,也应当满足相关规律。
因此,在本实施例方案中当SBLK的各个BLK上挂载不同大小的电容C之后,在本实施例的电荷共享机制下,2bit带符号数和Mbit无符号数的乘法运算结果会体现在计算位线CBL的位线电压的变化量上。通过逐次逼近ADC对电荷共享后的CBL上的位线电压的变化方向和具体数值进行量化,可以准确得到不同运算结果的数字量。
三、多bit带符号数与4bit无符号数乘法
前文已经详细介绍如何基于单个SBLK实现对多bit无符号数中的各位进行位权重配置,在此基础上,本实施例如果可以进一步实现对多bit带符号数中的各位进行位权重配置,将可以进一步实现多bit带符号数与4bit无符号数间的乘法运算。
具体的,本实施例利用多个SBLK配合关断控制模块、传输控制模块、移位器和全加器共同构成4bit以上带符号数与Mbit无符号数乘法运算的操作对象,操作逻辑为:
(1)将带符号数中的数值部分逐位分解为多个单比特数,并将单比特数与原符号位组合,构成多个2bit带符号数。
(2)利用关断控制模块将同列中各个SBLK隔离开;并由隔离后的每个SBLK配合传输控制模块完成各个2bit带符号数与Mbit无符号数间的乘法运算,得到对应的多个乘积结果。
(3)采用移位器根据2bit带符号数的数值部分在原多比特带符号数中的位权重,对各个乘积结果进行移位,然后在将移位后的乘积结果通过加法器进行加和,最终得到4bit以上带符号数与Mbit无符号数的乘积。
举例来说,假设需要执行的运算为A0A1A2A3×B0B1B2B3,这是一个4bit带符号数乘以4bit无符号数的案例。其中,A0、A1、A2、A3为带符号数的各位的值,其中A0为符号位,A1、A2、A3为数值位;各位上的位权重分别为:22、21、20。B0、B1、B2、B3为无符号数的各位的值,B0、B1、B2、B3均为数值位;各位上的位权重分别为:23、22、21、20。
本发明执行该逻辑运算时,将A0A1A2A3×B0B1B2B3转换为A0A1×B0B1B2B3×(22)+A0A2×B0B1B2B3×(21)+A0A3×B0B1B2B3×(20)。然后选择不同SBLK分别执行A0A1×B0B1B2B3得到乘积一,执行A0A2×B0B1B2B3得到乘积二,执行A0A3×B0B1B2B3得到乘积三。再通过ADC量化出乘积一、乘积二和乘积三的数字量,接着通过移位器将乘积一左移两位,并将乘积一左移一位。最后通过加法器将移位后的乘积一、乘积二与乘积三相加,得到最终的运算结果。
在实施例的方案中,关断控制模块的作用是将各个SBLK分离开来,以便各个SBLK执行2bit带符号数与4bit无符号数乘法的逻辑运算任务时互相不受影响。此外,需要特别说明的是:在本实施例图1的存内计算电路中,每个BLK的上下两端均设置一个计算模块,因此每个SBLK配合传输控制模块能够完成2bit或3bit带符号数与4bit无符号数乘法的运算任务。其中,每个BLK中的其中一行SRAM单元一方面配合上方的计算模块完成其中一个运算任务;另一方面配合下方的计算模块完成另一个运算任务。
因此在执行2bit或3bit带符号数与4bit无符号数的乘法运算时,最少只需要一个SBLK即可。而当需要执行4bit或5bit带符号数与4bit无符号数的乘法运算时,最少只需要两个SBLK。以此类推。
此外,本实施例的电路方案实现乘累加运算的方式是直接利用加法器对各个乘法运算的结果进行加和。
实施例2
本实施例提供一种CIM芯片,其由如实施例1的输入权重比特位可配置的存内计算电路封装而成。在实际应用中,本发明实施例提供的输入权重比特位可配置的存内计算电路属于是一种集成电路,因此该集成电路通常以芯片产品的形成被生产、销售和适应使用。
性能测试
为了进一步验证本发明已提供的带符号乘法的存内运算电路的性能,技术人员制定实验计划,对图1中所示的电路的功能进行仿真实验:
1、2bit带符号数与单比特无符号数的乘法
本实施例首先以电路其中一个6T-SRAM单元及其对应的计算部分的电路为实验对象,进行2bit带符号数乘以1bit无符号数的乘法运算,以验证电路执行带符号数乘法时(+1×1和-1×1)的运算性能。其中,将计算前(2ns之前)CBL的预充电压设定为VDD/2。
实验过程中计算位线CBL的信号变化如图9所示。分析图9中的信号流图可以发现:从2ns开始,电路开始进行2bit带符号数乘以1bit无符号数计算。当2bit带符号数为‘11’(指-1)时,WLL置高电位,WLR置低电位,符号位表示负、1bit无符号数为“1”,CBL放电到VSS。当2bit带符号数为‘01’(指+1)时,WLL置低电位,WLR置高电位,符号位表示正、1bit无符号数为“1”,CBL冲电到VDD。
结合图9数据还可以证明:本发明方案中每个BLK的功能正常,满足了设计目标。
2、带符号数(-1)与4比特权重的乘法
本实验进一步以电路中的一个BLK为操作对象,进行2bit带符号数乘以4bit无符号数的计算。电路中,3个传输门将同一行的4个基于6T-SRAM单元的运算单元的CBL连接在一起,各类中挂载的电容C的大小分别是8C、4C、2C、1C。在本次运算过程,VDD设定为900mV,)CBL在2ns之前预充到达的设定电压为450mV。
实验过程中依次执行了“11”乘以“0000”到“1111”的所有计算任务,电路在2ns开始进行2bit带符号数乘以4bit无符号数计算,2.2ns时开始电荷共享:得到的CBL的信号流图如图10所示。
观察图中数据可以发现:当2bit带符号数为“11”(WLL置高电位,WLR置低电位,符号位表示负)、4bit无符号数为“0000”,四个CBL保持450mV不变,经过电荷共享后的CBL为448.55mV;4bit无符号数为“0001”,经过电荷共享后的CBL为421.32mV;4bit无符号数为“0010”,经过电荷共享后的CBL为391.05mV;4bit无符号数为“0011”,经过电荷共享后的CBL为358.97mV;4bit无符号数为“0100”,经过电荷共享后的CBL为331.07mV;4bit无符号数为“0101”,经过电荷共享后的CBL为300.72mV;4bit无符号数为“0110”,经过电荷共享后的CBL为268.75mV;4bit无符号数为“0111”,经过电荷共享后的CBL为243.42mV;4bit无符号数为“1000”,经过电荷共享后的CBL为209.92mV;4bit无符号数为“1001”,经过电荷共享后的CBL为181.73mV;4bit无符号数为“1010”,经过电荷共享后的CBL为150.36mV;4bit无符号数为“1011”,经过电荷共享后的CBL为119.17mV;4bit无符号数为“1100”,经过电荷共享后的CBL为91.92mV;4bit无符号数为“1101”,经过电荷共享后的CBL为62.03mV;4bit无符号数为“1110”,经过电荷共享后的CBL为33.25mV;4bit无符号数为“1111”,经过电荷共享后的CBL为1.99mV。
3、带符号数(+1)与4比特权重的乘法
本实验继续以电路中的一个BLK为操作对象,进行2bit带符号数乘以4bit无符号数的计算。电路中,3个传输门将同一行的4个基于6T-SRAM单元的运算单元的CBL连接在一起,各类中挂载的电容C的大小分别是8C、4C、2C、1C。在本次运算过程,VDD设定为900mV,)CBL在2ns之前预充到达的设定电压为450mV。
实验过程中依次执行了“01”乘以“0000”到“1111”的所有计算任务,电路在2ns开始进行2bit带符号数乘以4bit无符号数计算,2.2ns时开始电荷共享:得到的CBL的信号流图如图11所示。
分析图中数据可以发现:
当2bit带符号数为“01”(WLL置低电位,WLR置高电位,符号位表示正)、4bit无符号数为“0000”,四个CBL保持450mV不变,经过电荷共享后的CBL为450mV;4bit无符号数为“0001”,经过电荷共享后的CBL为481.25mV;4bit无符号数为“0010”,经过电荷共享后的CBL为510.02mV;4bit无符号数为“0011”,经过电荷共享后的CBL为539.11mV;4bit无符号数为“0100”,经过电荷共享后的CBL为570.07mV;4bit无符号数为“0101”,经过电荷共享后的CBL为599.48mV;4bit无符号数为“0110”,经过电荷共享后的CBL为630.58mV;4bit无符号数为“0111”,经过电荷共享后的CBL为661.94mV;4bit无符号数为“1000”,经过电荷共享后的CBL为688.31mV;4bit无符号数为“1001”,经过电荷共享后的CBL为719.83mV;4bit无符号数为“1010”,经过电荷共享后的CBL为752.36mV;4bit无符号数为“1011”,经过电荷共享后的CBL为780.66mV;4bit无符号数为“1100”,经过电荷共享后的CBL为811.02mV;4bit无符号数为“1101”,经过电荷共享后的CBL为840.83mV;4bit无符号数为“1110”,经过电荷共享后的CBL为868.52mV;4bit无符号数为“1111”,经过电荷共享后的CBL为898.87mV。
对图10和图11的数据进行分析可知:在多比特乘法运算过程中,各个运算结果的差值的波动在误差允许范围内,本电路在放电时具有较好的线性度,电路运算结果的可靠性较高。结合图10和图11的数据还可以证明:本发明方案中每个SBLK的功能正常,满足了设计目标。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种输入权重比特位可配置的存内计算电路,其用于实现多比特的带符号数和无符号数间的乘法运算,其特征在于,其包括:
外围电路,
SRAM阵列,其用于配合所述外围电路实现数据存储功能;所述SRAM阵列中位于同一行的各个SRAM单元两侧的传输管连接在同一组字线WLL和WLR上;各个SRAM单元还用于存储乘法运算中无符号数的其中一个bit位;
关断控制模块,其包括多个传输门,各个传输门用于打断所述SRAM阵列的位线BL和BLB;进而将所述SRAM阵列划分成以n行单列的SRAM单元为一个基本单元的多个部分;
多个计算模块,所述SRAM阵列中每个基本单元与至少一个所述计算模块连接,进而构成一个BLK;每个计算模块包括两个NMOS管N3、N4,两个PMOS管P1、P2,以及一个电容C;电路连接关系为:P1和N3的漏极连接在计算位线CBL上;N3的栅极接位线BL,P1的栅极接位线BLB; N3的源极与N4的漏极相连;P1的源极与P2的漏极相连;N4的栅极接输入字线INN;P2的栅极接输入字线INP;N4的源极接VSS;P2的源极接VDD;电容C的一端连接在计算位线CBL上,另一端接VSS;位于同一行的各个计算模块共享同一条计算位线CBL以及输入字线INN和INP;
传输控制模块,其由多个传输门构成;每个传输门用于管理相邻两个计算模块间的计算位线CBL的导通状态,进而在不同列上通过电荷共享的方式实现对乘法运算中无符号数的各位进行权重配置;
输入模块,其包括输入编码单元、关断管理单元、传输管理单元和预充电单元;所述输入编码单元与每一行的各个计算模块相连;所述输入编码单元用于管理字线WLL、WLR以及输入字线INN和INP的电平状态,进而输入由WLL、WLR、INN和INP的电平状态表征的乘法运算的带符号数;所述关断管理单元用于产生输入到所述关断控制模块中的各个传输门的使能信号;所述传输管理单元用于产生输入到所述传输控制模块中的各个传输门的使能信号;所述预充电单元用于在执行逻辑运算任务时将计算位线CBL预充到指定电位;
输出模块,其包括ADC单元、移位器和加法器;所述ADC单元的输入端连接各行的计算位线CBL和参考电平,并用于输出根据CBL的电平状态量化出的乘法运算结果;所述加法器和移位器共同实现对乘法运算中带符号数的各位进行权重配置。
2.如权利要求1所述的输入权重比特位可配置的存内计算电路,其特征在于:所述SRAM单元采用6T-SRAM单元或其它具有双字线的SRAM单元;
所述6T-SRAM单元包括两个NMOS管N1、N2,以及两个反相器INV0、INV1;电路连接关系如下:INV0的输入端、INV1的输出端与N1的源极相连,并作为存储节点Q;INV0的输出端、INV1的输入端与N2的源极相连,并作为存储节点QB;N1、N2的漏极分别连接在位线BL和BLB上,N1、N2的栅极分别连接字线WLL、WLR。
3.如权利要求1所述的输入权重比特位可配置的存内计算电路,其特征在于:每个BLK中包含两个计算模块,其中一个计算模块连接在当前列中的位线BL和BLB的上方,另一个计算模块连接在当前列中的位线BL和BLB的下方。
4.如权利要求3所述的输入权重比特位可配置的存内计算电路,其特征在于:位于相邻列的M个BLK构成了一个SBLK,在同一个SBLK中,各个BLK的计算模块上挂载的电容C的电容值按照1、2、4、8、…、2M-1的倍率进行配置;各个BLK挂载的电容的电容值倍率即为SBLK中各个BLK执行乘法运算时的位权重。
5.如权利要求4所述的输入权重比特位可配置的存内计算电路,其特征在于:每个BLK作为执行2bit带符号数与1bit无符号数间乘法运算的操作对象,操作逻辑如下:
(1)将1bit无符号数预先存储BLK中指定的SRAM单元中,并将计算位线CBL预充到VSS与VDD的中间电位;
(2)将WLL、WLR、INN和INP置为指定的电平状态,进而实现向BLK中输入对应的2bit带符号数;
(3)对计算结束后的计算位线CBL的电平状态进行量化,得到乘法运算的结果:
其中,当计算位线CBL的位线电压上升,则表示乘积为“+1”;当计算位线CBL的位线电压下降,则表示乘积为“-1”;当计算位线CBL的位线电压保持不变,则表示乘积为“0”。
6.如权利要求5所述的输入权重比特位可配置的存内计算电路,其特征在于:将WLL、INN和INP置低电平,WLR置高电平时,表征输入的乘法运算中的带符号数为“+1”;将WLL、INN和INP置高电平,WLR置低电平,表征输入的乘法运算中的带符号数为“-1”;将WLL和INN置低电平,WLR和INP置高电平,表征输入的乘法运算中的带符号数为“0”。
7.如权利要求6所述的输入权重比特位可配置的存内计算电路,其特征在于:每个SBLK配合传输控制模块共同构成执行2bit带符号数与Mbit无符号数间乘法运算的操作对象,操作逻辑如下:
(1)将各列的计算位线CBL预充到VDD和VSS的中间电位,然后断开传输控制模块中位于各BLK间的传输门;
(2)将Mbit的无符号数按位分解为M个单比特数,并将各个单比特数按对应位权重预存到各个BLK中指定的SRAM单元中;
(3)将WLL、WLR、INN和INP置为指定的电平状态,进而实现向BLK中输入2bit带符号数;2bit带符号数与Mbit无符号数各位上的乘积体现在每个BLK中CBL的位线电压上;
(4)将传输控制模块中位于各BLK间的传输门闭合,不同BLK的CBL实现电荷共享,此时,2bit带符号数与Mbit无符号数的乘积体现在计算位线CBL的位线电压的变化上:
其中,CBL的位线电压的变化方向反映乘积的符号,CBL的变化幅度则反映乘积的数值大小。
8.如权利要求7所述的输入权重比特位可配置的存内计算电路,其特征在于:多个SBLK、配合所述关断控制模块、传输控制模块、移位器和全加器共同构成4bit以上带符号数与Mbit无符号数乘法运算的操作对象,操作逻辑为:
(1)将带符号数中的数值部分逐位分解为多个单比特数,并将单比特数与原符号位组合,构成多个2bit带符号数:
(2)利用关断控制模块将同列中各个SBLK隔离开;并由隔离后的每个SBLK配合传输控制模块完成各个2bit带符号数与Mbit无符号数间的乘法运算,得到对应的多个乘积结果;
(3)采用移位器根据2bit带符号数的数值部分在原多比特带符号数中的位权重,对各个乘积结果进行移位,然后在将移位后的乘积结果通过加法器进行加和,最终得到4bit以上带符号数与Mbit无符号数的乘积。
9.如权利要求8所述的输入权重比特位可配置的存内计算电路,其特征在于:每个SBLK配合传输控制模块至多能够完成两个2bit带符号数与Mbit无符号数乘法的运算任务,其中,每个BLK中的其中一行SRAM单元配合上方的计算模块完成其中一个运算任务;另外一行SRAM单元配合下方的计算模块完成另一个运算任务。
10.一种CIM芯片,其特征在于:其由如权利要求1-9中任意一项所述的输入权重比特位可配置的存内计算电路封装而成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410719768.8A CN118298872B (zh) | 2024-06-05 | 2024-06-05 | 输入权重比特位可配置的存内计算电路及其芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410719768.8A CN118298872B (zh) | 2024-06-05 | 2024-06-05 | 输入权重比特位可配置的存内计算电路及其芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN118298872A CN118298872A (zh) | 2024-07-05 |
CN118298872B true CN118298872B (zh) | 2024-08-16 |
Family
ID=91684746
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410719768.8A Active CN118298872B (zh) | 2024-06-05 | 2024-06-05 | 输入权重比特位可配置的存内计算电路及其芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118298872B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117636945A (zh) * | 2024-01-26 | 2024-03-01 | 安徽大学 | 5bit带符号位的同或与同或累加运算电路、CIM电路 |
WO2024103480A1 (zh) * | 2022-11-14 | 2024-05-23 | 中国科学院微电子研究所 | 存算一体电路、芯片及电子设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115048075A (zh) * | 2022-04-27 | 2022-09-13 | 北京大学 | 基于电容耦合的sram存算一体芯片 |
CN115910152A (zh) * | 2022-11-28 | 2023-04-04 | 安徽大学 | 电荷域存内计算电路以及具有正负数运算功能的存算电路 |
CN118132034A (zh) * | 2024-03-04 | 2024-06-04 | 安徽大学 | 乒乓式乘法单元及重构加法器树的存内计算电路、芯片 |
-
2024
- 2024-06-05 CN CN202410719768.8A patent/CN118298872B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024103480A1 (zh) * | 2022-11-14 | 2024-05-23 | 中国科学院微电子研究所 | 存算一体电路、芯片及电子设备 |
CN117636945A (zh) * | 2024-01-26 | 2024-03-01 | 安徽大学 | 5bit带符号位的同或与同或累加运算电路、CIM电路 |
Also Published As
Publication number | Publication date |
---|---|
CN118298872A (zh) | 2024-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11948659B2 (en) | Sub-cell, mac array and bit-width reconfigurable mixed-signal in-memory computing module | |
CN110414677B (zh) | 一种适用于全连接二值化神经网络的存内计算电路 | |
CN113467751B (zh) | 一种基于磁性随机存储器的模拟域存内计算阵列结构 | |
CN113255904B (zh) | 电压裕度增强型电容耦合存算一体单元、子阵列及装置 | |
CN114546335B (zh) | 一种多比特输入与多比特权重乘累加的存内计算装置 | |
CN113257306B (zh) | 一种基于静态随机存取存储器的存算一体阵列及加速装置 | |
CN113936717B (zh) | 一种复用权重的存算一体电路 | |
CN115039177A (zh) | 低功耗存储器内计算位单元 | |
CN111816234A (zh) | 一种基于sram位线同或的电压累加存内计算电路 | |
CN110941185B (zh) | 一种用于二值神经网络的双字线6tsram单元电路 | |
CN117271436B (zh) | 基于sram的电流镜互补存内计算宏电路、及芯片 | |
KR20220150895A (ko) | 시간-공유 컴퓨트-인-메모리 비트셀 | |
CN117130978A (zh) | 基于稀疏跟踪adc的电荷域存内计算电路及其计算方法 | |
CN114974337B (zh) | 一种基于自旋磁随机存储器的时间域存内计算电路 | |
CN115390789A (zh) | 基于磁隧道结计算单元的模拟域全精度存内计算电路及方法 | |
CN113393879A (zh) | 非易失存储器与sram混合的存算一体数据快速加载结构 | |
CN117079688A (zh) | 一种电流域8tsram单元及动态自适应量化的存算电路 | |
Lee et al. | A charge-sharing based 8t sram in-memory computing for edge dnn acceleration | |
CN117877553A (zh) | 一种用于非易失性随机存储器的存内计算电路 | |
Zhang et al. | In-memory multibit multiplication based on bitline shifting | |
CN118298872B (zh) | 输入权重比特位可配置的存内计算电路及其芯片 | |
CN116204490A (zh) | 一种基于低电压技术的7t存算电路、乘累加运算电路 | |
CN115910152A (zh) | 电荷域存内计算电路以及具有正负数运算功能的存算电路 | |
CN112951290B (zh) | 一种基于非易失性随机存储器的内存计算电路及装置 | |
CN116543808A (zh) | 一种基于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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |