一种多位正负单比特存内计算单元、阵列及装置
文献发布时间:2023-06-19 11:27:38
技术领域
本发明涉及存内计算领域,特别是涉及一种多位正负单比特存内计算单元、阵列及装置。
背景技术
深度卷积神经网络(DCNNs)在人工智能等领域发展迅速,随着它的逐步发展,需要越来越多的考虑尺寸的大小、效率、能耗等方面的问题。传统的计算过程中,权重是在存储器和运算单元之间移动作用的,这不符合低功耗的要求。内存计算(IMC)对DCNN加速越来越有吸引力。传统的8T SRAM结构晶体管数量较多,面积较大,并且不考虑正负的情况。
发明内容
本发明的目的是提供一种多位正负单比特存内计算单元、阵列及装置,减小了占用面积同时扩大了应用范围。
为实现上述目的,本发明提供了如下方案:
一种多位正负单比特存内计算单元,包括:多个存储部分和一个计算部分,各所述存储部分均包括多个用于存储权重的晶体管,所述计算部分包括管M5、管M6、管M7、管M8、位线RWLM_P、位线RWLL_P、位线RWLM_N、位线RWLL_N和输出信号线RBL;
管M5的源极与位线RWLM_P连接,管M5的栅极和管M7的栅极均与所述存储部分的位线BL相连,管M6的源极与位线RWLL_P连接,管M6的栅极和管M8的栅极均与所述存储部分的位线BLB相连,管M7的漏极与位线RWLM_N连接,管M8的漏极与位线RWLL_N连接,管M5的漏极、管M6的漏极、管M7的源极和管M8的源极均与输出信号线RBL连接;
各所述存储部分的位线BL共线,各所述存储部分的位线BLB共线;所述位线BL和所述位线BLB均为所述存储部分的位线,用于将所述存储部分的权重读取到所述计算部分;所述位线RWLM_P、所述位线RWLL_P、所述位线RWLM_N和所述位线RWLL_N用于输入正负单比特数据;所述计算部分用于所述权重和所述正负单比特数据的相乘,所述权重和所述正负单比特数据相乘结果通过所述输出信号线RBL输出。
可选地,所述存储部分管M1、管M2、管M3和管M4,管M1和管M2的源极均与电源VDD连接,管M1的栅极分别与管M2的漏极和管M4的漏极连接,管M2的栅极分别与管M1的漏极和管M3的漏极连接,管M3的栅极和管M4的栅极均与字线WL连接,管M3的源极与位线BL连接,管M4的源极与位线BLB连接。
可选地,所述存储部分的数量为8。
可选地,所述管M1和所述管M2均为PMOS管,所述管M3和所述管M4均为NMOS管。
可选地,所述管M5和所述管M6均为PMOS管,所述管M7和所述管M8均为NMOS管。
可选地,所述正负单比特数据包括+1、-1和0。
本发明还提供了一种多位正负单比特存内计算阵列,包括矩阵式排列的所述多位正负单比特存内计算单元;
各行所述多位正负单比特存内计算单元中,管M5的源极均与位线RWLM_P连接,管M6的源极均与位线RWLL_P连接,管M7的漏极均与位线RWLM_N连接,管M8的漏极均与位线RWLL_N连接;管M3的栅极与管M4的栅极均与位线WL连接;
各列所述多位正负单比特存内计算单元的输出信号线RBL共点连接,实现各列的乘累加计算。
本发明还提供了一种多位正负单比特存内计算装置,包括所述多位正负单比特存内计算阵列、输入驱动器、读写位线驱动模块、行解码器和乘累加读出控制模块;
所述输入驱动器用于分别为所述存内计算阵列中每行存内计算单元提供位线RWLM_P、位线RWLL_P、位线RWLM_N和位线RWLL_N;
所述读写位线驱动模块用于分别为各存内计算单元提供位线BL和位线BLB;
所述行解码器用于分别为各行存内计算单元提供位线WL;
所述乘累加读出控制模块用于输出各列的乘累加计算结果。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明通过多个存储部分共用一个计算部分,减少了晶体管的数量,降低了占用面积,同时通过位线RWLM_P、位线RWLL_P、位线RWLM_N和位线RWLL_N输入的数据包括正值和负值,契合了数据处理需要考虑符号的情况,扩大了应用范围。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种多位正负单比特存内计算单元结构示意图;
图2为本发明一种多位正负单比特存内计算装置结构示意图;
图3为本发明三种输入模式示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种多位正负单比特存内计算单元、阵列及装置,减小了占用面积同时扩大了应用范围。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1为本发明一种多位正负单比特存内计算单元结构示意图,如图1所示,一种多位正负单比特存内计算单元包括:多个存储部分和一个计算部分,各所述存储部分均包括多个用于存储权重的晶体管,所述计算部分包括管M5、管M6、管M7、管M8、位线RWLM_P、位线RWLL_P、位线RWLM_N、位线RWLL_N和输出信号线RBL;
管M5的源极与位线RWLM_P连接,管M5的栅极和管M7的栅极均与所述存储部分的位线BL相连,管M6的源极与位线RWLL_P连接,管M6的栅极和管M8的栅极均与所述存储部分的位线BLB相连,管M7的漏极与位线RWLM_N连接,管M8的漏极与位线RWLL_N连接,管M5的漏极、管M6的漏极、管M7的源极和管M8的源极均与输出信号线RBL连接;
各所述存储部分的位线BL共线,各所述存储部分的位线BLB共线;所述位线BL和所述位线BLB均为所述存储部分的位线,用于将所述存储部分的权重读取到所述计算部分;所述位线RWLM_P、所述位线RWLL_P、所述位线RWLM_N和所述位线RWLL_N用于输入正负单比特数据;所述计算部分用于所述权重和所述正负单比特数据的相乘,所述权重和所述正负单比特数据相乘结果通过所述输出信号线RBL输出。
所述存储部分管M1、管M2、管M3和管M4,管M1和管M2的源极均与电源VDD连接,管M1的栅极分别与管M2的漏极和管M4的漏极连接,管M2的栅极分别与管M1的漏极和管M3的漏极连接,管M3的栅极和管M4的栅极均与字线WL连接,管M3的源极与位线BL连接,管M4的源极与位线BLB连接。
在图1中,G表示管M1-管M8的栅极,D表示管M1-管M8的漏极,S表示管M1-管M8的源极。
所述存储部分的数量为8,8个存储部分的结构相同,8个存储部分分别对应字线WL1、WL2、......和WL8。
所述管M1和所述管M2均为PMOS管,所述管M3和所述管M4均为NMOS管。
所述管M5和所述管M6均为PMOS管,所述管M7和所述管M8均为NMOS管。
所述正负单比特数据包括+1、-1和0。
本发明还提供了一种多位正负单比特存内计算阵列,包括矩阵式排列的所述多位正负单比特存内计算单元(MACB),如图2所示。
各行所述多位正负单比特存内计算单元中,管M5的源极均与位线RWLM_P连接,管M6的源极均与位线RWLL_P连接,管M7的漏极均与位线RWLM_N连接,管M8的漏极均与位线RWLL_N连接;管M3的栅极与管M4的栅极均与位线WL连接;
各列所述多位正负单比特存内计算单元的输出信号线RBL共点连接,实现各列的乘累加计算。
如图2所示,一种多位正负单比特存内计算装置,包括所述多位正负单比特存内计算阵列、输入驱动器(Channle-Input-Driver,CID)、读写位线驱动模块(R/W BL driver)、行解码器(Row Decoder)和乘累加读出控制模块(MAC readout blocks)。
存内计算阵列共64列,1列包括16个存内计算单元(MACB)。第1列中各存内计算单元对应的位线BL分别为位线BL0[0]、位线BL0[1]、......、位线BL0[15],位线BLB分别为位线BLB0[0]、位线BLB0[1]、......、位线BLB0[15]。第1列中各存内计算单元的输出信号线RBL均连接到RBL[0],......,第64列中各存内计算单元的输出信号线RBL均连接到RBL[63]。
各行中存内计算单元中各存储部分的字线WL分别为字线WL[0],WL[1],......,WL[7](WL[0]为WL1,WL[1]为WL2,......,WL[7]为WL8),各存内计算单元共用字线WL[0]、WL[1]、......和WL[7]。
第1行中输入位线分别为位线RWLM-P[0]、位线RWLL-P[0]、位线RWLM-N[0]和位线RWLL-N[0],......,第16行中输入位线分别为位线RWLM-P[15]、位线RWLL-P[15]、位线RWLM-N[15]和位线RWLL-N[15]。
输入驱动器控制位线RWLM-P、位线RWLL-P、位线RWLM-N和位线RWLL-N输入到存内计算阵列中,读写位线驱动模块(R/W BL driver)通过位线BL和位线BLB与MACB连接,行解码器(Row Decoder)则控制字线WL来实现对MACB的控制,MACB的计算结果由输出信号线RBL控制输出到乘累加读出控制模块(MAC readout blocks)。
输入驱动器用于输入数据,控制输入位线(位线RWLM_P、位线RWLL_P、位线RWLM_N和位线RWLL_N)上的数据,使输入位线上的数据与存储阵列中存的数据(权重)进行计算。
读写位线驱动模块用于分别为各存内计算单元提供位线BL和位线BLB。读写位线驱动模块用于实现权重的存取以及读出。
行解码器用于分别为各行存内计算单元提供位线WL。行解码器(Row Decoder)用于控制权重的存储以及对权重的选择(用于控制权重输入到MACB,以及控制权重的选择)。
乘累加读出控制模块用于输出各列的乘累加计算结果。乘累加读出控制模块实现对输出信号线RBL输出的RBL信号的综合处理,输出计算结果。乘累加读出控制模块包括模数转换电路ADC。乘累加读出控制模块主要是对RBL信号进行处理,RBL信号作为计算结果,是一个模拟信号,经过模数转换电路ADC后,转化为数字信号作为结果输出。
权重从外界输入到存储部分的过程:以一个MACB举例,R/W BL driver控制位线BL和位线BLB的输入,当位线BL=0,位线BLB=1时,Row Decoder控制字线WL打开,则位线BL和位线BLB的状态被分别写入,使得管M1导通,权重0被写入。
权重被读取到计算部分:Row Decoder控制字线WL1-WL8其中某一个为高电平,使得该字线(字线WL1-WL8中高电平的字线)对应的存储部分的权重被输出到位线BL和位线BLB上,对计算部分进行控制。
与传统的存算结构相比,本发明首先改变了存储部分结构,即图1中的M1-M4管,使用这4管的结构进行权重存储;每个计算单元含有8个存储部分,一次计算时调用一个存储部分所存储的权重,权重采用的是单比特的数据(乘法是权重和输入数据的乘积,输入数据就是图3表示的3种输入状态:0,+1,-1,权重就是存储在存储部分的数据,单比特表示这个数据比特数为1位)。一列由16个计算单元组成,一次计算一整列的数据,意味着16个计算单元一次计算时调用相同序号的存储部分中的权重,就可以实现一次计算得出一个4×4kernel的计算。
如图3所示,RWLM-P(位线RWLM-P),RWLL-P(位线RWLL-P),RWLM-N(位线RWLM-N),RWLL-N(位线RWLL-N)一共可以表达3种输入状态:当RWLM-P和RWLM-N电位均为VDD,RWLL-P和RWLL-N电位均为0时,输入为+1;当RWLM-P和RWLM-N电位均为0,RWLL-P和RWLL-N电位均为VDD时,输入为-1;当RWLM-P和RWLL-P电位均为0,RWLM-N和RWLL-N电位均为VDD时,输入为0。
管M5-管M8结构则用于计算,实现权重和输入数据的加权计算。首先BL(位线BL)和BLB(位线BLB)中(存储部分的权重被读取到BL和BLB上,BL和BLB分别为MACB中贯穿存储部分和计算部分的一根线路)的权重被输入过来。当权重是1的时候,BL=1,BLB=0,此时管M5和管M8导通,当输入为+1时,此时RWLM-P和RWLL-N分别向RBL(输出信号线RBL)上充电,等效于1×1;当输入为-1时,此时RWLM-P和RWLL-N分别使RBL放电,等效于1×(-1);而当输入为0时,RWLM-P使得RBL放电,RWLL-N使得RBL充电,等效于1×0;当权重是-1的时候,BL=0,BLB=1,此时管M6和管M7导通,当输入为+1时,此时RWLL-P和RWLM-N分别使RBL放电,等效于(-1)×1;当输入为-1时,此时RWLL-P和RWLM-N分别向RBL上充电,等效于(-1)×(-1);而当输入为0时,RWLL-P使得RBL放电,RWLM-N使得RBL充电,等效于-1×0。
进行乘累加操作时,首先是数据输入,输入的数据按照图3的输入模式输入,同时行解码器控制WL1-WL8中某一个开启,实现权重的输出。权重通过BL和BLB输入到计算部分。其次就是计算步骤,管M5、管M6、管M7和M8由权重控制是否工作,同时和RWLM-P,RWLL-P,RWLM-N,RWLL-N共同实现计算,结果由RBL输出到乘累加读出控制模块。通过乘累加读出控制模块,实现加权计算和模数转换实现输出。
本发明采用存储部分和计算部分的结合,通过8个存储部分共用一个计算单元,相较过去的存算结构,减少了晶体管的数量,降低了面积。
本发明的计算方案,输入数据含有正负值,契合了某些数据处理需要考虑符号的情况,扩大了应用范围。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
- 一种多位正负单比特存内计算单元、阵列及装置
- 一种多位正负单比特存内计算单元、阵列及装置