CN110196709B - 一种基于RRAM的非易失性8位Booth乘法器 - Google Patents
一种基于RRAM的非易失性8位Booth乘法器 Download PDFInfo
- Publication number
- CN110196709B CN110196709B CN201910481437.4A CN201910481437A CN110196709B CN 110196709 B CN110196709 B CN 110196709B CN 201910481437 A CN201910481437 A CN 201910481437A CN 110196709 B CN110196709 B CN 110196709B
- Authority
- CN
- China
- Prior art keywords
- rram
- bit
- multiplier
- booth
- partial product
- 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
Images
Classifications
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0004—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Chemical & Material Sciences (AREA)
- Crystallography & Structural Chemistry (AREA)
- Static Random-Access Memory (AREA)
- Logic Circuits (AREA)
Abstract
本发明公开了一种基于RRAM的非易失性8位Booth乘法器,该乘法器采用RRAM存储乘数的Booth编码,主要包括部分积产生模块,Wallace加法树和加法链。本发明的一种基于RRAM的非易失性8位Booth乘法器与现有技术相比,在速度,功耗,面积方面都有所改进。本发明的乘法器有以下优点:数据密度更高;功耗少,面积小;读写功耗和漏电功耗少;乘数B的配置信息掉电不会丢失;可靠性高,上电速度快。由于乘法是数据密集型应用中的基本算术操作,所以本发明的乘法器可以被应用到多种类型的计算系统中。
Description
技术领域
本发明属于集成电路领域,与内存计算技术相关,具体涉及一种基于RRAM的非易失性8位Booth乘法器。
背景技术
存储器包括易失性存储器(Volatile Memory,VM)和非易失性存储器(Non-volatile Memory,NVM)。易失性存储器一旦断电,数据就会丢失,读写速度较快,在ns级别,目前常见的有静态随机存储器SRAM和动态随机存储器DRAM;非易失性存储器是一种断电不丢失数据的存储器,而且存储密度较高,但是读取速度相对较慢,通常在us或是ms级别,目前常见的有EPROM,EEPROM和Flash等等。作为存储逻辑的媒介,存储器技术在内存计算系统中是比较关键的一部分。但是目前常见的存储器无法满足内存计算系统的要求。因此随着工艺尺寸的不断缩小以及传统存储器所带来的弊端,许多高性能的新型存储器模型被提出,有些甚至已经进入了产品化阶段。其中阻变式随机存储器(Resistive Random AccessMemory),铁电随机存储器(Ferroelectric RAM,FeRAM),相变随机存储器(Phase ChangeMemory,PCM),磁性随机存储器(Magnetic Random Access Memory,MRAM)是四种具有代表性的新型存储器。这些存储器普遍具有1.高读写速度;2.高数据/存储密度;3.低功耗;4.趋于零的上电延迟;5.更低成本;6.非易失性等特点,基本综合了易失性存储器以及非易失性存储器的优点,因此这些新型的非易失性存储器特点非常有益于内存计算系统的设计。
硬件乘法器是现代超大规模集成电路高速算术运算的重要部件之一。在FPGA,微控制器和数字信号处理器中有着广泛的应用。相比于软件实现的乘法器,硬件乘法器直接使用硬件逻辑电路实现相应乘法,所以具有更快的计算速度以及更少的硬件资源占用。通常来说,硬件乘法器通过部分积(Partial Product,PP)直接累加完成乘法运算。对于N位的乘法,就会有N个部分积需要累加,这也是传统阵列乘法器的设计思路。但是,随着N逐渐增大,部分积的数量也逐渐增加,于是就会增大加法树的复杂度和冗余度,随之带来延时,乘法器面积和功耗的增加。因此目前许多部分积产生算法以及加法树优化方法被提出来以改进乘法器的性能(面积,功耗和速度等),其中主要包括Pezaris算法,Baugh-Wooley算法,Booth算法和Wallace加法树(Wallace Tree)。前三种算法都是针对符号数乘法问题以及部分积的优化问题,而Wallace加法树则优化了加法树部分的结构。就前三者而言,Pezaris算法所要求的全加器种类较多,乘法阵列不规整,不适合规则版图设计,Baugh-Wooley算法中求补操作也需要额外复杂电路和时间。并且这两类算法也是基于传统的阵列乘法,部分积数目依旧与乘法位数N相同,并没有减少。在多位的乘法运算中,这两类算法依旧具有比较大的延时,面积和功耗。Booth算法是目前主流的乘法器算法之一。相比较于前两种算法,Booth算法可以减少部分积的数目,从而改善加法树的复杂度。从目前已有的设计来说,Booth算法结合Wallace树的乘法器设计是目前广泛得到应用和认可的。目前在硬件乘法器方面,有各种类型的研究,按照乘法器的算法来分有Booth乘法器,Vedic乘法器,Dadda乘法器以及上文提到的另外3种算法。按照乘法器计算精度来分有精确乘法器以及近似乘法器两类。按照输入输出方式来分有串行乘法器和并行乘法器两类。无论是改变算法,结构还是计算精度等,总的来说,这些乘法器都是针对速度,面积,功耗三个方面来进行优化。
目前新型非易失性存储器发展已经比较成熟,而且基于这些存储器的全加器设计,触发器设计较多。尽管可以使用类似的方法,通过新型的非易失性存储器构建Booth乘法器从而进一步减少功耗,面积,延迟,但是目前还缺乏相应有效的逻辑电路设计。
发明内容
针对目前非易失性的乘法器设计缺乏的问题,本发明提出了一种基于RRAM的非易失性8位Booth乘法器,该乘法器在速度,功耗,面积方面都有所改进,可以被应用到多种类型的计算系统中。
本发明的目的通过以下技术方案实现:
一种基于RRAM的非易失性8位Booth乘法器,采用RRAM存储乘数的Booth编码,该乘法器主要包括部分积产生模块,Wallace加法树和加法链,
所述的部分积产生模块结合了Booth编码器以及部分积模块,该模块具体包括RRAM阵列以及读取电路,所述的RRAM阵列由多个元胞构成,所述的元胞由4个1T1R的存储单元组成,元胞中的NMOS用于接受被乘数A及其补码的1位输入,RRAM用于存储乘数B的Booth编码;所述的元胞用于存储1个部分积中的1位;所述的读取电路由电容充/放电电路以及动态锁存比较器构成,用于读取RRAM阵列所产生的部分积数据;所述的电容充/放电电路包含1个充电回路和1个放电回路,充电回路包含1个用来充电的开关NMOS和1个对应的参考电源,放电回路包含1个用来控制放电的开关NMOS以及1个用来消除电荷注入效应以及时钟馈通效应的虚拟晶体管,且放电回路与RRAM阵列中的任一条位线连接;
所述的Wallace加法树主要由简化的4-2压缩器、2位全加器以及1位全加器组成,用于对部分积数据进行相加;所述简化的1位全加器的设计方法具体为:根据部分积模块的输出结果,1位全加器包括3种输入情况:00、01、10,根据1位全加器的真值表得到对应的卡诺图,再经过化简可得到相应的逻辑方程及原理图;依次可类推简化的4-2压缩器和2位全加器;简化的Wallace Tree可以将加法树的深度从3级减少到2级,不仅提高了加法树的计算速度,同时也减少了加法树的计算功耗以及版图面积;
所述的加法链为曼切斯特进位链,用于最后一级的相加,其进位延迟更短,可以减少乘法器整体的延迟,从而提高时钟速度。
上述技术方案中,进一步地,所述的Booth乘法器为1排结构,将所述的部分积产生模块的四个部分积放在1排。
进一步地,所述的Booth乘法器为2排结构,将所述的部分积产生模块的四个部分积拆分成2排,其中一排包括2个部分积。
进一步地,所述的读取电路中的电容充/放电电路采用两相非交叠时钟控制。
更进一步地,在Booth编码过程中,每一个通过Booth编码产生的部分积需要在最高位扩展符号位到15位,并将其通过以下方法缩减:
将一个15位部分积补码S S S S S S S S Z7……Z1改写为-S Z7……Z1,并由此得到简化的部分积形式;
对上述简化的部分积形式进行数学处理,得到修改的部分积形式;所述的数学处理包含加、减和布尔运算;
将8位Booth乘法器中四个部分积均按照此方法进行缩减,从而减少RRAM阵列中的存储单元。
进一步地,所述的RRAM包括两种状态:高阻态HRS和低阻态LRS,且高低阻态之间的切换由WL,BL和SL信号控制。
更进一步地,在RRAM阵列元胞中,将对应Booth编码的RRAM设置成LRS,其余三个设置成HRS;当RRAM的状态配置完成后,WL,SL,BL信号被隔离。
本发明的基于RRAM的非易失性8位Booth乘法器具有以下优点:
1.存储密度更高;
2.通过简化部分积产生模块以及Wallace树来减少功耗和面积;
3.在RRAM中存储了乘数B从而减少了读写功耗和漏电功耗;
4.乘数B的配置信息掉电不会丢失;
5.高可靠性;
6.上电速度快。
附图说明
图1为传统Booth乘法器设计方案示意图;
图2为传统符号位扩展方法示意图;
图3为简化的部分积形式;
图4为修改的部分积形式I;
图5为修改的部分积形式II;
图6为本发明乘法器的顶层示意图;
图7为图6中第(1)排RRAM阵列详细示意图;
图8为RRAM阵列元胞;
图9为1T1R结构;
图10为RRAM编程脉冲;
图11为电容充/放电形式读取电路;
图12为动态锁存比较器;
图13为两相不交叠时钟产生电路;
图14为电容充/放电形式读取电路仿真波形;
图15为AD1.5b仿真结果;
图16为1位全加器逻辑方程及原理图;
图17为简化的2位全加器设计图;
图18为简化的4-2压缩器设计图;
图19为简化Wallace Tree;
图20为传统Wallace Tree;
图21为11位曼切斯特进位链;
图22为一排结构的Booth乘法器设计示意图;
图23为瞬态仿真波形;
图24为传统SRAM-based FPGA不同模式功耗柱状图。
具体实施方式
下面结合实施例和附图对本发明的技术方案与传统方法的区别做进一步的说明:
传统Booth乘法器的设计方案以及Booth原理
1.传统Booth乘法器设计方案
传统Booth乘法器设计主要包括4个部分:Booth编码器,部分积产生模块,加法树以及最后一级加法链。
2.Radix-4 Booth编码原理说明
一个有符号的n位二进制数可以被表示为如下形式:
[[yn-1,yn-2,yn-3,...,y0]]=-2n-1yn-1+2n-2yn-2+2n-3yn-3+20y0 (2-1)
通过2a=2a+1-2a将等式(1)修改为等式(2),如下:
其中k=1,2...,n/2,y-1=0,当n是奇数时,符号位前应该再增加一位相同符号位再进行编码。于是对于乘法R=A*B来说,使y=B,那么可以得到
从等式(2-3)中可以得到radix-4Booth编码表,如表1所示:
表1 Radix-4 Booth编码表
B<sub>i-1</sub> | B<sub>i-2</sub> | B<sub>i-3</sub> | Operation |
0 | 0 | 0 | 0 |
0 | 0 | 1 | 1A |
0 | 1 | 0 | 1A |
0 | 1 | 1 | 2A |
1 | 0 | 0 | -2A |
1 | 0 | 1 | -1A |
1 | 1 | 0 | -1A |
1 | 1 | 1 | 0 |
本发明的基于RRAM的非易失性8位Booth乘法器的一种具体实施例:
1对传统radix-4Booth算法的改进
对于8位的Booth乘法器而言,每一个通过Booth编码产生的部分积都需要在最高位扩展符号位到16位,这也就意味着更多的存储器需要用来存储这些冗余的符号位,传统的扩展如图2所示,其中黑点表示符号位,白点表示数据位。
事实上,这些冗余的符号位可以通过以下方法缩减:
一个15位部分积补码可以表示为如下形式:
S S S S S S S S Z7 Z6 Z5 Z4 Z3 Z2 Z1
这种冗余形式可以被改写成:
-S Z7 Z6 Z5 Z4 Z3 Z2 Z1
因为
-s*214+(s*213+s*212+s*211+s*210+s*29+s*28)
=-s*214+s*(214-28)=-s*28 (2-4)
这样,对于8位radix-4Booth乘法器,四个部分积可以表示图3。
凭借这种缩减方法,我们可以大大减少符号位所占用的存储单元。图4的例子反映的是±1A,±1A,±1A,±1A(对应8位radix-4乘法的四个部分积操作,从低位部分积到高位部分积)类型的Booth编码,同时图4所展示的这种修改部分积形式大概减少了60%传统扩展方法所需要的符号位存储器。
以此类推,对于8位的radix-4Booth编码而言,有多种不同的编码组合。图5显示的是±1A,±2A,±1A,±2A类型的Booth编码。
综合不同的Booth编码类型,修改的部分积形式会有些许的差异,但比传统扩展所需要的符号位要少。相比较于传统扩展方法,这种方法最多能够将符号位缩减60%。
2本发明的乘法器设计方案
图6是本发明的乘法器的顶层示意图,相比于传统Booth乘法器,本发明利用RRAM存储乘数的Booth编码,从而结合了Booth编码器以及部分积模块,构成了新的部分积产生模块,如图6中的(1)(2)排所示。以下对顶层设计方案中各部分进行简介。
部分积产生模块:包括了RRAM阵列以及读取电路,RRAM阵列由多个1T1R(一个NMOS,一个RRAM)的元胞构成,RRAM中存储了乘数B的Booth编码,被乘数A由1T1R中的NMOS输入。读取电路由电容充/放电电路以及动态锁存比较器构成,用于读取RRAM阵列所产生的部分积数据。
Wallace加法树:部分积产生模块产生4个部分积,我们通过Wallace树对四个部分积进行相加。由于我们的部分积产生模块产生的部分积有特殊性,所以我们的Wallace树是经过简化的。Wallace树主要由简化的4-2压缩器,2位全加器以及1位全加器组成。
曼切斯特进位链(Manchester Carry Chain):Wallace树输出两个加法操作数,在最后一级加法器中,利用曼切斯特进位链构成的加法器对这两个数进行相加。
3各部分功能简介
部分积产生模块:在图6中,四个部分积被拆分成2排,每排有两个部分积,第(1)排和第(2)排除了符号位不同外其余都相同,其中,PP表示部分积,AD表示读取电路。
所以这里仅介绍第(1)排的详细结构。
图7的RRAM阵列由图8的元胞构成,而图8的元胞由四个1T1R结构(图9)构成。AD1.5b表示2位部分积输出的读取电路,AD1b表示1位部分积输出的读取电路。
RRAM有两个状态,一个高阻态HRS,一个低阻态LRS,高低阻态之间切换由WL,BL和SL信号控制。具体编程脉冲如图10所示。
将RRAM阵列元胞中对应Booth编码的RRAM设置成LRS,其余三个设置成HRS,即可完成相应的Booth编码。
以B=“0110 0011”为例:“0110 0011”对应Booth编码为-1A,+1A,-2A,+2A(从低位到高位),所以第一个部分积中的“-1A”型RRAM需要被设置为LRS,其余类型设置为HRS。第二个部分积中的“+1A”型RRAM需要被设置为LRS,其余类型设置为HRS。第三个以及第四个部分积同理。这样“0110 0011”就以Booth编码的的形式存储到了RRAM中。当RRAM的状态配置完成后,WL,SL,BL信号需要被隔离。
电容充/放电电路:部分积产生模块的部分积是以电阻形式存储的,需要通过电流方式读取出来。图11展示的是图7中任意一条位线的读取电路,其中Cell表示一条位线上挂接的所有RRAM。通过电容充电的形式进行数据的读取。
具体原理为:M1用来控制电容放电电路的导通与关断,M3用来控制电容充电电路的导通与关断。M2虚拟管是当M1关断时,用来减少电荷注入效应以及时钟馈通效应对VX节点电压的影响。在电容充电回路,当M3开通,M1关断时,参考电压VREF将VX节点电压充到十分接近VREF。在放电回路,当M1开通,M3关断时,C1开始通过连接到M1的负载电阻(RRAM)放电。以图7中的AD1.5b为例,每条位线上只有三种情况的阻值:又根据电容放电方程
其中,VX为电容电压,Vref为初始电容电压,R为电容放电回路的等效电阻,C为电容放电回路的等效电容,t为时间。
可知不同的电阻值会导致电容放电速率的不同。通过这种机制,在某一个相同时间,区分得到不同的VX,对于AD1.5b来说,因为有三种可能情况的电阻值,就会有VOL,VOmid,Voh三种情况的Vx值。为了满足这种设计需求,需要使用两相不交叠时钟来产生门极控制信号Charge和Discharge。两相不交叠时钟产生电路如图13所示,两个延时单元Delay可以分别调节两个时钟两边的非交叠时间。
在本发明的读取电路设计中,使用两相非交叠时钟有如下两个优点:1、Charge和Discharge信号在任何时间不会同时有效,可以防止电容充电电路和放电电路同时导通;2、当两个信号同时无效时,电容电压Vx保持稳定,这时候就可以通过将Vx进行锁存,进行下一步比较。
通过这样的方法,就可以将部分积产生模块中的部分积数据转换成对应的电压VX。具体仿真波形见图14,A0,A1是输入数据(被乘数A),由图可见,当A0,A1=“00”,“01”,“11”时,VX有三种不同的值VOL,VOmid,VOH,从而实现了读取数据的功能。
动态锁存比较器:由于VX是模拟数据信号,需要转换成对应的数字信号,从而方便后续加法树的计算。动态锁存比较器是一个比较好的选择,相比于静态锁存比较器,动态锁存比较器速度更快,功耗更低(仅在再生阶段产生电流)。一般动态锁存比较器包含预防大级和锁存比较级两部分,预防大级的作用主要是初步放大输入信号,提高比较电压范围和比较速度。但是在本发明中,VX较小,使用PMOS输入的锁存比较级即可。如图12所示,当Latch信号处于高电平的时候,M4,M5关断,M10,M13开通,这时比较器处于复位阶段,Out和Outb都为“0”,当Latch信号为高时,M4,M5开通,M10,M13关断,比较器处于再生阶段,此时VX从M6输入,IM6与参考电流IM7比较,经过M8,M9,M11,M12形成的正反馈电路,“a”点与“b”点的电压差逐渐增大,最终一个上升到Vdd,另一个下降到Vss,完成比较,输出对应结果。
因此,可通过设置不同的Vc值来区分VOL,VOmid,VOH。按照这种方法可以完成AD1b和AD1.5b设计。对于AD1b来说,需要一个电容充/放电读取电路以及一个动态锁存比较器来区分“0”和“1”编码,AD1.5b则需要一个电容充/放电读取电路和两个动态锁存比较器来区分“00”,“01”和“11”三种类型编码。具体仿真结果见图15。Latch信号下降沿有效,并开始比较,所以,Latch下降沿的时间必须处于Discharge以及Charge信号都无效的非交叠时间内,因为此时VX稳定,可以产生稳定的电流IM6与参考电流IM7进行比较。如仿真结果所示,当A0,A1=“00”时,输出结果Out0,Out1=“00”;当A0或A1有一个为“1”时,Out0=“1”;当A0,A1=“11”时,Out0,Out1=“11”。仿真结果符合预期功能实现。
简化Wallace树:传统的Wallace Tree仅使用进位保留加法器CSA(或者说3-2压缩器)来实现,从而减少关键路径延时。我们的乘法器设计同样可以采用CSA来实现加法树部分。但是考虑到AD1.5b的输出Out0,Out1只有三种情况:“00”,“01”,“11”,所以我们WallaceTree中的1位全加器,2位全加器以及4-2压缩器可以被简化,从而减少晶体管的数量和整体面积。以1位全加器为例,其真值表如表2所示。
表2简化1位全加器真值表
根据1位全加器的真值表,可以得到对应的卡诺图,经过化简,得到相应的逻辑方程以及原理图,见图16。
相比于普通全加器的34T设计方案,本发明的全加器只使用了26个晶体管,同时关键路径延时也更短,也就意味着本发明的乘法器工作时钟频率可以进一步提高。类似的,简化的2位全加器以及4-2压缩器设计分别如图17,18所示。
通过这些简化的基本电路,可以构成简化的Wallace Tree,如图19所示。
相比于如图20所示的传统的Wallace Tree,简化的Wallace Tree可以将加法树的深度从3级减少到2级,不仅提高了加法树的计算速度,同时也减少了加法树的计算功耗以及版图面积。
曼切斯特进位链:在最后一级加法链设计中,我们使用11位曼切斯特进位链实现,相比于普通的级联加法器,曼切斯特进位链的进位延迟更短,可以减少乘法器整体的延迟,从而提高时钟速度。而与超前进位加法器(CLA)或者其他改进进位链相比的话,曼切斯特进位链结构简单而且高效。对于曼切斯特进位链来说,最大路径延时tdelay_max是当进位链通过C1’,C2’,C3’…,Cout’整条路径放电的时候产生。对于11位曼切斯特进位链来说,tdelay_max还是处于比较可观的延迟范围。此外,曼切斯特进位链是时钟控制的,具有预充电和放电计算两个阶段,所以输出结果是变化的。因此我们需要用D触发器锁存和同步最终的乘法结果。
部分积产生模块的变形
在图6的顶层示意图中,我们把部分积拆解成了两排,每排分别有两个部分积。事实上,除了这种拆解方式,还有其他多种拆解方式,比如拆解成2排,其中一排3个部分积,另一排一个部分积;或者是拆解成4排,每排一个部分积;又或者是将4个部分积放在一排里。在图22中,我们展示了一排结构的Booth乘法器的顶层示意图。
相比于图6中的2排结构,1排结构的部分积模块使用了更少读取电路,这也就意味着电容的充放电功耗会相对较少。但是1排结构的乘法器中一条位线的阻值有了更多的选择:对于AD3b连接的位线来说有4种阻值情况: 对于AD4b连接的位线来说有5种阻值情况:所以读取电压VX有了更多的变化,需要AD3b以及AD4b的设计。AD3b有4种输出情况:“000”,“001”,“011”,“111”;AD4b有5种输出情况:“0000”,“0001”,“0011”,“0111”,“1111”。具体设计方法同AD1b以及AD1.5b的设计。
实施例1
本发明的乘法器整体仿真及功能验证
本实施例中乘法器的设计环境是Cadence公司的Virtuoso Schematic工具,仿真环境是使用的是低阈值电压的45nm工艺库(GDPK045),工作电压Vdd=0.8V,工作时钟CLK=357MHz。所使用的RRAM模型具体参见P.Chen and S.Yu,"Compact Modeling of RRAMDevices and Its Applications in 1T1R and 1S1R Array Design,"in IEEETransactions on Electron Devices,vol.62,no.12,pp.4022-4028,Dec.2015。
在本实施例的RRAM模型中,我们修改了部分参数,使得RRAM的RHRS≈100RLRS,以符合我们乘法器的设计需求。
瞬态仿真结果:
瞬态仿真结果如图23所示。被乘数A以“01101101”从外部寄存器输入,乘数B在RRAM被配置为“-1,+1,-1,+1”,也就是“00110011”的Booth编码。乘法器有两个阶段:一个是预配置阶段,另一个是正常工作阶段。预配置阶段主要是将某些RRAM配置成低阻态LRS,已完成乘数B的Booth编码形式存储。正常工作状态则是读入被乘数A,进行对应的乘法计算。这两个阶段通过传输门进行隔离,并通过“Pre_configure”信号进行转换。如图23所示,当“Pre_configure”为低电平时,图7中的各条位线连接到BL信号(2V),需要配置的RRAM的对应晶体管的门极连接到WL信号(1V),这样,对应的RRAM被配置到LRS,乘数B的Booth编码信息就被存储到RRAM中。14ns之后,“Pre_configure”上升到高电平,此时乘法器转入正常工作状态。在这个阶段,BL和WL信号都是成高阻态的。各条位线都连接到对应的AD上,1T1R中晶体管的门极也不再是WL信号,而是输入被乘数A。
在正常工作状态,我们利用原始CLK(357MHz)信号产生两相非交叠时钟“Charge”和“Discharge”。电容的初始电压被设置为400mV。首先,在“Discharge”信号的上升沿,放电电路开通,电容通过RRAM放电。当电容电压VX下降到某一个值时,“Discharge”下降,放电电路关断,电容电压VX维持在一个固定值,等待动态比较器的比较。在“Latch”信号的下降沿,动态锁存比较器比较VX和给定参考电压VC,比较完成后,输出对应部分积位。然后在“Charge”信号的上升沿,比较器的输出被锁存,并作为下一级Wallace Tree的输入,同时电容在这时候再次充电到400mV,等待下一次输入比较。当“Discharge”信号为低电平时,曼切斯特进位链处于再生阶段,开始接受从Wallace Tree输出的数据并进行最后一级的加法计算,并传递给D触发器的输入端。最后,在“Charge”信号的下降沿,D触发器输出对应的乘法结果,完成一次乘法计算。基于输入的数据,输出的乘法结果理论上应该是“001010110110111”,得到的仿真波形D0,D1,D2,D3…D14与预期数据契合。同时对该乘法器进行了随机性测试:在乘数B不变的情况下,改变输入数据A;在输入数据A不变的情况下,改变乘数B的Booth编码存储。测试表明,本发明的乘法器实现了比较精确的乘法功能。
实施例2
1单个乘法器性能比较
为了全面评估8位新型非易失性Booth乘法器的性能,表3显示了1排结构乘法器,2排结构乘法器的速度,面积,功耗,非易失性,并且将它们与[1](参见S.Kuang,J.Wang,andC.Guo,“Modified booth multipliers with a regular partial product array,”IEEETransactions on Circuits and Systems II:Express Briefs,vol.56,no.5,pp.404–408,May 2009.)和[2](参见W.Liu,L.Qian,C.Wang,H.Jiang,J.Han,and F.Lombardi,“Design of approximate radix-4 booth multipliers for error-tolerantcomputing,”IEEE Transactions on Computers,vol.66,no.8,pp.1435–1441,Aug 2017.)所提出的8位乘法器进行了比较。同时我们利用相同的工艺库GDPK045设计了传统Booth乘法器,评估了它的速度,面积,功耗,以便于在相同条件下比较新型乘法器与传统乘法器的区别。
表3 Radix-4 Booth乘法器比较
如表3所示,1排和2排结构的基于RRAM的新型乘法器拥有更少的功耗,更快的速度,以及更少的面积。比如,在相同的电源电压(Vdd=0.8V),工艺(45nm)和时钟速度(357MHz)情况下,我们的1排和2排乘法器相比于传统Booth乘法器大概分别减少了45.49%和44.66%的功耗。同时由于新型乘法器的部分积产生模块集成了Booth编码单元,所以面积也有所改善。比如,相比于传统Booth乘法器,1排结构和2排结构分别减少了33.02%和29.84%的面积。除此之外,新型乘法器的计算速度也十分可观,可达357MHz。
2系统角度功耗分析
本发明的Booth乘法器可用于多种系统,包括FPGA,数字信号处理器等。传统的基于SRAM的系统(比如基于SRAM的FPGA)主要包括配置模式,正常工作模式以及睡眠模式。配置模式主要是配置系统的各项参数,睡眠模式是当系统处于空闲状态时,进入低功耗状态以减少能量损耗。我们主要从数据读取,数据存储,开机和关机四个方面对我们的乘法器从系统角度进行功耗分析。
数据读取:传统系统中,需要从CPU之外的外部存储器(例如SRAM)读取两个乘法操作数A和B到CPU进行乘法运算。而相比于传统系统结构,我们的乘法器主要少了从外部内存读取乘数B到寄存器的读取操作,这样这部分读取功耗就可以被节省下来。事实上,因为数据的读取操作相比于乘法器的运算操作而言会更加频繁,所以这部分读取功耗往往会比乘法器本身的功耗要大得多,通过在乘法器结构中存储乘数B可以大幅度降低系统整体的功耗。
数据存储:在传统的基于SRAM的系统中,晶体管数量较多,一般一个SRAM cell包含6个晶体管,这就会导致存储器的面积较大。但是对于本发明的系统而言,一个存储单元只需要一个RRAM和一个晶体管(1T1R),并且RRAM可以进行三维堆叠,从而可以大幅度减少存储器的面积。普通SRAM存储的漏电功耗也很大。而对于我们的1T1R结构而言,RRAM不仅读写速度快,同时拥有极低的漏电功耗,特别适合低功耗应用场合。
系统开关机功耗:对于一些生物医学以及物联网应用电路,极低的功耗是第一选择,这些系统往往不长时间工作,所以会采用关机来节省漏电功耗而不是采用睡眠模式。但是采取关机节省功耗需要考虑盈亏平衡点。
以图24为例进行说明,面积A是关机所能节省的待机功耗,面积B是SRAM-basedFPGA系统开机的功耗,当面积A大于面积B时,说明关机能够节省更多的功耗。对于普通SRAM系统来说,SRAM关机丢失数据,所以每次开机都需要重新配置系统,这样就会造成面积B较大,不利于关机减少功耗。而对于RRAM系统来说,RRAM具有瞬时通电以及非易失性能力,所以开机功耗基本为0,所以很容易通过关机来实现系统功耗的降低,同时也可以使关机时间缩短,提高低功耗系统的频繁工作能力。
Claims (7)
1.一种基于RRAM的非易失性8位Booth乘法器,其特征在于,采用RRAM存储乘数的Booth编码,该乘法器主要包括部分积产生模块,Wallace加法树和加法链,
所述的部分积产生模块结合了Booth编码器以及部分积模块,该模块具体包括RRAM阵列以及读取电路,所述的RRAM阵列由多个元胞构成,所述的元胞由4个1T1R的存储单元组成,元胞中的NMOS用于接受被乘数A及其补码的1位输入,元胞中的RRAM用于存储乘数B的Booth编码,所述的元胞用于存储1个部分积中的1位;所述的读取电路由电容充/放电电路以及动态锁存比较器构成,用于读取RRAM阵列所产生的部分积数据;所述的电容充/放电电路包含1个充电回路和1个放电回路,充电回路包含1个用来充电的开关NMOS和1个对应的参考电源,放电回路包含1个用来控制放电的开关NMOS以及1个用来消除电荷注入效应以及时钟馈通效应的虚拟晶体管,且放电回路与RRAM阵列中的任一条位线连接;
所述的Wallace加法树主要由简化的4-2压缩器、2位全加器以及1位全加器组成,用于对部分积数据进行相加;所述简化的1位全加器的设计方法具体为:根据部分积模块的输出结果,1位全加器包括3种输入情况:00、01、10,根据1位全加器的真值表得到对应的卡诺图,再经过化简可得到相应的逻辑方程及原理图;依次可类推简化的4-2压缩器和2位全加器;
所述的加法链为曼切斯特进位链,用于最后一级的相加。
2.根据权利要求1所述的一种基于RRAM的非易失性8位Booth乘法器,其特征在于,所述的Booth乘法器为1排结构,将所述的部分积产生模块的四个部分积放在1排。
3.根据权利要求1所述的一种基于RRAM的非易失性8位Booth乘法器,其特征在于,所述的Booth乘法器为2排结构,将所述的部分积产生模块的四个部分积拆分成2排,其中一排包括2个部分积。
4.根据权利要求1所述的一种基于RRAM的非易失性8位Booth乘法器,其特征在于,所述的读取电路中的电容充/放电电路采用两相非交叠时钟控制。
5.根据权利要求1-4任一项所述的一种基于RRAM的非易失性8位Booth乘法器,其特征在于,在Booth编码过程中,每一个通过Booth编码产生的部分积需要在最高位扩展符号位到15位,并将其通过以下方法缩减:
将一个15位部分积补码S S S S S S S S Z7……Z1改写为-S Z7……Z1,并由此得到简化的部分积形式;
对上述简化的部分积形式进行数学处理,得到修改的部分积形式;所述的数学处理包含加、减和布尔运算;
将8位Booth乘法器中四个部分积均按照此方法进行缩减,从而减少RRAM阵列中的存储单元。
6.根据权利要求1所述的一种基于RRAM的非易失性8位Booth乘法器,其特征在于,所述的RRAM包括两种状态:高阻态HRS和低阻态LRS,且高低阻态之间的切换由WL,BL和SL信号控制。
7.根据权利要求6所述的一种基于RRAM的非易失性8位Booth乘法器,其特征在于,在RRAM阵列元胞中,将对应Booth编码的RRAM设置成LRS,其余三个设置成HRS;当RRAM的状态配置完成后,WL,SL,BL信号被隔离。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910481437.4A CN110196709B (zh) | 2019-06-04 | 2019-06-04 | 一种基于RRAM的非易失性8位Booth乘法器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910481437.4A CN110196709B (zh) | 2019-06-04 | 2019-06-04 | 一种基于RRAM的非易失性8位Booth乘法器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110196709A CN110196709A (zh) | 2019-09-03 |
CN110196709B true CN110196709B (zh) | 2021-06-08 |
Family
ID=67753922
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910481437.4A Active CN110196709B (zh) | 2019-06-04 | 2019-06-04 | 一种基于RRAM的非易失性8位Booth乘法器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110196709B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110633069B (zh) * | 2019-09-06 | 2022-09-16 | 安徽大学 | 一种基于静态随机存储器的乘法电路结构 |
CN113767362B (zh) * | 2020-04-01 | 2024-05-17 | 华为技术有限公司 | 一种多模融合乘法器 |
CN116504281A (zh) * | 2022-01-18 | 2023-07-28 | 浙江力德仪器有限公司 | 计算单元、阵列及计算方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733413A (zh) * | 2017-04-24 | 2018-11-02 | Arm 有限公司 | 移位指令 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100552620C (zh) * | 2007-09-21 | 2009-10-21 | 清华大学 | 基于二次Booth编码的大数乘法器 |
TWI489375B (zh) * | 2010-12-03 | 2015-06-21 | Via Tech Inc | 無進位乘法裝置及其處理方法 |
CN102722352B (zh) * | 2012-05-21 | 2015-06-03 | 华南理工大学 | 一种Booth乘法器 |
CN103294446B (zh) * | 2013-05-14 | 2017-02-15 | 中国科学院自动化研究所 | 一种定点乘累加器 |
CN105739945B (zh) * | 2016-01-22 | 2018-10-16 | 南京航空航天大学 | 一种基于改进部分积阵列的修正Booth编码乘法器 |
US10372415B2 (en) * | 2016-05-04 | 2019-08-06 | Texas Instruments Incorporated | Internally truncated multiplier |
US10140090B2 (en) * | 2016-09-28 | 2018-11-27 | International Business Machines Corporation | Computing and summing up multiple products in a single multiplier |
CN107977191B (zh) * | 2016-10-21 | 2021-07-27 | 中国科学院微电子研究所 | 一种低功耗并行乘法器 |
CN109753268B (zh) * | 2017-11-08 | 2021-02-02 | 北京思朗科技有限责任公司 | 多粒度并行运算乘法器 |
-
2019
- 2019-06-04 CN CN201910481437.4A patent/CN110196709B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733413A (zh) * | 2017-04-24 | 2018-11-02 | Arm 有限公司 | 移位指令 |
Non-Patent Citations (1)
Title |
---|
Performance comparison review of Radix-based multiplier designs;Kuala Lumpur等;《2012 4th International Conference on Intelligent and Advanced Systems (ICIAS2012)》;20120612;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110196709A (zh) | 2019-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Jhang et al. | Challenges and trends of SRAM-based computing-in-memory for AI edge devices | |
CN110414677B (zh) | 一种适用于全连接二值化神经网络的存内计算电路 | |
CN110196709B (zh) | 一种基于RRAM的非易失性8位Booth乘法器 | |
Lee et al. | Bit parallel 6T SRAM in-memory computing with reconfigurable bit-precision | |
Mittal et al. | A survey of SRAM-based in-memory computing techniques and applications | |
Chen et al. | Analysis and optimization strategies toward reliable and high-speed 6T compute SRAM | |
CN110428048B (zh) | 一种基于模拟延时链的二值化神经网络累加器电路 | |
Chen et al. | A 1.87-mm 2 56.9-GOPS accelerator for solving partial differential equations | |
Ma et al. | In-memory computing: The next-generation ai computing paradigm | |
Rios et al. | An associativity-agnostic in-cache computing architecture optimized for multiplication | |
CN117316237B (zh) | 时域8t1c-sram存算单元及时序跟踪量化的存算电路 | |
Liu et al. | IM3A: Boosting Deep Neural Network Efficiency via I n-M emory A ddressing-A ssisted A cceleration | |
Reddy et al. | Low power, high speed error tolerant multiplier using approximate adders | |
Zhang et al. | In-memory multibit multiplication based on bitline shifting | |
Sehgal et al. | A bit-serial, compute-in-SRAM design featuring hybrid-integrating ADCs and input dependent binary scaled precharge eliminating DACs for energy-efficient DNN inference | |
CN116204490A (zh) | 一种基于低电压技术的7t存算电路、乘累加运算电路 | |
Kushwaha et al. | A 65nm compute-in-memory 7T SRAM macro supporting 4-bit multiply and accumulate operation by employing charge sharing | |
Zhao et al. | Configurable memory with a multilevel shared structure enabling in-memory computing | |
Monga et al. | A Novel Decoder Design for Logic Computation in SRAM: CiM-SRAM | |
Yu et al. | Approximate digital-in analog-out multiplier with asymmetric nonvolatility and low energy consumption | |
CN113889158A (zh) | 一种基于sram的存内计算电路、装置及电子设备 | |
Zhang et al. | A High-Density and Reconfigurable SRAM-Based Digital Compute-In-Memory Macro for Low Power AI Chips | |
Bharti et al. | Compute-in-memory using 6T SRAM for a wide variety of workloads | |
Wang et al. | An 8T SRAM Based Digital Compute-In-Memory Macro For Multiply-And-Accumulate Accelerating | |
Li et al. | Energy-Efficient In-SRAM Accumulation for CMOS-based CNN Accelerators |
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 |