CN110275693A - 用于随机计算的多加数加法电路 - Google Patents
用于随机计算的多加数加法电路 Download PDFInfo
- Publication number
- CN110275693A CN110275693A CN201810211813.3A CN201810211813A CN110275693A CN 110275693 A CN110275693 A CN 110275693A CN 201810211813 A CN201810211813 A CN 201810211813A CN 110275693 A CN110275693 A CN 110275693A
- Authority
- CN
- China
- Prior art keywords
- data
- circuit
- bitstream
- add
- circuits
- 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
- 239000000872 buffer Substances 0.000 claims abstract description 59
- 241001269238 Data Species 0.000 claims abstract description 28
- 238000000034 method Methods 0.000 claims description 17
- 230000010287 polarization Effects 0.000 claims description 14
- 230000009467 reduction Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 4
- 238000013500 data storage Methods 0.000 claims description 3
- 230000001020 rhythmical effect Effects 0.000 claims description 2
- 238000000151 deposition Methods 0.000 claims 1
- 238000007792 addition Methods 0.000 abstract description 10
- 230000006870 function Effects 0.000 description 12
- 229910002056 binary alloy Inorganic materials 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 230000005404 monopole Effects 0.000 description 8
- 230000005611 electricity Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- HOWHQWFXSLOJEF-MGZLOUMQSA-N systemin Chemical compound NCCCC[C@H](N)C(=O)N[C@@H](CCSC)C(=O)N[C@@H](CCC(N)=O)C(=O)N[C@@H]([C@@H](C)O)C(=O)N[C@@H](CC(O)=O)C(=O)OC(=O)[C@@H]1CCCN1C(=O)[C@H]1N(C(=O)[C@H](CC(O)=O)NC(=O)[C@H](CCCN=C(N)N)NC(=O)[C@H](CCCCN)NC(=O)[C@H](CO)NC(=O)[C@H]2N(CCC2)C(=O)[C@H]2N(CCC2)C(=O)[C@H](CCCCN)NC(=O)[C@H](CO)NC(=O)[C@H](CCC(N)=O)NC(=O)[C@@H](NC(=O)[C@H](C)N)C(C)C)CCC1 HOWHQWFXSLOJEF-MGZLOUMQSA-N 0.000 description 1
- 230000007306 turnover Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06G—ANALOGUE COMPUTERS
- G06G7/00—Devices in which the computing operation is performed by varying electric or magnetic quantities
- G06G7/12—Arrangements for performing computing operations, e.g. operational amplifiers
- G06G7/14—Arrangements for performing computing operations, e.g. operational amplifiers for addition or subtraction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/20—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
- H03K19/21—EXCLUSIVE-OR circuits, i.e. giving output if input signal exists at only one input; COINCIDENCE circuits, i.e. giving output only if all input signals are identical
-
- 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/02—Comparing digital values
-
- 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/491—Computations with decimal numbers radix 12 or 20.
- G06F7/498—Computations with decimal numbers radix 12 or 20. using counter-type accumulators
- G06F7/4981—Adding; Subtracting
-
- 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/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
-
- 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/535—Dividing 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/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/70—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using stochastic pulse trains, i.e. randomly occurring pulses the average pulse rates of which represent numbers
-
- 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
Abstract
一种多加数加法电路,用于随机计算中极化表示法下的多加数加法,涉及数字电路领域。多加数加法电路包括缓存电路和计算电路,其中缓存电路用于将待缓存的数据存储至少一个周期并输出;计算电路用于对多个比特流数据和缓存数据进行处理,输出一个比特流数据和待缓存的数据。其中,输出的一个比特流数据为求和数据与缓存数据的和除以缩减系数得到的商的值;输出的待缓存的数据为截止到当前周期的所有求和数据的和除以缩减系数得到的余数,其中求和数据为多个第一比特流数据中值为1的比特流的个数。通过缓存电路来保存每个周期的部分计算结果,提高了多加数加法电路的计算精度。
Description
技术领域
本发明涉及随机计算领域,尤其涉及一种多加数加法电路。
背景技术
在随机计算中,输入数据和输出数据通常为极化表示法下的比特流。例如,在单极(Unipolar)极化表示法中,对于一个长度为N位的比特流X,若其中包含N1个1以及N0(N0=N-N1)个0,则该比特流X表示了数字Px=N1/N。以一个8位的比特流01001001为例,在单极极化表示法中,它代表数字3/8。对于常见的计算,例如多加数加法的计算,极化表示法下的比特流可以通过简单的逻辑电路来实现。
如图1所示的是一种用于随机计算的多加数加法电路100,包括多个两输入加法电路110。多加数加法电路100接收随机计算中代表数字的多个比特流A0-AN-1,并产生一个比特流S,其中:
两输入加法电路110为两输入选择器,其数据输入端接收两个输入的比特流,信号选择端接收极化表示法下的值为0.5的选择比特流,例如采用单极极化表示法的比特流0101 1100。两输入加法电路110通过对两个输入的比特流进行概率为50%的随机选择,从而实现两输入加法电路的功能。多加数加法电路100通过多个呈树形结构的两输入加法电路110实现多个比特流A0-AN-1相加,其中每一级两输入加法电路110将输入的比特流的数量减半,最终得到一个比特流S。由于采用选择比特流随机选择输入的比特流以实现两输入加法的计算,因此可能引起较大的计算误差,导致多加数加法电路100的计算精度降低。
发明内容
本发明的实施例提供了一种用于随机计算的多加数加法电路,以提高多加数加法电路的计算精度。
为了更清楚的描述本发明实施例,将使用以下术语、缩写或符号:
m[i]:数据m在二进制下的第i比特的数值;
对数据m在二进制下的第i比特求反得到的数值;
m[i:j]:数据m在二进制下的第i比特至第j比特的数值,例如,当m为二进制下的0100,则m[2:1]为二进制下的10;
异或运算符,表示将两个数据进行异或运算;
向上取整符,表示将数值x进行向上取整,例如
向下取整符,表示将数值x进行向下取整,例如
第一方面,在本发明实施例中提供一种用于随机计算的多加数加法电路,包括缓存电路和计算电路,其中,缓存电路用于将缓存输入数据存储至少一个周期,并作为缓存输出数据输入至计算电路;计算电路用于对多个第一比特流数据和缓存输出数据进行计算,输出第二比特流数据和缓存输入数据,其中,缓存输入数据为截止到当前周期的所有周期的求和数据的和除以缩减系数得到的余数,所述求和数据为每个周期的多个第一比特流数据中值为1的第一比特流数据的个数,第二比特流数据为每个周期的求和数据与缓存输出数据的和除以缩减系数得到的商。第一比特流数据和第二比特流数据均为极化表示法下的数据,所述缩减系数为预设的参数,所述周期为多个第一比特流数据输入的周期。
由于缓存电路将每个周期中计算电路产生的缓存输入数据进行存储,并用于下个周期的计算,多加数加法电路在当前周期的计算实际上是对输入的多个第一比特流数据和上一个周期计算所产生的缓存输入数据进行计算,因此减小了计算误差,提高了多加数加法电路的计算精度。
在一种可能的实施方式中,将第一比特流数据表示为Ai(j),其中i可以取0~N-1,j可以取0~x,Ai(j)表示在第j个周期的第i个比特流数据。则第j个周期的求和数据缓存输入数据mod K,第二比特流数据S(j)可以表示为S(j)=[m(j)+Rin(j)]/K,其中K为缩减系数,mod为取余数运算。
在一种可能的实施方式中,计算电路包括求和电路,其中,求和电路用于接收多个第一比特流数据,并产生第一中间数据,其中第一中间数据为求和数据。
在一种可能的实施方式中,计算电路还包括加法电路,其中加法电路用于接收第一中间数据和缓存输出数据,并产生第二中间数据,其中第二中间数据为第一中间数据和缓存输出数据的和。
在一种可能的实施方式中,计算电路还包括比较电路,其中比较电路用于接收第二中间数据,将第二中间数据与缩减系数比较并产生第二比特流数据,其中,当第二中间数据大于或等于缩减系数时,第二比特流数据为1,否则第二比特流数据为0。
在一种可能的实施方式中,计算电路还包括减法电路,其中减法电路用于接收第二中间数据和第二比特流数据,并产生缓存输入数据,其中,当第二比特流数据为1时,缓存输入数据为第二中间数据与缩减系数的差,当第二比特流数据为0时,缓存输入数据为第二中间数据。
在一种可能的实施方式中,缓存电路的容量的比特数至少为以2为底的缩减系数的对数。
在一种可能的实施方式中,缓存电路为寄存器。
在一种可能的实施方式中,求和电路为并行计数器。
在一种可能的实施方式中,当缩减系数为2的整数次幂时,比较电路产生的第二比特流数据为第二中间数据的最高位,其中第二中间数据为二进制表示的数据。在上述情况下,比较电路的电路结构得到简化。
在一种可能的实施方式中,当缩减系数为2的整数次幂时,减法电路产生的当前周期的缓存数据为第二中间数据的次高位至最低位,其中第二中间数据为二进制表示的数据。在上述情况下,减法电路的电路结构得到简化。
第二方面,在本发明实施例中提供一种用于随机计算的多加数加法电路,包括:求和电路、加法电路、比较电路、减法电路和一个或多个缓存电路。其中,求和电路用于接收多个第一比特流数据,计算每个周期的多个第一比特流数据中值为1的第一比特流数据的个数,并产生第一中间数据;加法电路将第一中间数据和第三中间数据相加,产生第二中间数据,其中第三中间数据为减法电路的输出;比较电路接收第二中间数据,产生第二比特流数据,其中,当第二中间数据大于或等于缩减系数,则第二比特流数据为1,否则第二比特流数据为0;多个第一比特流数据和第二比特流数据均为极化表示法下的数据,缩减系数为预设的参数;减法电路接收第二中间数据和第二比特流,产生第三中间数据,其中,当第二比特流数据为1时,第三中间数据为第二中间数据与缩减系数的差,当第二比特流数据为0时,所三中间数据为第二中间数据;一个或多个缓存电路用于将至少一个缓存数据存储至少一个周期并输出,缓存数据包括加法电路、比较电路和减法电路接收和产生的数据,以及在计算过程中产生的数据,所述周期为多个第一比特流数据输入的周期。
由于缓存电路将每个周期中的上述缓存数据进行存储,并用于下个周期的计算,多加数加法电路在当前周期的计算实际上包括对上一个周期存储在缓存电路中的缓存数据的计算,因此减小了计算误差,提高了多加数加法电路的计算精度。
在一种可能的实施方式中,一个或多个缓存电路将加法电路产生的第二中间数据存储至少一个所述周期,并输出至所述减法电路和所述比较电路。
在一种可能的实施方式中,缓存电路为寄存器。
在一种可能的实施方式中,求和电路为并行计数器。
在一种可能的实施方式中,当缩减系数为2的整数次幂时,比较电路产生的第二比特流数据为第二中间数据的最高位,其中第二中间数据为二进制表示的数据。在上述情况下,比较电路的电路结构得到简化。
在一种可能的实施方式中,当缩减系数为2的整数次幂时,减法电路产生的当前周期的缓存数据为第二中间数据的次高位至最低位,其中第二中间数据为二进制表示的数据。在上述情况下,减法电路的电路结构得到简化。
第三方面,在本发明实施例中提供一种用于随机计算的多加数加法电路,包括:缓存电路和计算电路,其中缓存电路用于将缓存输入数据存储一个周期,并产生缓存输出数据,当缓存输入数据为0时,缓存输出数据的值保持不变,当缓存输入数据为1时,缓存输出数据的值发生翻转;计算电路用于对多个第一比特流数据和缓存输出数据进行计算,输出多个第二比特流数据和输入缓存数据;其中,缓存输入数据为多个第一比特流数据进行异或运算得到的值,多个第二比特流数据的个数为多个第一比特流数据的个数除以2并向上取整数值,多个第二比特流数据包括W1个值为1的比特流数据、Wt个值为缓存输出数据的比特流数据以及W0个值为0的比特流数据,其中,W1为求和数据除以2并向下取整的值,即Wt为所述求和数据除以2的余数,即m mod 2;W0为所述多个第二比特流数据的个数减去W1与Wt的和,即多个第一比特流数据和多个第二比特流数据为极化表示法下的数据,周期为多个第一比特流数据输入的周期。
由于缓存电路将每个周期中计算电路产生的缓存输入数据进行存储,并用于下个周期的计算,多加数加法电路在当前周期的计算实际上是对输入的多个第一比特流数据和上一个周期计算所产生的缓存输入数据进行计算,因此减小了计算误差,提高了多加数加法电路的计算精度。
在一种可能的实施方式中,缓存电路为翻转触发器。
在一种可能的实施方式中,计算电路包括求和电路和输出逻辑电路。其中,求和电路用于接收当前周期的多个第一比特流数据,计算求和数据,并产生第一中间数据和第二中间数据,其中第一中间数据为求和数据的最低位,第二中间数据为求和数据的最高位至次低位,求和数据为二进制表示的数据;输出逻辑电路用于接收第一中间数据、第二中间数据和第一缓存数据,产生第二比特流数据。
在一种可能的实施方式中,求和电路为并行计数器。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍:
图1为现有技术中一种多加数加法电路的示意图;
图2为现有技术中一种具体的多加数加法电路的示意图;
图3为本发明实施例中一种多加数加法电路的示意图;
图4为本发明实施例中一种具体的多加数加法电路的示意图;
图5为本发明实施例中一种更为具体的多加数加法电路的示意图;
图6为本发明实施例中另一种多加数加法电路的示意图;
图7为本发明实施例中一种多级电路的示意图;
图8为本发明实施例中又一种多加数加法电路的示意图;
图9为本发明实施例中又一种具体的多加数加法电路的示意图;
图10为本发明实施例中一种输出真值表;
图11为本发明实施例中又一种具体的多加数加法电路的示意图;
图12为本发明实施例中另一种输出真值表。
具体实施方式
随机计算中,比特流在极化表示法下进行计算,根据不同的极化表示法,同一个比特流可以表示不同的数字。例如,在单极(Unipolar)极化表示法中,对于一个长度为N位的比特流X,若其中包含N1个1以及N0(N0=N-N1)个0,则该比特流X表示了数字Px=N1/N。以一个8位的比特流0100 1001为例,在单极极化表示法中,它代表数字3/8。在双极(Bipolar)极化表示法中,对于一个长度为N位的比特流X,若其中包含N1个1以及N0(N0=N-N1)个0,则该比特流X表示了数字Px=(N1-N0)/N。如8位的比特流0100 1001,在双极极化表示法中,它代表数字-1/8。为了便于理解,本发明的所有实施例中的比特流都采用单极极化表示法来表示,但需要注意的是,根据本发明的所有实施例中的比特流也可以采用双极极化表示法或其他的极化表示法来表示。
如图2所示的是现有技术中多加数加法电路100的一种具体的例子,其中多加数加法电路100对输入的多个第一比特流数据A0-A3进行多加数加法计算,得到第二比特流数据S,其中:多加数加法电路100包括两输入选择器112、两输入选择器114和两输入选择器116,其中,两输入选择器112将比特流A0-A1进行求和并缩减,其输出两输入选择器114将比特流A2-A3进行求和并缩减,其输出两输入选择器116将S0和S1进行求和并缩减,得到第二比特流S。
以具体的例子说明多加数加法电路100的工作流程,其中,比特流A0为01 00(1/4),比特流A1为01 00(1/4),比特流A2为00 10(1/4),比特流A3为00 11(2/4),而选择信号r均为00 11(2/4),每个比特流中的最低位先被输入至多加数加法电路200中。在第一个周期,输入的4个比特流A0-A3的值分别为0、0、0、1,选择信号r为1,则S0=0,S1=1,S=1;在第二个周期,A0-A3的值分别为0、0、1、1,选择信号r为1,则S0=0,S1=1,S=1;在第三个周期,A0-A3的值分别为1、1、0、0,选择信号r为0,则S0=1,S1=0,S=1;在第四个周期,A0-A3的值分别为0、0、0、0,选择信号r为0,则S0=0,S1=0,S=0。因此,多加数加法电路100输出的第二比特流数据S为01 11,即实际计算结果S=3/4,而理论计算结果实际计算结果与理论计算结果相差7/16。由于采用选择信号r以50%的概率随机选择输入的两个比特流,而选择信号r不能与输入的两个比特流同时保持独立,因此多加数加法电路100的计算精度较低。
因此,本发明实施例提供一种如图3所示的多加数加法电路300,以实现随机计算中的多个加数相加。多加数加法电路300的输入为在随机计算中代表数字的多个第一比特流数据A0-AN-1,输出为第二比特流数据S,其中第一比特流数据A0-AN-1和第二比特流数据S均可以采用单极极化表示法表示。
多加数加法电路300包括计算电路310和缓存电路320,其中缓存电路320用于将缓存输入数据Rin存储至少一个周期,并作为缓存输出数据Rout输入至计算电路310;计算电路310的输入为第一比特流数据A0-AN-1和缓存电路320产生的缓存输出数据Rout,计算电路310对输入的多个第一比特流数据A0-AN-1和缓存输出数据Rout进行求和并缩减,产生一个第二比特流数据S和缓存输入数据Rin。其中第二比特流数
据S为经过缩减的比特流数据,即K为预设的缩减系数,使输出不超出单极极化表示法下比特流可表示的数字范围。将每个周期的第一比特流数据A0-AN-1中值为1的第一比特流数据的个数作为每个周期的求和数据m,例如,A0-A3的值分别为0、1、1、0,则求和数据m为2。在一个周期中,第二比特流数据S的值为当前周期的求和数据m与缓存输出数据Rout的和除以缩减系数K的商,缓存输入数据Rin为截止到当前周期的所有周期的求和数据m的和除以K的余数。求和数据m的位数与缩减系数K有关,具体来说,求和数据m的位数为本发明实施例中的周期为多个第一比特流数据A0-AN-1输入的周期,例如,每个比特流周期性地每2ns输入1比特数据,则周期为2ns。
具体的,当前周期为第x个周期,则输入的N个第一比特流数据中的任意一个比特流数据可以表示为Ai(j),其中i可以取0~N-1,j可以取0~x,Ai(j)表示在第j个周期的第i个比特流数据,Ai(j)的值可以为0或者1。因此,第j个周期的求和数据m可以表示为缓存输入数据Rin(j)可以表示为mod K,即mod K,其中K为缩减系数,mod为取余数运算,例如A mod B为A除以B取余数。第二比特流数据S(j)可以表示为S(j)=[m(j)+Rin(j)]/K。
由于缓存电路320将每个周期中计算电路310产生的缓存输入数据Rin进行存储,并用于下个周期的计算,多加数加法电路300在当前周期的计算实际上是对输入的多个第一比特流数据A0-AN-1和上一个周期计算所产生的缓存输入数据Rin进行计算,而不是对当前周期的多个第一比特流数据A0-AN-1进行独立的计算,因此减小了计算误差,提高了多加数加法电路300的计算精度。
缓存电路320的最小容量为比特,以存储缓存输入数据Rin。缓存电路320可以是通用寄存器,或其他具有存储功能的电路,例如随机存取存储器(Random AccessMemory,RAM)。
以具体的例子说明多加数加法电路300的工作流程。例如,当缩减系数K=4,且缓存电路320中存储的缓存输入数据Rin为0,输入为4个比特流数据A0-A3,其中,比特流A0为0100(1/4),比特流A1为01 00(1/4),比特流A2为00 10(1/4),比特流A3为00 11(2/4),每个比特流中的最低位先被输入至计算电路310中。在第一个周期,输入的4个比特流A0-A3的值分别为0、0、0、1,则S为(0+0+0+1+0)/4的商,即S=0,Rin为(0+0+0+1+0)/4的余数,即Rin=1;在第二个周期,Rout=1,A0-A3的值分别为0、0、1、1,则S为(0+0+1+1+1)/4的商,即S=0,Rin=3;在第三个周期,Rout=3,A0-A3的值分别为1、1、0、0,则S为(1+1+0+0+3)/4的商,即S=1,Rin=1;在第四个周期,Rout=1,A0-A3的值分别为0、0、0、0,则S为(0+0+0+0+1)/4的商,即S=0,Rin=1。计算电路310输出的第二比特流数据S为01 00,即S=1/4,与理论计算结果相差1/16,因此,多加数加法电路300的计算精度得到了提高。
图4所示的是多加数加法电路300的一种具体的实现方式,其中计算电路310包括求和电路312、加法电路314、比较电路316和减法电路318。求和电路312接收输入的多个第一比特流数据A0-AN-1,计算当前周期的求和数据m并输出至加法电路314,其中求和数据m为多个第一比特流数据A0-AN-1中1的个数,例如第一比特流数据A0-A3分别为0、1、1、0,则求和数据m=2;加法电路314将求和电路312输出的求和数据m与缓存电路320输出的缓存数据Rout相加,输出计算结果Y;比较电路316将加法电路314输出的计算结果Y与预设的缩减系数K进行比较,当Y≥K时输出计算结果S=1,否则输出计算结果S=0;减法电路318的输入为加法电路314输出的计算结果Y和比较电路316输出的计算结果S,当S=1时减法电路318输出缓存数据Rin=Y-K,当S=0时输出缓存数据Rin=Y。
求和电路312可以是并行计数器,以完成对当前周期的求和数据m的计算。并行计数器可以通过查找表(Look-Up Table,LUT)或者其他组合逻辑电路来实现。当缩减系数K为2的整数次幂时,比较电路316和减法电路318可以通过较为简单的电路来实现。例如,当缩减系数K=32,则比较电路650的输出S为其输入Y的最高位,即第6位,而减法电路318的输出Rin为其输入Y的次高位至最低位,即第5位至第1位。
图5所示的多加数加法电路300是一种更为具体的实现方式,用于实现随机计算中4个比特流A0-A3的加法运算,即以具体的例子来说明多加数加法点路300的工作流程,其中,比特流A0为01 00(1/4),比特流A1为01 00(1/4),比特流A2为00 10(1/4),比特流A3为00 11(2/4),每个比特流中的最低位先被输入至计算电路310中,缓存电路320中的数据为0。在第一个周期,输入的4个比特流A0-A3的值分别为0、0、0、1,则m=1,Rout=0,则Y=1,S=0,Rin=1;在第二个周期,A0-A3的值分别为0、0、1、1,则m=2,Rout=1,则Y=3,S=0,Rin=3;在第三个周期,A0-A3的值分别为1、1、0、0,则m=2,Rout=3,则Y=5,S=1,Rin=1;在第四个周期,A0-A3的值分别为0、0、0、0,则m=0,Rout=1,则Y=1,S=0,Rin=1。计算电路310输出的第二比特流数据S为01 00,即S=1/4,与理论计算结果相差1/16,因此,多加数加法电路300的计算精度得到了提高。
在如图5所示的多加数加法电路300中,求和电路312可以是并行计数器,或者其他组合逻辑,以实现对输入到求和电路312中1的个数的计算。具体地,求和电路312输出的求和数据m中的的各个比特可以由以下逻辑表达式来提供,其中m的第0位m的第2位m[2]=A0·A1·A2·A3,m的第1位 其中用m[i]表示m在二进制下的第i比特的数值,为异或运算符。以上逻辑表达式可以通过组合逻辑,或者查找表来实现。由于缩减系数K=4为2的整数次幂,多加数加法电路300中的比较电路316和减法电路318可以通过简单的电路来实现,例如比较电路316可以直接选取加法电路314输出的最高位Y[2]作为输出结果S,而减法电路318直接选取加法电路314输出的较低两位Y[1:0]作为输出结果Rin。
在另一种实现方式中,多加数加法电路600包括求和电路312、加法电路314、比较电路316、减法电路318和一个或多个缓存电路320。其中,求和电路312接收输入的多个第一比特流数据A0-AN-1,计算求和数据m并输出至加法电路314;加法电路314将求和电路312输出的求和数据m与减法电路318产生的计算结果D相加,输出计算结果Y;比较电路316将加法电路314输出的计算结果Y与预设的缩减系数K进行比较,当Y≥K时输出计算结果S=1,否则输出计算结果S=0;减法电路318的输入为加法电路314输出的计算结果Y和比较电路316输出的计算结果S,当S=1时减法电路318输出计算结果D=Y-K,当S=0时输出计算结果D=Y。多加数加法电路600中的一个或多个缓存电路320用于将至少一个缓存数据存储至少一个周期并输出,其中,缓存数据包括加法电路314、比较电路316和减法电路318在计算过程中产生的数据,所述周期为多个第一比特流数据A0-AN-1输入的周期。例如,缓存数据可以为加法电路314输出的计算结果Y,此时缓存电路320接收计算结果Y作为输入,缓存一个或多个周期并输出计算结果Y至比较电路316和减法电路318;缓存数据还可以为加法电路314、比较电路316和减法电路318在计算过程中产生的数据。
如图6所示的多加数加法电路600为本发明实施例提供的一种具体的实施方式,用于实现随机计算中4个比特流A0-A3的加法运算,即其中,缓存电路320接收加法电路314输出的计算结果Y,将计算结果Y缓存一个周期并输出Y’至比较电路316和减法电路318。
以具体的例子来说明多加数加法点路600的工作流程,其中,比特流A0为01 00(1/4),比特流A1为01 00(1/4),比特流A2为00 10(1/4),比特流A3为00 11(2/4),每个比特流中的最低位先被输入至计算电路310中,缓存电路320中的数据为0。在第一个周期,输入的4个比特流A0-A3的值分别为0、0、0、1,则Y’=0,S=0,D=0,m=1,因此Y=1;在第二个周期,A0-A3的值分别为0、0、1、1,则Y’=1,S=0,D=1,m=2,因此Y=3;在第三个周期,A0-A3的值分别为1、1、0、0,则Y’=3,S=0,D=3,m=2,因此Y=5;在第四个周期,A0-A3的值分别为0、0、0、0,则Y’=5,S=1,D=1,m=0,因此Y=1;在第五个周期,Y’=1,S=0,D=1。在第二个周期至第五个周期,多加数加法电路600输出的第二比特流数据S为01 00,
即S=1/4,与理论计算结果相差1/16,因此,多加数加法电路300的计算精度得到了提高。
多加数加法的随机计算也可以通过如图7所示的多级电路700来实现。多级电路700的输入为在随机计算中代表数字的多个比特流A0-AN-1,输出为在随机计算中代表数字的第二比特流数据S,且其中K为预设的缩减系数,使输出结果不超出比特流可表示的数字范围。多级电路700包括多个多加数加法电路710、720、730等,每一级的多加数加法电路将输入的加数逐级减半,其中多加数加法电路710将N个输入的第一比特流数据A0-AN-1相加并得到N/2个比特流数据,多加数加法电路720将N/2个比特流数据相加并得到N/4个比特流,最终通过一个两输入加法电路730得到第二比特流数据S。
图8所示的多加数加法电路800为多加数加法电路710的一种具体的实施方式,以实现随机计算中将输入的多个第一比特流数据相加,并将比特流的数量减半。多加数加法电路800的输入为在随机计算中代表数字的多个第一比特流数据A0-AN-1,多加数加法电路800对输入的多个第一比特流数据A0-AN-1进行求和,并将比特流数据的个数缩减后输出多个第二比特流数据,其中第二比特流数据的个数为第一比特流数据的个数除以2并向上取整数值,即多加数加法电路800包括计算电路810和缓存电路820,其中,计算电路810接收第一比特流数据A0-AN-1和缓存电路820产生的缓存输出数据Tout,计算电路810对A0-AN-1和Tout进行求和并缩减第一比特流数据的个数,最后输出计算结果和Tin。缓存电路820将缓存输入数据Tin存储一个周期,并根据缓存输入数据Tin的值决定输出的Tout的值保持不变或者翻转,具体地,当Tin为0时,输出Tout的值保持不变;当Tin为1时,输出Tout的值发生翻转。本发明实施例中的周期为多个比特流A0-AN-1输入的周期,例如,每个第一比特流数据周期性地每2ns输入1比特数据,则周期为2ns。同样的,在相应的改变多加数加法电路800的输入的比特流个数和输出的比特流个数后,多加数加法电路720、多加数加法电路730等均可以实现多加数加法的功能。
在同一周期,将输入的多个第一比特流数据A0-AN-1中1的比特流数据的个数作为求和数据m,而缓存输入数据Tin为m在二进制下的最低位,即m[0]为输入的多个比特流A0-AN-1进行异或运算的结果,例如当输入的比特流是4个比特流A0、A1、A2和A3时,计算电路810输出的多个第二比特流数据为N/2个比特流,当N为奇数时,N/2向上取整数值。具体来说,多个第二比特流数据包括W1个值为1的比特流数据、Wt个值为Tout的比特流数据以及W0个值为0的比特流数据。其中,W1为求和数据m除以2并向下取整的值,即Wt为求和数据m除以2的余数,即m mod2;W0为第二比特流数据的个数减去W1与Wt的和,即W1、Wt和W0均可以为0。
缓存电路820需要的容量至少为1比特,以根据计算电路810输出的Tin来判断缓存电路820的输出Tout是否翻转。缓存电路820通常为翻转触发器,或者其他的能根据输入信号取值的不同而具有保持和翻转功能的时序电路。
以具体的例子说明多加数加法电路800的工作流程。例如,当输入为4个比特流A0-A3,且缓存电路820的缓存输出数据Tout为0。在第1个周期,输入到计算电路810的4个比特流A0-A3为0110,计算电路810输出的比特流分别为1个1以及1个0,即最终输出的两个比特流为10或01。因此,多加数加法电路实现了将4个加数转换为2个加数,即,将0+1+1+0转换为0+1或1+0。
由于缓存电路820将每个周期中计算电路810产生的缓存输入数据Tin进行存储,并用于下个周期的计算,多加数加法电路800在当前周期的计算实际上是对输入的多个比特流A0-AN-1和上一个周期计算所产生的缓存输入数据Tin进行计算,而不是对当前周期的多个比特流A0-AN-1进行独立的计算,因此减小了计算误差,提高了多加数加法电路800的计算精度。
图9所示的多加数加法电路800为一种更为具体的实施方式,包括计算电路810和缓存电路820,计算电路包括求和电路811和输出逻辑电路812。其中,求和电路811的功能与求和电路312相同,用于接收当前周期的多个第一比特流数据A0-AN-1,计算求和数据m,并输出m[N-1:1]至输出逻辑电路812,以及输出m[0]至输出逻辑电路812和缓存电路820,其中m[N-1:1]为求和数据m的最高位至次低位,即第N-1位至第1位,m[0]为求和数据m的最低位,即第0位。输出逻辑电路812用于接收求和电路811产生的m[N-1:1]、m[0],以及缓存电路820产生的缓存输出数据Tout,经过计算产生第二比特流S0和S1。
以具体的例子来说明多加数加法电路800的工作流程。如图9所示,多加数加法电路800将输入的4个比特流A0-A3转化为2个比特流S0和S1,实现功能 此时的缩减系数K=2。计算电路810包括求和电路811和输出逻辑电路812,其中求和电路811接收输入的多个比特流A0-A3,并计算同一时刻输入的4个比特中1的个数,将计算结果用二进制数字m表示;输出逻辑电路812分别接收求和电路811的输出结果m[2:1]、m[0]和缓存电路820的输出缓存数据Tout,并输出比特流S0和S1。缓存电路820接收求和电路811产生的缓存输入数据m[0],根据m[0]的奇偶性确定缓存输出数据Tout,当m为奇数时缓存输出数据Tout发生翻转,当m为偶数时Tout不变。求和电路811可以是并行计数器,或者其他组合逻辑,以实现对输入到求和电路811中1的个数的计算。具体地,求和电路811的各个比特的输出可以由以下逻辑表达式来提供:m[2]=A0·A1·A2·A3,缓存电路820为翻转触发器,以实现根据当前的缓存输入数据m[0]来判断是否翻转缓存输出数据Tout。
对于不同的输出情况,输出逻辑电路812可以被配置成不同的组合逻辑。如图10所示的输出真值表1000为一种可能的输出情况,其中m为输入的比特流A0-A3中同一时刻的1的个数,即求和数据,S0和S1为缩减后的加数,即输出的多个第二比特流数据,Tout为缓存电路820产生的缓存输出数据。当m的值不变时,真值表中的S0和S1的值可以互换,以形成不同的真值表,对应不同的输出情况,因此输出真值表1000对应的输出情况不是唯一的。真值表的不同导致输出逻辑电路812中的组合逻辑结构的不同,进而导致输出结果S0和S1的表达方式不同,但是对多加数加法电路800的最终计算结果没有影响,例如输出的结果是S0+S1=0+1或S0+S1=1+0,但二者都表示相同的数值,即1。对于输出真值表1000,其实现的具体逻辑功能为S0=Tout·m[0]m[1]+m[2],S1=Tout·m[0]+m[1]+m[2]。对于其他可能的真值表,输出S0与S1的逻辑表达式根据真值表而变化。
以图10所示的输出真值表1000中的输出关系来说明多加数加法电路800的工作原理和输出逻辑电路812实现的具体逻辑功能。例如,输入的四个比特流A0-A3中,比特流A0为01 00(1/4),比特流A1为01 00(1/4),比特流A2为00 10(1/4),比特流A3为00 11(2/4),每个比特流中的最低位先被输入至计算电路810中,缓存电路820中的初值为0,最低位优先进入求和电路811。在第一个周期,Tout=0,输入的4个比特流A0-A3的值分别为0、0、0、1,则求和数据m在二进制下表示为001,m[0]=Tin=1,此时根据输出真值表1000得出S0=0,S1=Tout=0,即值为1的比特流个数W1=0,值为Tout的比特流个数Wt=1,值为0的比特流个数W0=1;在第二个周期,由于上一周期的Tin=1,因此Tout=1,A0-A3的值分别为0、0、1、1,则求和数据m在二进制下表示为010,m[0]=Tin=0,此时根据输出真值表1000得出S0=0,S1=1,即值为1的比特流个数W1=1,值为Tout的比特流个数Wt=0,值为0的比特流个数W0=1;在第三个周期,由于上一周期的Tin=0,因此Tout=1,A0-A3的值分别为1、1、0、0,则求和数据m在二进制下表示为010,m[0]=Tin=0,此时根据输出真值表1000得出S0=0,S1=1,即值为1的比特流个数W1=1,值为Tout的比特流个数Wt=0,值为0的比特流个数W0=1;在第四个周期,由于上一周期的Tin=0,因此Tout=1,A0-A3的值分别为0、0、0、0,则求和数据m在二进制下表示为000,m[0]=Tin=0,此时根据输出真值表1000得出S0=0,S1=0,即值为1的比特流个数W1=0,值为Tout的比特流个数Wt=0,值为0的比特流个数W0=2。因此计算电路810输出的比特流S0为00 00,比特流S1为01 10,即与理论计算结果相差提高了多加数加法电路800的计算精度。
图11所示的多加数加法电路800为一种更为具体的实施方式,包括计算电路810和缓存电路820。其中,多加数加法电路800对应的输出情况为如图12所示的输出真值表1200,其中求和数据m为输入的比特流A0-A3中同一时刻的1的个数,即求和数据,S0和S1为缩减后的加数,即输出比特流,Tout为缓存电路820产生的缓存输出数据。在同一个m值中,真值表中的S0和S1的值可以互换,以形成不同的真值表,因此输出真值表1200仅为一种可能的真值表。相对于输出真值表1000来说,输出真值表1200的Tout只能出现在比特流S1中而不能出现在比特流S0中,因此输出真值表1200对应的计算电路810的逻辑电路结构更为简单,具体来说,其实现的具体逻辑功能为:
S0=A0·A1·A2+A0·A1·A3+A0·A2·A3+A1·A2·A3,
需要注意的是,本发明实施例中的引用相同标记的多加数加法电路电路800具有相同的功能,但可以具有不同的内部电路结构。例如图8中的多加数加法电路800和图11中的多加数加法电路800均可以将多个输入的第一比特流相加并将比特流的数量减半后输出,但由于输入的比特流个数不同,导致对应的输出真值表不同,因此多加数加法电路电路800的内部结构不完全相同。
以上所述的实施例中揭露的装置和方法可以通过其他的方式实现。例如,以上所描述的实施例仅仅是示意性的,例如不同电路的划分,仅仅是一种逻辑功能划分,实际实现时可以有另外的划分方式,例如可以将多个电路或电路结合或集成到另一个系统。另外,上述实施例所讨论的电路之间的相互耦合关系或通信连接关系可以是通过一些接口、装置或电路之间的相互耦合或通信连接,也可以是其他电学方式或其他方式。
本发明各个实施例中的各个功能电路可以集成在一个处理电路中,也可以存在于分离的单独电路中。上述集成的电路既可以采用硬件的形式实现,也可以采用软件的形式实现。
所述集成的电路如果以软件功能电路的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (20)
1.一种用于随机计算的多加数加法电路,其特征在于,包括:
缓存电路和计算电路;
其中,所述缓存电路用于将缓存输入数据存储至少一个周期,并作为缓存输出数据输入至所述计算电路;
所述计算电路用于对输入至所述计算电路的多个第一比特流数据和所述缓存输出数据进行计算,输出第二比特流数据和所述缓存输入数据;
其中,所述缓存输入数据为截止到当前周期的所有周期的求和数据的和除以缩减系数得到的余数,其中,每个周期的所述求和数据为每个周期的所述多个第一比特流数据中值为1的第一比特流数据的个数,所述第二比特流数据为所述每个周期的所述求和数据与所述缓存输出数据的和除以所述缩减系数得到的商,所述多个第一比特流数据和所述第二比特流数据为极化表示法下的数据,所述缩减系数为预设的参数,所述周期为所述多个第一比特流数据输入的周期。
2.根据权利要求1所述的一种用于随机计算的多加数加法电路,其特征在于,所述计算电路包括求和电路,其中,所述求和电路用于接收所述多个第一比特流数据,并产生第一中间数据,所述第一中间数据为所述求和数据。
3.根据权利要求1或2所述的一种用于随机计算的多加数加法电路,其特征在于,所述计算电路还包括加法电路,其中所述加法电路用于接收所述求和电路产生的所述第一中间数据和所述缓存电路产生的所述缓存输出数据,并产生第二中间数据,所述第二中间数据为所述第一中间数据和所述缓存输出数据的和。
4.根据权利要求1至3任意一项所述的一种用于随机计算的多加数加法电路,其特征在于,所述计算电路还包括比较电路,其中,所述比较电路用于接收所述加法电路产生的所述第二中间数据,与所述缩减系数比较并产生所述第二比特流数据,其中,当所述第二中间数据大于或等于所述缩减系数,所述第二比特流数据为1,当所述第二中间数据小于所述缩减系数,所述第二比特流数据为0。
5.根据权利要求1至4任意一项所述的一种用于随机计算的多加数加法电路,其特征在于,所述计算电路还包括减法电路,其中,所述减法电路用于接收所述加法电路产生的所述第二中间数据和所述比较电路产生的所述第二比特流数据,产生所述缓存输入数据,其中,当所述第二比特流数据为1时,所述缓存输入数据为所述第二中间数据与所述缩减系数的差,当所述第二比特流数据为0时,所述缓存输入数据为所述第二中间数据。
6.根据权利要求1至5任意一项所述的一种用于随机计算的多加数加法电路,其特征在于,所述缓存电路的容量的比特数至少为以2为底的所述缩减系数的对数。
7.根据权利要求1至6任意一项所述的一种用于随机计算的多加数加法电路,其特征在于,所述缓存电路为寄存器。
8.根据权利要求2至7任意一项所述的一种用于随机计算的多加数加法电路,其特征在于,所述求和电路为并行计数器。
9.根据权利要求4至8任意一项所述的一种用于随机计算的多加数加法电路,其特征在于,当所述缩减系数为2的整数次幂时,所述比较电路产生的所述第二比特流数据为所述第二中间数据的最高位,其中所述第二中间数据为二进制表示的数据。
10.根据权利要求5至9任意一项所述的一种用于随机计算的多加数加法电路,其特征在于,当所述缩减系数为2的整数次幂时,所述减法电路产生的所述当前周期的缓存数据为所述第二中间数据的次高位至最低位,其中所述第二中间数据为二进制表示的数据。
11.一种用于随机计算的多加数加法电路,其特征在于,包括:
求和电路、加法电路、比较电路、减法电路和一个或多个缓存电路;
其中,所述求和电路用于接收多个第一比特流数据,计算每个周期的所述多个第一比特流数据中值为1的第一比特流数据的个数,并产生第一中间数据;
所述加法电路将所述第一中间数据和第三中间数据相加,产生第二中间数据,所述第三中间数据为所述减法电路的输出;
所述比较电路接收所述第二中间数据,产生第二比特流数据,其中,当所述第二中间数据大于或等于缩减系数,所述第二比特流数据为1,当所述第二中间数据小于所述缩减系数,所述第二比特流数据为0,所述多个第一比特流数据和所述第二比特流数据为极化表示法下的数据,所述缩减系数为预设的参数;
所述减法电路接收所述第二中间数据和所述第二比特流,产生所述第三中间数据,其中,当所述第二比特流数据为1,所述第三中间数据为所述第二中间数据与所述缩减系数的差,当所述第二比特流数据为0,所述第三中间数据为所述第二中间数据;
所述一个或多个缓存电路用于将至少一个缓存数据存储至少一个周期并输出,所述缓存数据包括所述加法电路、所述比较电路和所述减法电路接收和产生的数据,以及在计算过程中产生的数据,所述周期为所述多个第一比特流数据输入的周期。
12.根据权利要求11所述的一种用于随机计算的多加数加法电路,其特征在于,所述一个或多个缓存电路将所述加法电路产生的所述第二中间数据存储至少一个所述周期,并输出至所述减法电路和所述比较电路。
13.根据权利要求11或12所述的一种用于随机计算的多加数加法电路,其特征在于,所述缓存电路为寄存器。
14.根据权利要求11至13任意一项所述的一种用于随机计算的多加数加法电路,其特征在于,所述求和电路为并行计数器。
15.根据权利要求11至14任意一项所述的一种用于随机计算的多加数加法电路,其特征在于,当所述缩减系数为2的整数次幂时,所述比较电路产生的所述第二比特流数据为所述第二中间数据的最高位,其中所述第二中间数据为二进制表示的数据。
16.根据权利要求11至15任意一项所述的一种用于随机计算的多加数加法电路,其特征在于,当所述缩减系数为2的整数次幂时,所述减法电路产生的所述第三中间数据为所述第二中间数据的次高位至最低位,其中所述第二中间数据为二进制表示的数据。
17.一种用于随机计算的多加数加法电路,其特征在于,包括:
缓存电路和计算电路;
其中,所述缓存电路用于将缓存输入数据存储一个周期,并产生缓存输出数据,其中,所述缓存输入数据为0时,所述缓存输出数据的值保持不变,所述缓存输入数据为1时,所述缓存输出数据的值发生翻转;
所述计算电路用于对输入至所述计算电路的多个第一比特流数据和所述缓存输出数据进行计算,输出多个第二比特流数据和所述输入缓存数据;
其中,所述缓存输入数据为所述多个第一比特流数据进行异或运算得到的值,所述多个第二比特流数据的个数为所述多个第一比特流数据的个数除以2并向上取整数值,所述多个第二比特流数据包括W1个值为1的比特流数据、Wt个值为所述缓存输出数据的比特流数据以及W0个值为0的比特流数据,其中,W1为所述求和数据除以2并向下取整的值,Wt为所述求和数据除以2的余数,W0为所述多个第二比特流数据的个数减去W1与Wt的和,所述多个第一比特流数据和所述多个第二比特流数据为极化表示法下的数据,所述周期为所述多个第一比特流数据输入的周期。
18.根据权利要求17所述的一种用于随机计算的多加数加法电路,其特征在于,所述缓存电路为翻转触发器。
19.根据权利要求17至18所述的一种用于随机计算的多加数加法电路,其特征在于,所述计算电路包括求和电路和输出逻辑电路;
其中,所述求和电路用于接收当前周期的所述多个第一比特流数据,计算所述求和数据,并产生第一中间数据和第二中间数据,所述第一中间数据为所述求和数据的最低位,所述第二中间数据为所述求和数据的最高位至次低位,所述求和数据为二进制表示的数据;
所述输出逻辑电路用于接收所述求和电路产生的所述第一中间数据、所述第二中间数据和所述输出缓存数据,产生所述多个第二比特流数据。
20.根据权利要求17至19任意一项所述的一种用于随机计算的多加数加法电路,其特征在于,所述求和电路为并行计数器。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810211813.3A CN110275693B (zh) | 2018-03-15 | 2018-03-15 | 用于随机计算的多加数加法电路 |
CN202310615176.7A CN116822537A (zh) | 2018-03-15 | 2018-03-15 | 用于随机计算的多加数加法电路 |
PCT/CN2018/113353 WO2019174263A1 (zh) | 2018-03-15 | 2018-11-01 | 用于随机计算的多加数加法电路 |
US17/004,893 US11119732B2 (en) | 2018-03-15 | 2020-08-27 | Multi-addend adder circuit for stochastic computing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810211813.3A CN110275693B (zh) | 2018-03-15 | 2018-03-15 | 用于随机计算的多加数加法电路 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310615176.7A Division CN116822537A (zh) | 2018-03-15 | 2018-03-15 | 用于随机计算的多加数加法电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110275693A true CN110275693A (zh) | 2019-09-24 |
CN110275693B CN110275693B (zh) | 2023-08-22 |
Family
ID=67907363
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310615176.7A Pending CN116822537A (zh) | 2018-03-15 | 2018-03-15 | 用于随机计算的多加数加法电路 |
CN201810211813.3A Active CN110275693B (zh) | 2018-03-15 | 2018-03-15 | 用于随机计算的多加数加法电路 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310615176.7A Pending CN116822537A (zh) | 2018-03-15 | 2018-03-15 | 用于随机计算的多加数加法电路 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11119732B2 (zh) |
CN (2) | CN116822537A (zh) |
WO (1) | WO2019174263A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113792511A (zh) * | 2021-09-03 | 2021-12-14 | 上海交通大学 | 一种高计算准确度、低硬件开销单变量随机电路及其配置方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6104968A (en) * | 1995-12-28 | 2000-08-15 | International Business Machines Corporation | Programmable supervisory circuit and applications therefore |
US20100223225A1 (en) * | 2009-03-02 | 2010-09-02 | Lyric Semiconductor, Inc. | Analog computation using numerical representations with uncertainty |
CN105718240A (zh) * | 2014-12-12 | 2016-06-29 | 南京财经大学 | 一种基于总和增量调制的任意路输入信号的比特流加法器 |
US20170255870A1 (en) * | 2010-02-23 | 2017-09-07 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for solving stochastic problems using probability distribution samples |
US20170359082A1 (en) * | 2016-06-09 | 2017-12-14 | Regents Of The University Of Minnesota | Stochastic computation using deterministic bit streams |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6745219B1 (en) * | 2000-06-05 | 2004-06-01 | Boris Zelkin | Arithmetic unit using stochastic data processing |
US7167022B1 (en) * | 2004-03-25 | 2007-01-23 | Altera Corporation | Omnibus logic element including look up table based logic elements |
US9389854B2 (en) * | 2013-03-15 | 2016-07-12 | Qualcomm Incorporated | Add-compare-select instruction |
CN105512724B (zh) * | 2015-12-01 | 2017-05-10 | 中国科学院计算技术研究所 | 加法器装置、数据累加方法及数据处理装置 |
US10520975B2 (en) * | 2016-03-03 | 2019-12-31 | Regents Of The University Of Minnesota | Polysynchronous stochastic circuits |
CN205959185U (zh) * | 2016-07-18 | 2017-02-15 | 北京集创北方科技股份有限公司 | 运算电路 |
US10891536B1 (en) * | 2016-12-06 | 2021-01-12 | The United States Of America As Represented By The Secretary Of The Air Force | Artificial neural network for reservoir computing using stochastic logic |
-
2018
- 2018-03-15 CN CN202310615176.7A patent/CN116822537A/zh active Pending
- 2018-03-15 CN CN201810211813.3A patent/CN110275693B/zh active Active
- 2018-11-01 WO PCT/CN2018/113353 patent/WO2019174263A1/zh active Application Filing
-
2020
- 2020-08-27 US US17/004,893 patent/US11119732B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6104968A (en) * | 1995-12-28 | 2000-08-15 | International Business Machines Corporation | Programmable supervisory circuit and applications therefore |
US20100223225A1 (en) * | 2009-03-02 | 2010-09-02 | Lyric Semiconductor, Inc. | Analog computation using numerical representations with uncertainty |
US20170255870A1 (en) * | 2010-02-23 | 2017-09-07 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for solving stochastic problems using probability distribution samples |
CN105718240A (zh) * | 2014-12-12 | 2016-06-29 | 南京财经大学 | 一种基于总和增量调制的任意路输入信号的比特流加法器 |
US20170359082A1 (en) * | 2016-06-09 | 2017-12-14 | Regents Of The University Of Minnesota | Stochastic computation using deterministic bit streams |
Non-Patent Citations (1)
Title |
---|
云飞龙等: "基于随机译码算法的全并行架构", 《通信技术》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113792511A (zh) * | 2021-09-03 | 2021-12-14 | 上海交通大学 | 一种高计算准确度、低硬件开销单变量随机电路及其配置方法 |
CN113792511B (zh) * | 2021-09-03 | 2023-11-03 | 上海交通大学 | 一种高计算准确度、低硬件开销单变量随机电路及其配置方法 |
Also Published As
Publication number | Publication date |
---|---|
US11119732B2 (en) | 2021-09-14 |
CN110275693B (zh) | 2023-08-22 |
CN116822537A (zh) | 2023-09-29 |
US20200394018A1 (en) | 2020-12-17 |
WO2019174263A1 (zh) | 2019-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Garner | Number systems and arithmetic | |
KR100756137B1 (ko) | 제산 및 제곱근 연산 유닛 | |
Etzion et al. | Algorithms for the generation of full-length shift-register sequences | |
CN105049061B (zh) | 基于超前计算的高维基极化码译码器和极化码译码方法 | |
CN107807819A (zh) | 一种支持离散数据表示的用于执行人工神经网络正向运算的装置及方法 | |
CN106354473B (zh) | 一种除法器和求商和余数的方法 | |
CN105653689A (zh) | 一种用户传播影响力的确定方法和装置 | |
JP4669979B2 (ja) | 一様独立乱数生成方法 | |
CN109067526A (zh) | 层次公私钥对生成方法和装置 | |
Sasao | Index Generation Functions: Tutorial. | |
CN110275693A (zh) | 用于随机计算的多加数加法电路 | |
Alam et al. | Exact stochastic computing multiplication in memristive memory | |
CN101295237A (zh) | 求商和余数的高速除法器 | |
Chattopadhyay | Area conscious state assignment with flip-flop and output polarity selection for finite state machine synthesis—a genetic algorithm approach | |
CN104572010B (zh) | 基于fpga芯片的乘法器 | |
CN110119265A (zh) | 乘法运算实现方法、装置、计算机存储介质及电子设备 | |
CN109379191B (zh) | 一种基于椭圆曲线基点的点乘运算电路和方法 | |
CN106471558B (zh) | 矩阵生成装置及矩阵生成方法 | |
WO2014101613A1 (zh) | 一种在嵌入式系统中生成坐标点的方法 | |
Dinu et al. | Stochastic implementation of motor controllers | |
CN110569021A (zh) | 一种抗asic挖矿的工作量证明方法 | |
Pete | Corner percolation on ℤ2 and the square root of 17 | |
CN110109913A (zh) | 一种zerocash挖矿算法的硬件实现方法及装置 | |
CN110413647B (zh) | 一种高维向量不等长序列相似度快速计算系统 | |
KR100718050B1 (ko) | 카운터 회로 및 그 동작 방법 |
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 |