CN113031917A - 一种高速概率计算乘法器和计算方法 - Google Patents
一种高速概率计算乘法器和计算方法 Download PDFInfo
- Publication number
- CN113031917A CN113031917A CN202110229795.3A CN202110229795A CN113031917A CN 113031917 A CN113031917 A CN 113031917A CN 202110229795 A CN202110229795 A CN 202110229795A CN 113031917 A CN113031917 A CN 113031917A
- Authority
- CN
- China
- Prior art keywords
- pulse
- parallel
- multiplier
- calculation
- accumulator
- 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.)
- Granted
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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/18—Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Bioinformatics & Computational Biology (AREA)
- Operations Research (AREA)
- Algebra (AREA)
- Life Sciences & Earth Sciences (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Biology (AREA)
- Computing Systems (AREA)
- Digital Transmission Methods That Use Modulated Carrier Waves (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请提出一种高速概率计算乘法器和计算方法。本申请的方法和装置提供了脉冲式概率计算编码、幅度脉冲概率计算调制、精确概率计算乘法器的处理步骤和相应的电路结构。本申请解决了现有概率计算中为了达到高精度要求所需要的概率数计算周期过长的问题。
Description
技术领域
本申请涉及集成电路及类脑计算技术领域,尤其涉及一种高速、低时延的概率计算乘法器和计算方法。
背景技术
概率计算是一种多应用于硬件神经网络等方面的数字计算方法。相比于传统的二进制数的加、减、乘、除、函数等运算,概率数计算在片上硬件资源消耗方面有着巨大的优势。在二进制数计算中所需要的乘法器、加法器等都需要较大的电路面积才能实现。但是用概率数来进行加运算、乘运算时往往只需要一个选择器或者一个逻辑门就可以实现,大大降低了进行一个运算所需的片上资源,因此也格外适用于计算量很大的神经网络与类脑计算领域。
现有的概率计算方法中,概率数乘法器只需要一个与门(单极型概率数)或者一个同或门(双极型概率数)就可以实现。虽然这种实现方法对于概率数脉冲串本身的计算是精确的(在输入序列互不相关的情况下),但是由于经典随机数生成器(SNG)产生的概率数脉冲串本质上是一个伯努利序列,满足二项分布,用计数器的方法将其转换成的二进制数与原二进制数之间就会有误差。要实现较精确的计算就需要较长的序列长度来支撑,而且二进制数每增加1-bit,为保证相同精度就需要将概率数脉冲串长度增加一倍,这就极大地增加了计算所需的周期数。
目前有一种截位乘法器,或者叫乘累积的概率计算乘法器设计被提出,在保持了计算准确性和片上资源低消耗的情况下较好地减小了计算所需时长,但相比起二进制数的计算所需时长,该实现方法依然需要占用很长的周期数,没有解决高精度与低时延的矛盾问题。因此,目前的概率计算神经网络在电路上进行运算时算力低、功耗高、不适合在边缘运算中实现。
发明内容
为解决了现有概率计算中为了达到高精度要求所需要的概率数计算周期过长的问题,本申请提出一种高速概率计算乘法器和计算方法。
本申请实施例提供一种高速概率计算乘法器计算方法,根据输入值A和权重值B计算输出值,其中,A与B的2进制位宽均为n,A为1至2n之间的自然数,包括以下步骤:
对所述输入值进行离散脉冲编码,生成驱动信号,所述驱动信号为离散脉冲串AP,长度为2n个脉冲周期,其中包含A个脉冲1;
所述离散脉冲串分为M=2m段,m<n,使AP=AP1,AP2,…,APM
第i段中,包含A-(i-1)×2n-m个脉冲1,在APi上呈随机分布,其中,i=[(A-1)×2m -n]+1,[]表示取整;
在第i1段中每个脉冲周期上均为脉冲1,其中i1<i;
在第i0段中的每个脉冲周期上均为脉冲0,其中i0>i;
通过所述驱动信号控制累加器,AP中的每一个脉冲1使权重值自加一次,实现所述输入值和多个所述权重值进行乘法计算。
优选地,使用随机数生成器,生成取值范围为1~2n-m之间的随机数P,作为APi上的脉冲1的数量,此时,A=P+(i-1)×2n-m。
优选地,使用并行的M路脉冲生成器,每一路脉冲生成器生成一段离散脉冲串。或者,使用并行的2路脉冲生成器,其中一路用于生成APi,一路用于生成连续2n-m个脉冲1,表示APi0。
在本申请任意一项实施例所述方法中,优选地,使用AP1,AP2,…,APM并行驱动累加器,APi上的每个脉冲1驱动累加器使权重值自加i次,(APi-1⊕APi)的每个脉冲1,驱动累加器使权重值自加i-1次。
在本申请任意一项实施例所述方法中,优选地,驱动权重值自加的方法是,用B的二进制数各位值并行调制驱动信号,形成n位调制脉冲并相加。
本申请还提出一种高速概率计算乘法器,用于实现本申请任意一项实施例所述方法,包括脉冲生成器、随机数生成器、并行调制器、累加器;
所述脉冲生成器,用于产生离散脉冲串;
所述随机数生成器,用于生成随机数,所述随机数用于调制至少一个脉冲生成器,使产生的离散脉冲串中的脉冲1呈现随机分布;
所述并行调制器,包含一个串行输入端口和n个并行输出端口,所述输入端口用于输入驱动信号,n个并行输出端口用于将B的二进制数各位值并行调制在所述驱动信号上,使离散脉冲串AP的每一个脉冲周期生成并行的n位调制脉冲信号;
所述累加器,用于对并行调制器的输出信号进行累加。
优选地,所述累加器通过移位log2K次的方式实现输入数据自加K次,K为偶数。
优选地,所述并行调制器为M个,分别用于调制AP1,AP2,…,APM中的一段;或者,所述并行调制器至少为2个,第1并行调制器用于调制APi,第2并行调制器用于调制连续2n-m个脉冲1。
优选地,所述累加器包含加法器和计数器,所述加法器用于输出低l位;所述计数器用于输出高h位,其中l+h=n。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
本发明提供了一种高速低时延概率计算乘法器设计方法,在保持高精度的前提下显著降低了概率计算乘法所需的时钟周期数,以解决现有概率计算中高精度与高速计算的矛盾。
与传统的与门、同或门乘法器或者截位乘法器相比,本发明所述乘法器计算n-bit数乘法时仅耗费约2n-m个时钟周期,计算速度大幅度提高。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1本申请计算方法确定参数设置的实施例流程图;
图2为用线性反馈移位寄存器(LFSR)对乘数A进行编码的结果;
图3为对乘数B的串行幅度脉冲调制方法示意图;
图4为对乘数B的并行幅度脉冲调制方法示意图;
图5为一种高速低时延概率计算乘法器的实施例结构图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
概率计算是一种多应用于硬件神经网络等方面的数字计算方法。其片上面积小,耗资源少的优势使其适用于神经网络这种计算量很大的领域。
传统的概率计算乘法器是一个与门(单极型概率数)或一个同或门(双极型概率数)构成的,其占有面积非常小,大大减小了片上资源的消耗。但是在概率数脉冲串转换为二进制数时,由于是用频率估计概率,就势必有误差。为了减小误差,就需要将概率数脉冲串的长度扩大。这就使得概率计算在不够准确的同时计算时间也很长。现有的一种截位乘法器设计,虽然在计算时长和精度上有一些提升,但精度与速度仍比直接用二进制数进行计算相差很多,且精度与速度无法同时满足。
因此本文提出高速低时延概率计算乘法器设计,来实施高速概率计算乘法器及其计算方法,利用特殊的脉冲编码调制方法调制乘数与乘数,极大地提高了精度且降低计算时长,解决了高精度与高速计算的矛盾。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1本申请计算方法确定参数设置的实施例流程图。
在进行说明时,为方便直观理解与举例,乘数A与乘数B均以7-bit无符号数为例(n=7),因为目前神经网络在量化后使用8-bit有符号数时识别度最高,其中符号位在乘法计算时可以另行计算,本专利重点为无符号数相乘后无符号数结果的获取。
根据输入值A和权重值B计算输出值,其中,A与B的2进制位宽均为n,A为1至2n之间的自然数。
步骤101、确定作为乘数的输入值A和权重值B,根据脉冲式概率计算编码生成离散脉冲串AP作为驱动信号。
对所述输入值进行离散脉冲编码,生成驱动信号,所述驱动信号为离散脉冲串AP,长度为2n个脉冲周期,其中包含A个脉冲1。
所述离散脉冲串AP有多种生成方式,例如,
脉冲生成电路由一个随机数生成器(RNG)和一个比较器组成。将一个n-bit的二进制数X转换成脉冲串,则随机数生成器在每一个周期在[0,2n-1]区间内生成一个随机数,与二进制数X进行比较,如果随机数比二进制数小,那么比较器输出1,否则为0。这样就得到了一个出现1的概率为X/2n的脉冲串。传统的脉冲生成电路是由一个计数器实现的。通过统计长度为N的脉冲串中“1”的个数来确定二进制数X的值。
为提高精度,可使用线性反馈移位寄存器(LFSR)作为随机数生成器与乘数A进行比较生成概率数脉冲串。一个7-bit的线性反馈移位寄存器,在每27个脉冲周期内遍历[0,27-1]区间内的伪随机数,即在每个脉冲周期生成一个[0,27-1]区间内的伪随机数,每一个数都出现且仅出现一次,与A比较后生成脉冲1或0,即可使每27个周期内脉冲串中“1”的个数等于A。由此调制方法调制乘数A后的脉冲串,其包含完整乘数A信息的有效位数缩短且可固定为27个周期。如图2所示,这样的性质使得统计任意27个周期内脉冲串“1”的个数,其值一定准确地等于A;因此,统计任意B×27个周期内脉冲串“1”的个数,其值一定准确地等于B×A。
进一步地,还可使所述离散脉冲串分为M=2m段,其中,0<m<n,使AP=AP1,AP2,…,APM。
第i段中,包含A-(i-1)×2n-m个脉冲1,在APi上呈随机分布,其中,
i=[(A-1)×2m-n]+1,[]表示取整 (公式1)
在第i1段中每个脉冲周期上均为脉冲1,其中i1<i(此时,i>1);在第i0段中的每个脉冲周期上均为脉冲0,其中i0>i(此时,i<4)。例如,当A在1~32之间时,离散脉冲串AP1中包含A个随机分布的脉冲1,AP2、AP3、AP4均为0。当A在33~64之间时,离散脉冲串AP2中包含A-32个随机分布的脉冲1,AP1中的脉冲均为1,AP2、AP3中的脉冲均为0。当A在65~96之间时,离散脉冲串AP3中包含A-64个随机分布的脉冲1,AP1、AP2中的脉冲均为1,AP4中的脉冲均为0。当A在97~128之间时,离散脉冲串AP4中包含A-96个随机分布的脉冲1,AP1、AP2、AP3中的脉冲均为1。
例如,使用随机数生成器,生成取值范围为1~2n-m之间的随机数P,作为APi上的脉冲1的数量,此时,A=P+(i-1)×2n-m;且i≥1。对于预设的A,还可以在取值范围为1~2n-m之间遍历,生成2n-m个伪随机数,与P=A-(i-1)×2n-m进行比较,当P大于等于该伪随机数时,输出脉冲为1。或者,在取值范围为0~2n-m-1之间遍历,生成2n-m个伪随机数,与P=A-(i-1)×2n-m进行比较,当P大于该伪随机数时,输出脉冲为1。
再例如,用4个线性反馈移位寄存器(LFSR)作为随机数生成器分别生成取值范围分别为0~31、32~63、64~95、96~127的伪随机数,在以上分段范围内遍历的各伪随机数分别与乘数A比较,根据比较结果生成离散脉冲(例如A>伪随机数时,输出脉冲为1),产生4路脉冲串。
步骤102、为减少乘法器的时长,采用乘数B对离散脉冲串AP进行调制,根据要达到的计算时长,确定调制器结构;
为了通过所述驱动信号控制累加器,达到AP中的每一个脉冲1使权重值自加一次,实现所述输入值和多个所述权重值进行乘法计算的目的,对所述离散脉冲串AP进行调制。
一种串行调制方法如图3所示,使用二进制数B为调制信号,若乘数B的二进制格式字符串表示为(bn…b2b1)2=(1011011)2,B的每一位的调制时长为27个脉冲周期,则调制后的7×27长度脉冲串在B的各位上对应的脉冲为全0或与未调制前表示乘数A的脉冲串相同,B的每一位均对应脉冲串AP,这7组脉冲串的幅度权重分别是26、25、24、23、22、21、20,各组脉冲串按权重2k相加(k=0~n-1,此处n=7)。本领域技术人员能够理解,当一组脉冲串AP被计数为A时,将输出二进制数(A)2,将二进制数(A)2与权重值2k相乘时,只需要将表示(A)2的时域脉冲串向右移位k个脉冲周期即可(注意在时域信号中,表示数字低位的脉冲在先)。因此,在解调乘法结果时,首先按权重对离散脉冲串AP中的高脉冲“1”的个数进行累加,可在累加27次后将当前的结果取得的二进制信号右移一个脉冲周期,即从第二位开始累加,以此类推,可实现按幅度权重对脉冲中进行解调。此法可以将乘法计算的时长减少至7×27个时钟周期。
一种并行调制方法如图4所示。进一步减少乘法器的计算时长,采用并行脉冲串的方式对乘数B进行调制。使用的并行调制器,包含一个串行输入端口和n个并行输出端口,所述输入端口用于输入所述驱动信号,n个并行输出端口用于将B的二进制数各位值并行调制在所述驱动信号上,使离散脉冲串AP的每一个脉冲周期生成并行的n位调制脉冲信号。也就是说,调制乘数A后,长度为27脉冲串AP被复制成7组完全相同的脉冲串,与二进制形式乘数B的每一个比特位对应相乘。如图4所示,乘数B在该位上的值为1或0决定了该组脉冲串是存在或者全0。与串行脉冲合成相同,这七组脉冲串的幅度权重分别是26、25、24、23、22、21、20。统计乘法结果时,采用并行接收的方法,则同一个时刻接收的7个比特应为全0或是值为B的二进制数。在接收端使用7-bit加法器对七组脉冲进行接收并相加,进位则使用计数器进行累加。最后将进位计数的结果与加法器的结果拼接起来,就是对乘法结果的二进制数估计,整个计算时延被降低为128个时钟周期。
进一步在不改变精度的条件下提高计算速度,优选地,所述并行调制器为M个,分别用于调制AP1,AP2,…,APM中的一段。例如,可以将上述的1路7组脉冲串扩增为4路7组脉冲串,则每一路调制乘数A的脉冲时长可以减少到原来的1/4,即32个时钟周期。例如,用4个线性反馈移位寄存器(LFSR)作为随机数生成器分别生成取值范围分别为0~31、32~63、64~95、96~127的伪随机数,将伪随机数与乘数A比较(例如A>伪随机数时,输出脉冲为1),产生4路脉冲串,完成对乘数A的调制。则在4路脉冲串里有1路是呈现随机脉冲串的脉冲分布形式,剩下的3路中任意一路应是全0或者全1的脉冲串。例如当乘数A的范围在65~96中间时,第1路和第2路脉冲将全为1,第4路脉冲为全0,第3路脉冲呈现概率数脉冲的特点。用图4所示方法调制乘数B到4路脉冲上,生成4路7组脉冲串。解调计算结果时,先用移位补偿的方式合并成1路9组脉冲串,再用并行接收方法累加为二进制数。该调制方法使乘法器的计算时延再降低至32(即2n-m)个时钟周期,大幅度提高了乘法计算的速度。
在本实施例的基础上,进一步地,还可使用并行的2路脉冲生成器,其中一路用于生成APi,一路用于生成连续2n-m个脉冲1,表示APi0中的任意一路,这是由于APi0中的任意一路均相同,只需要生成一路脉冲信号即可;还由于APi1中的全部脉冲均为0,无需生成信号。
步骤103、设置累加器结构和参数。
所述累加器,用于对并行调制器的输出信号进行累加。所述累加器的结构,包括移位补偿单元、加法器、计数器。根据设定的n、m,设置累加器的结构和输入、输出端口。
在本申请任意一项实施例所述方法中,优选地,驱动权重值自加的方法是,用B的二进制数各位值并行调制驱动信号,形成n位调制脉冲并相加。
在本申请任意一项实施例所述方法中,进一步优选地,使用AP1,AP2,…,APM并行驱动累加器,APi上的每个脉冲1驱动累加器使权重值自加i次,当i>1时,进一步使(APi-1⊕APi)的每个脉冲1,驱动累加器使权重值自加i-1次,此处的i满足公式1;“⊕”表示异或。
例如,当i=1时,离散脉冲串AP1中包含A个随机分布的脉冲1,离散脉冲串AP2、AP3、AP4均为0。AP1上的每个脉冲1驱动累加器使权重值自加1次。
再例如,当i=2时,离散脉冲串AP2中包含A-32个随机分布的脉冲1,AP1中的脉冲均为1,离散脉冲串AP2、AP3中的脉冲均为0。AP2上的每个脉冲1驱动累加器使权重值自加2次(即21次),并且(AP1⊕AP2)的每个脉冲1,驱动累加器使权重值自加1次。
再例如,当i=3时,离散脉冲串AP3中包含A-64个随机分布的脉冲1,离散脉冲串AP1、AP2中的脉冲均为1,离散脉冲串AP4中的脉冲均为0。AP3上的每个脉冲1驱动累加器使权重值自加3次(即1+21次),并且(AP2⊕AP3)的每个脉冲1,驱动累加器使权重值自加2次。
再例如,当i=4时,离散脉冲串AP4中包含A-96个随机分布的脉冲1,离散脉冲串AP1、AP2、AP3中的脉冲均为1。AP4上的每个脉冲1驱动累加器使权重值自加4次(即22次),并且(AP3⊕AP4)的每个脉冲1,驱动累加器使权重值自加3次。
优选地,所述累加器通过所述移位补偿单元,用移位k=log2K个脉冲周期的方式实现输入数据(权重值)自加K次,K为偶数。
优选地,所述并行调制器为M个,分别用于调制AP1,AP2,…,APM中的一段;或者,所述并行调制器至少为2个,第1并行调制器用于调制APi,第2并行调制器用于调制连续2n-m个脉冲1。
优选地,所述累加器包含加法器和计数器,所述加法器用于输出低l位;所述计数器用于输出高h位,其中l+h=n。其中l、h均为正整数。
图2为用线性反馈移位寄存器(LFSR)对乘数A进行编码的结果。即截取B×27个周期长度的脉冲串,该脉冲串上“1”的个数即B×A,这种脉冲式概率计算编码的乘数调制方法设计的乘法器解决了传统概率数乘法器精度不足的问题,但是计算时长为B×2n个脉冲周期。
图3为对乘数B的串行幅度脉冲调制方法示意图。对于使用脉冲编码的乘数调制法调制乘数A(7-bit)后长度为27个时钟周期的脉冲串,将乘数B(7-bit)的每一位二进制信息调制到乘数A的脉冲序列上,生成长度为7×27的脉冲串。也就是是说,计算时长为n×2n个脉冲周期。
图4为对乘数B的并行幅度脉冲调制方法示意图。将A的值累积输出二进制格式字符串(A)2再根据bn…b2b1中每一位中为1的值将(A)2移位相加,考虑移位处理时间,计算时长为2n+n-1个脉冲周期。这里需要说明的是,仅在进行串行移位处理时增加n-1个脉冲周期的处理时间,而并行处理时仅增位即可、无须增加处理时间。
图5为一种高速低时延概率计算乘法器的实施例结构图。
本申请还提出一种高速概率计算乘法器,用于实现本申请任意一项实施例所述方法,包括脉冲生成器、随机数生成器、并行调制器、累加器。
所述脉冲生成器,用于产生离散脉冲串。所述随机数生成器,用于生成随机数,所述随机数用于调制至少一个脉冲生成器,使产生的离散脉冲串中的脉冲1呈现随机分布。
所述并行调制器,包含一个串行输入端口和n个并行输出端口,所述输入端口用于输入驱动信号,n个并行输出端口用于将B的二进制数各位值并行调制在所述驱动信号上,使离散脉冲串AP的每一个脉冲周期生成并行的n位调制脉冲信号;
优选地,所述并行调制器为M个,分别用于调制AP1,AP2,…,APM中的一段;或者,所述并行调制器至少为2个,第1并行调制器用于调制APi,第2并行调制器用于调制连续2n-m个脉冲1。
所述累加器,用于对并行调制器的输出信号进行累加。所述累加器进一步包括移位补偿单元。所述移位补偿单元,通过移位k=log2K次的方式实现输入数据自加K次,K为偶数。优选地,所述累加器包含加法器和计数器,所述加法器用于输出低l位;所述计数器用于输出高h位,其中l+h=n。
例如,使用4个相同n-bit的线性反馈移位寄存器(LFSR)作为随机数生成器(RNG),生成0~2n-2范围内的随机数,分别加0、加2n-2、加2×2n-2、加3×2n-2,得到的4路随机数取值范围分别为0~2n-2-1、2n-2~2×2n-2-1、2×2n-2~3×2n-2-1、3×2n-2~4×2n-2-1,都是均匀分布。将各路随机数分别与乘数A(n-bit)比较,即调制乘数A产生4路脉冲串。再将乘数B(n-bit)调制到4路脉冲串,用乘数B二进制形式的一位上是0还是1表示一组脉冲串的有无,共n组,即赋予不同组脉冲串幅度的含义。一共生成四路n组2n-2-bit的脉冲串。
最后将调制乘数A与乘数B后的4路n组2n-2-bit脉冲串进行解调,恢复成二进制数,便于乘法结果的后续使用。并行接收4路n组脉冲串。随机数取值范围分别为0~2n-2-1、2n-2~2×2n-2-1、2×2n-2~3×2n-2-1、3×2n-2~4×2n-2-1的四路脉冲串,当4路都有高脉冲、取值范围高的3路有高脉冲、取值范围高的2路有高脉冲、取值范围最高的1路有脉冲时,需要分别累加4次、3次、2次、1次,用移位补偿的方式合并成一路n+2组脉冲串,完成将乘法计算结果A×B调制到一路脉冲串上。并行接收n+2组脉冲串,一个周期内同时接收的(n+2)-bit可看作一个二进制数,用(n+2)-bit加法器进行累加,用计数器对进位进行计数作为结果的高位,将进位计数结果与加法器结果拼接为二进制数,即为乘法器乘法结果。乘法器计算时长仅2n-2个时钟周期,且计算结果为精确值。在本申请的实施例中,m=2。
结合步骤101,步骤102所述方法,可以设计精确、高速概率计算乘法器,其结构如图5所示,包含对乘数的调制与对乘法结果的解调。如步骤103,对于7-bit乘数A,使用4个相同5bit的线性反馈移位寄存器(LFSR)作为随机数生成器(RNG),生成的随机数分别加0、加25、加2×25、加3×25,得到的4个随机数取值范围分别为0~31、32~63、64~95、96~127,都是均匀分布。然后将随机数与乘数A比较,产生四路脉冲串。
将乘数B调制到上述4路脉冲上,每一路脉冲生成为7组脉冲,每一路脉冲的有无由乘数B的二进制表达式(bn…b2b1)2决定:若某一位上为0,则该组脉冲串为全0;若某一位上为1,则该组脉冲串与仅调制乘数A后的脉冲串相同。其特征为,这7组脉冲串的幅度权重分别是26、25、24、23、22、21、20,并行接收七组脉冲时,将其看成二进制数,其值为0或乘数B。一共生成4路7组脉冲串,长度为32个时钟周期。
通过累加器实现脉冲编码的二进制恢复。先并行接收4路7组脉冲串转化为1路9组脉冲串,再解调转换成二进制数,二进制表示为(c9…c2c1)2,便于下一级计算使用。
根据上述乘法调制方法,当取值范围高的一路有脉冲时,取值范围低的几路将都有脉冲。在并行接收4路7组脉冲时,若在某个周期内仅取值范围最低的第1路有脉冲,则多路选择器选择接收这一路的脉冲串。由于仅有这一路的七组脉冲串会出现1,其权重为1,直接在每周期接收的7-bit二进制数高位补“00”变为9组脉冲。
当取值范围低的2路有脉冲时,则第2路与第1路都有脉冲,多路选择器选择接收这第2路的脉冲串。则第二路的脉冲串权重为2,因此其转换成的9-bit二进制数为转换前7-bit二进制数的2倍。可以通过在低位、高位分别补“0”实现。
当取值范围低的3路有脉冲时,第3路的权重为3,通过移位后再加上这个数的方式转换成9-bit二进制数,多路选择器选择接收这一路的脉冲串。
当每一路都有脉冲时,第4路的权重为4,通过在低位补“00”实现乘以4,并转换成9-bit二进制数,多路选择器选择接收这一路的脉冲串。
上述转换可将4路7组脉冲串转换成1路9组脉冲串。将这9组脉冲串转换为二进制数时,并行接收9组脉冲串,将同时接收的9-bit看作一个二进制数,用9-bit加法器将32个9-bit二进制数相加,用6-bit的计数器将进位项进行计数,则加法计算结束后,将加法器中结果作为低9位s9…s2s1,计数器中结果作为高5位s14…s11s10,直接拼接即为乘法器乘法结果的二进制表示,其值准确地等于A×B。
上述概率计算乘法器计算结果准确,仅用2n-m个脉冲周期(或时钟周期)完成乘法计算。例如乘数为7bit二进制数时,仅用32个时钟周期即可完成乘法计算,大幅提高了概率计算乘法器的精度和速度,并解决了概率计算乘法器精度与速度矛盾的问题。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种高速概率计算乘法器计算方法,根据输入值A和权重值B计算输出值,其中,A与B的2进制位宽均为n,其特征在于,包括以下步骤:
对所述输入值进行离散脉冲编码,生成驱动信号,所述驱动信号为离散脉冲串AP,长度为2n个脉冲周期,其中包含A个脉冲1;
所述离散脉冲串分为M=2m段,m<n,使AP=AP1,AP2,…,APM
第i段中,包含A-(i-1)×2n-m个脉冲1,在APi上呈随机分布,其中,i=[(A-1)×2m-n]+1,[]表示取整;
在第i1段中每个脉冲周期上均为脉冲1,其中i1<i;
在第i0段中的每个脉冲周期上均为脉冲0,其中i0>i;
通过所述驱动信号控制累加器,AP中的每一个脉冲1使权重值自加一次,实现所述输入值和多个所述权重值进行乘法计算。
2.如权利要求1所述方法,其特征在于,使用随机数生成器,生成取值范围为1~2n-m之间的随机数P,作为APi上的脉冲1的数量,此时,A=P+(i-1)×2n-m。
3.如权利要求1所述方法,其特征在于,使用并行的M路脉冲生成器,每一路脉冲生成器生成一段离散脉冲串。
4.如权利要求1所述方法,其特征在于,使用并行的2路脉冲生成器,其中一路用于生成APi,一路用于生成连续2n-m个脉冲1,表示APi0。
5.如权利要求1~4任意一项所述方法,其特征在于,AP1,AP2,…,APM并行驱动累加器,APi上的每个脉冲1驱动累加器使权重值自加i次,(APi-1⊕APi)的每个脉冲1,驱动累加器使权重值自加i-1次。
6.如权利要求1~4任意一项所述方法,驱动权重值自加的方法是,用B的二进制数各位值并行调制驱动信号,形成n位调制脉冲并相加。
7.一种高速概率计算乘法器,用于实现权利要求1~6任意一项所述方法,其特征在于:包括脉冲生成器、随机数生成器、并行调制器、累加器;
所述脉冲生成器,用于产生离散脉冲串;
所述随机数生成器,用于生成随机数,所述随机数用于调制至少一个脉冲生成器,使产生的离散脉冲串中的脉冲1呈现随机分布;
所述并行调制器,包含一个串行输入端口和n个并行输出端口,所述输入端口用于输入驱动信号,n个并行输出端口用于将B的二进制数各位值并行调制在所述驱动信号上,使离散脉冲串AP的每一个脉冲周期生成并行的n位调制脉冲信号;
所述累加器,用于对并行调制器的输出信号进行累加。
8.如权利要求7所述概率计算乘法器,其特征在于,所述累加器通过移位log2K次的方式实现输入数据自加K次,K为偶数。
9.如权利要求7所述概率计算乘法器,其特征在于,
所述并行调制器为M个,分别用于调制AP1,AP2,…,APM中的一段;或者,
所述并行调制器至少为2个,第1并行调制器用于调制APi,第2并行调制器用于调制连续2n-m个脉冲1。
10.如权利要求7所述概率计算乘法器,其特征在于,所述累加器包含加法器和计数器,所述加法器用于输出低l位;所述计数器用于输出高h位,其中l+h=n。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110229795.3A CN113031917B (zh) | 2021-03-02 | 2021-03-02 | 一种高速概率计算乘法器和计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110229795.3A CN113031917B (zh) | 2021-03-02 | 2021-03-02 | 一种高速概率计算乘法器和计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113031917A true CN113031917A (zh) | 2021-06-25 |
CN113031917B CN113031917B (zh) | 2022-10-14 |
Family
ID=76465370
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110229795.3A Active CN113031917B (zh) | 2021-03-02 | 2021-03-02 | 一种高速概率计算乘法器和计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113031917B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113343585A (zh) * | 2021-06-29 | 2021-09-03 | 江南大学 | 一种用于矩阵乘法运算的权位分立存算阵列设计方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101794211A (zh) * | 2004-06-30 | 2010-08-04 | 露崎典平 | 随机脉冲产生源及使用该源产生随机数和/或概率的半导体器件、方法和程序 |
CN102541815A (zh) * | 2011-11-16 | 2012-07-04 | 中国科学技术大学 | 一种基于概率计算的正余弦信号的产生方法 |
CN106603099A (zh) * | 2016-12-19 | 2017-04-26 | 四川理工学院 | 一种基于概率计算的单比特接收机信号检测方法 |
CN110377267A (zh) * | 2019-07-25 | 2019-10-25 | 中北大学 | 一种基于概率计算集中序列的有符号数的加/减法器 |
-
2021
- 2021-03-02 CN CN202110229795.3A patent/CN113031917B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101794211A (zh) * | 2004-06-30 | 2010-08-04 | 露崎典平 | 随机脉冲产生源及使用该源产生随机数和/或概率的半导体器件、方法和程序 |
CN102541815A (zh) * | 2011-11-16 | 2012-07-04 | 中国科学技术大学 | 一种基于概率计算的正余弦信号的产生方法 |
CN106603099A (zh) * | 2016-12-19 | 2017-04-26 | 四川理工学院 | 一种基于概率计算的单比特接收机信号检测方法 |
CN110377267A (zh) * | 2019-07-25 | 2019-10-25 | 中北大学 | 一种基于概率计算集中序列的有符号数的加/减法器 |
Non-Patent Citations (2)
Title |
---|
HYEONUK SIM 等: "Scalable stochastic-computing accelerator for convolutional neural networks", 《2017 22ND ASIA AND SOUTH PACIFIC DESIGN AUTOMATION CONFERENCE (ASP-DAC)》 * |
ZHANG ZUODONG 等: "Circuit Reliability Comparison between Stochastic Computing and Binary Computing", 《IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS II: EXPRESS BRIEFS》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113343585A (zh) * | 2021-06-29 | 2021-09-03 | 江南大学 | 一种用于矩阵乘法运算的权位分立存算阵列设计方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113031917B (zh) | 2022-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110377267B (zh) | 一种基于概率计算集中序列的有符号数的加/减法器 | |
JP2004326112A (ja) | マルチプルモジュラス選択器、累算器、モンゴメリー掛け算器、マルチプルモジュラス発生方法、部分掛け発生方法、累算方法、掛け算方法、モジュラス選択器、およびブースレコーダ | |
US4135249A (en) | Signed double precision multiplication logic | |
CN113031917B (zh) | 一种高速概率计算乘法器和计算方法 | |
US6763366B2 (en) | Method for calculating arithmetic inverse over finite fields for use in cryptography | |
CN100382011C (zh) | 蒙哥马利乘法器中的流水线内核 | |
CN105138306A (zh) | 一种数据位数可选的伪随机信号发生方法 | |
US11552732B2 (en) | Polar coding system and parallel computation method for polar coding system | |
CN112819168A (zh) | 一种格密码加解密中的环多项式乘法器电路 | |
CN111666063B (zh) | 一种基于随机计算的增函数实现装置 | |
CN115268839A (zh) | 一种以2为基的蒙哥马利模乘方法及装置 | |
KR100723863B1 (ko) | 랜덤화한 프로베니우스 분해방법을 이용한 차분 공격 방지방법 및 그 장치 | |
US5691930A (en) | Booth encoder in a binary multiplier | |
US7472147B2 (en) | Random number string output apparatus, random number string output method, program, and information recording medium | |
KR101804499B1 (ko) | 이진수를 난수로 변환 또는 난수를 이진수로 변환하는 방법 및 그 장치 | |
CN116382634B (zh) | 伪随机码生成电路、方法 | |
RU2804380C1 (ru) | Конвейерный вычислитель | |
RU104336U1 (ru) | Генератор псевдослучайных последовательностей | |
RU2797163C1 (ru) | Конвейерный вычислитель | |
CN114840173A (zh) | 一种混合概率逻辑的计算方法和装置 | |
SU928347A1 (ru) | Цифровой функциональный преобразователь | |
CN117850738A (zh) | 高位分离的串行移位补码乘加运算电路和脉动阵列系统 | |
RU2380752C2 (ru) | Нейросетевой преобразователь кода в частоту | |
JP2699358B2 (ja) | デコーダ回路 | |
SU864283A1 (ru) | Устройство дл суммировани |
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 |