1、Abstract
SC是一种非传统的新型计算体系结构,并由于它的计算核心部分功耗低和电路面积小而受到关注。SC是将传统的数字电路中的逻辑域的运算转化到概率域的运算,也就是它是利用具有概率性的信号进行计算的,而如何将确定性的数字信号转变成概率性的信号是关键。SC是利用一种叫随机数生成器(Stochastic Number Generator——SNG) 的设备进行转化的。这种设备一般由LFSR(伪随机数产生器),比较器。但是LFSR相比于计算核心部分功耗以及电路面积很大,所以我们的解决方法是利用新兴设备代替LFSR比如:忆阻器和自旋电子设备。但是这些设备的输出概率又会有一些不可预测的变化而不稳定,所以本篇论文我们基于这种新兴设备设计一种新的概率转换设备(也就是传统的SC电路中的比较器),叫做ECPCC(Error Cancelling Probability Conversion Circuit),使得即使在理想的等概率输入信号,真实情况不稳定的信号时,也能够保证准确的概率输出。另外,也可以利用ECPCC得到最大相关性的随机流信号,可以应用到一些特殊的应用。
2、Introduction
正如摘要中所说,SC主要依靠SNG产生随机序列,而传统的SNG主要由:LFSR和比较器构成(这里的比较器可以看成概率转换电路(PCC))。如下图:
另外一个LFSR,我们可以看成是由多个RBS组合形成的,例如一个2位的LFSR可以等价于下面的表现形式:
但是为了计算的正确性,需要保证SNG产生的各个随机流序列相互独立或不相关,因此SC电路计算核心电路需要多少个输入,就需要多少个SNG。
但是,由于每个SNG的功耗和电路面积相比于核心电路都大的多,因此需要减少SNG的个数。在之前的文献中有几种方法,一种就是多个SNG共用一个LFSR,但是这种只能产生低相关性的序列;另外一种是由一个SNG产生随机流序列,然后插入D触发器,使序列延时一个单位,从而使得两个序列具有低相关性。但是这些方法终究无法产生完全不相关的序列,所以最终的解肯定会有错误。
我们提出一种基于新兴技术的设计方法,例如:忆阻器和自旋电子设备。忆阻器这种设备有两个状态:高阻态和低阻态,并且这两种状态可以利用一个输入信号改变,这两种状态可以代表1和0,因此我们可以将这种设备作为我们的随机比特源(RBS)。例如,忆阻器的状态转变概率:
P
(
t
)
=
1
−
e
−
t
τ
P(t)=1-e^{-\frac{t}{\tau}}
P(t)=1−e−τt
其中
t
t
t是控制脉冲的宽度,
τ
\tau
τ是一个和设备自身以及控制脉冲的幅度有关的常数。因此,通过改变
t
t
t可以改变
P
(
t
)
P(t)
P(t),进而就可以产生代表任意概率的随机序列。更重要的是,这种设备是纳米级别的,所以会有更低的功耗以及更小的电路面积,相比于传统的基于CMOS的SNG。
但是,同样这种纳米级别的设备也会受制于由制造参数的变化以及控制信号的变化产生的噪声。因此,传统SNG利用了这个设备产生的比特流所代表的概率值会与期望的值有一定的偏差。
针对这个误差,我们提出一种解决方案——ECPCC,这是相比于传统的概率转换电路,可以有效消除由这些未可预测的噪声引起的误差的概率转换电路。另外,一个ECPCC 也能够用来产生最大相关性的随机序列。
3、Background on Stochastic Number Generator
一个SNG的通常的电路结构如下:
它是由一个RNS(随机数源)和一个PCC(概率转换电路构成)。
首先,我们的这个RNS可以如上图所示,看成是由
k
k
k个随机比特源
(
r
k
−
1
,
.
.
.
,
r
0
)
(r_{k-1},...,r_{0})
(rk−1,...,r0)构成,这里的每个比特源输出0和1的概率都是0.5,这里的
k
k
k代表的是想要输出的概率值的精度。另外这里Target bits利用二进制表示
(
c
k
−
1
c
k
−
2
.
.
.
c
0
)
2
(c_{k-1}c_{k-2}...c_{0})_{2}
(ck−1ck−2...c0)2等于
C
C
C,那么我们输出的概率值是
C
2
k
\frac{C}{2^{k}}
2kC。
通常我们利用一个k位的LFSR当作这个k个比特源,因为k位的LFSR是由k个D触发器组成,而这k个D触发器可以看作是彼此独立的输出概率为0.5的比特源。
其次,我们一般使用比较器作为我们的PCC,如果由比特源输入的k个比特二进制表示的数值
(
r
k
−
1
r
k
−
2
.
.
.
r
0
)
2
(r_{k-1}r_{k-2}...r_{0})_{2}
(rk−1rk−2...r0)2小于
(
c
k
−
1
c
k
−
2
.
.
.
c
0
)
2
(c_{k-1}c_{k-2}...c_{0})_{2}
(ck−1ck−2...c0)2,比较器输出1。
当然除了比较器,我们还有别的形式的PCC,比如有一种叫WBG(Weighted Binary Generator),如下:
从这个图进行分析:(首先所有输入的序列都是彼此不相关的)
由于
P
(
W
3
)
=
P
(
R
3
)
=
1
2
,
P
(
W
2
)
=
(
1
−
P
(
R
3
)
)
P
(
R
2
)
=
1
4
,
P
(
W
1
)
=
(
1
−
P
(
R
3
)
)
(
1
−
P
(
R
2
)
)
P
(
R
1
)
=
1
8
,
P
(
W
1
)
=
(
1
−
P
(
R
3
)
)
(
1
−
P
(
R
2
)
)
(
1
−
P
(
R
1
)
)
P
(
R
0
)
=
1
16
P(W_{3})=P(R_{3})=\frac{1}{2},\\P(W_{2})=(1-P(R_{3}))P(R_{2})=\frac{1}{4},\\P(W_{1})=(1-P(R_{3}))(1-P(R_{2}))P(R_{1})=\frac{1}{8},\\P(W_{1})=(1-P(R_{3}))(1-P(R_{2}))(1-P(R_{1}))P(R_{0})=\frac{1}{16}
P(W3)=P(R3)=21,P(W2)=(1−P(R3))P(R2)=41,P(W1)=(1−P(R3))(1−P(R2))P(R1)=81,P(W1)=(1−P(R3))(1−P(R2))(1−P(R1))P(R0)=161,因此这几个序列中的1其实是互不重叠的,描述成概率论术语就是互不相容事件。所以最终的输出为1的概率是
x
=
P
(
X
)
=
P
(
W
3
)
P
(
C
3
)
+
P
(
W
2
)
P
(
C
2
)
+
P
(
W
1
)
P
(
C
1
)
=
c
3
P
(
W
3
)
+
c
2
P
(
W
2
)
+
c
1
P
(
W
1
)
+
c
0
P
(
W
0
)
=
1
2
c
3
+
1
4
c
2
+
1
8
c
1
+
1
16
c
0
x=P(X)=P(W_{3})P(C_{3})+P(W_{2})P(C_{2})+P(W_{1})P(C_{1})\\ =c_{3}P(W_{3})+c_{2}P(W_{2})+c_{1}P(W_{1})+c_{0}P(W_{0})\\=\frac{1}{2}c_{3}+\frac{1}{4}c_{2}+\frac{1}{8}c_{1}+\frac{1}{16}c_{0}
x=P(X)=P(W3)P(C3)+P(W2)P(C2)+P(W1)P(C1)=c3P(W3)+c2P(W2)+c1P(W1)+c0P(W0)=21c3+41c2+81c1+161c0
因此和前面使用比较器的效果是一样的。
接下来我们还有另外一种PCC,因为我们想输出的为1的概率是可以描述成这样一个等式:
x
=
1
2
c
3
+
1
4
c
2
+
1
8
c
1
+
1
16
c
0
=
1
2
(
c
3
+
1
2
(
c
2
+
1
2
(
c
1
+
1
2
c
0
)
)
)
x=\frac{1}{2}c_{3}+\frac{1}{4}c_{2}+\frac{1}{8}c_{1}+\frac{1}{16}c_{0}=\frac{1}{2}(c_{3}+\frac{1}{2}(c_{2}+\frac{1}{2}(c_{1}+\frac{1}{2}c_{0})))
x=21c3+41c2+81c1+161c0=21(c3+21(c2+21(c1+21c0)))
因此,我们可以利用4个数据选择器构造一个实现这样等式的电路,如下:
4、Design of Accurate Stochastic Number Generator
A、Assumption and Motivation
我们提出的设计方法是基于忆阻器的。我们利用忆阻器作为无偏比特源(unbiased random bit source,即1的概率为0.5)。在我们的设计中,需要多个比特源,但是这是可以接受的,因为这种忆阻器的低功耗和尺寸小的优点使得即使有多个,也会比原来RNS的功耗和电路面积小。另外,我们只需要共用一个控制信号,例如,我们已知
τ
=
τ
0
\tau=\tau_{0}
τ=τ0,那么只要所有控制信号的参数
t
=
τ
0
l
n
2
t=\tau_{0}ln2
t=τ0ln2来控制所有的比特源产生概率值0.5,但是产生的多个比特流确是不相关的。
但是,正是由于这个控制信号的存在,导致误差的存在,因为实际情况中,很难控制输入信号的
t
t
t一直保持不变。如果我们利用这样输入比特流作为传统PCC例如比较器的输入,那么会出现什么样的情况呢?下表记录了这种情况:
结果是即使我们的输入随机比特流代表的概率值相比于0.5有很小的偏差,但是经过比较器之后偏差相对会很大。
针对这种情况,我们的基本方法就是设计一个新型的PCC,能够有效应对这种偏差。
B、Design Principle for Achieving Accurate Probability
在这部分,我们提出一种针对biased RBS(即产生代表概率值不是0.5的随机比特流)能够产生更加精确的概率值的比特流。我们侧重于设计一个能实现这种功能的电路的布尔函数。
例如,我们想产生输出概率值是
C
2
k
\frac{C}{2^{k}}
2kC,我们需要k个unbiased RBS
r
0
,
r
1
,
.
.
.
,
r
k
−
1
r_{0},r_{1},...,r_{k-1}
r0,r1,...,rk−1,则这个电路的布尔函数需要满足:
令
布
尔
函
数
f
(
r
k
−
1
,
.
.
.
,
r
0
)
=
1
的
组
合
(
r
k
−
1
,
.
.
.
,
r
0
)
有
C
个
,
即
函
数
f
的
o
n
−
s
e
t
的
大
小
是
C
令布尔函数f(r_{k-1},...,r_{0})=1的组合(r_{k-1},...,r_{0})有C个,即函数f的on-set的大小是C
令布尔函数f(rk−1,...,r0)=1的组合(rk−1,...,r0)有C个,即函数f的on−set的大小是C,因为:
P
(
f
(
r
k
−
1
,
.
.
.
,
r
0
)
=
1
)
=
P
f
(
a
k
−
1
,
.
.
.
,
a
0
)
=
1
(
a
k
−
1
,
.
.
.
,
a
0
)
=
∑
f
(
a
k
−
1
,
.
.
.
,
a
0
)
=
1
1
2
k
=
C
2
k
P(f(r_{k-1},...,r_{0})=1)=\underset {f(a_{k-1},...,a_{0})=1}{P}(a_{k-1},...,a_{0})=\sum_{f(a_{k-1},...,a_{0})=1}\frac{1}{2^{k}}=\frac{C}{2^{k}}
P(f(rk−1,...,r0)=1)=f(ak−1,...,a0)=1P(ak−1,...,a0)=f(ak−1,...,a0)=1∑2k1=2kC
那么如果我们的输入随机比特流的概率值不是0.5,会出现什么情况呢?我们将每个RBS输出的概率值,假设为
0.5
+
ϵ
i
,
i
∈
[
0
,
k
−
1
]
0.5+\epsilon_{i},\ i\in[0,k-1]
0.5+ϵi, i∈[0,k−1],并且
∣
ϵ
i
∣
≪
1
|\epsilon_{i}|\ll1
∣ϵi∣≪1,,所以:
P
(
a
k
−
1
,
.
.
.
,
a
0
)
=
∏
f
(
a
k
−
1
,
.
.
.
,
a
0
)
=
1
(
0.5
+
ϵ
i
)
a
i
(
0.5
−
ϵ
i
)
1
−
a
i
≈
1
2
k
+
1
2
k
−
1
∑
i
=
0
k
−
1
(
2
a
i
−
1
)
ϵ
i
P(a_{k-1},...,a_{0})=\prod_{f(a_{k-1},...,a_{0})=1}(0.5+\epsilon_{i})^{a_{i}}(0.5-\epsilon_{i})^{1-a_{i}}\\ \approx\frac{1}{2^{k}}+\frac{1}{2^{k-1}}\sum_{i=0}^{k-1}(2a_{i}-1)\epsilon_{i}
P(ak−1,...,a0)=f(ak−1,...,a0)=1∏(0.5+ϵi)ai(0.5−ϵi)1−ai≈2k1+2k−11i=0∑k−1(2ai−1)ϵi
由于
∣
ϵ
i
∣
≪
1
|\epsilon_{i}|\ll 1
∣ϵi∣≪1,所以高阶的
ϵ
\epsilon
ϵ被忽略了。理想的情况下概率值,应该是
1
2
k
\frac{1}{2^{k}}
2k1,所以误差应该是:
E
(
a
0
,
.
.
.
,
a
k
−
1
)
=
1
2
k
−
1
∑
i
=
0
k
−
1
(
2
a
i
−
1
)
ϵ
i
E(a_{0},...,a_{k-1})=\frac{1}{2^{k-1}}\sum_{i=0}^{k-1}(2a_{i}-1)\epsilon_{i}
E(a0,...,ak−1)=2k−11∑i=0k−1(2ai−1)ϵi。
观察这个等式的特点,可以发现:
E
(
a
0
,
.
.
.
,
a
k
−
1
)
≈
−
E
(
a
0
‾
,
.
.
.
,
a
k
−
1
‾
)
E(a_{0},...,a_{k-1})\approx-E(\overline{a_{0}},...,\overline{a_{k-1}})
E(a0,...,ak−1)≈−E(a0,...,ak−1)
因此,我们可以借用这个性质来尝试消除消除这个误差。首先如果是我们想要得到的概率值
C
2
k
\frac{C}{2^{k}}
2kC中的
C
C
C是一个偶数的话,那么我们可以设置
C
2
\frac{C}{2}
2C对的
(
a
0
,
.
.
.
,
a
k
−
1
)
(a_{0},...,a_{k-1})
(a0,...,ak−1)组合使得
f
(
a
k
−
1
,
.
.
.
,
a
0
)
=
1
f(a_{k-1},...,a_{0})=1
f(ak−1,...,a0)=1,这样的话既能满足有
C
C
C个组合使得布尔函数为1,又可以有效的消除由误差引起产生的概率值不精确。
那么如果这个
C
C
C是奇数怎么办呢?那么我们可以增加一位输入
r
k
r_{k}
rk,使得总共有
2
k
+
1
2^{k+1}
2k+1种组合。然后如果我们选择
C
C
C对这样的组合的话,最终概率值会仍然是
C
2
k
\frac{C}{2^{k}}
2kC,我们将这种形式的函数叫做错误消除函数(ECF,Error Cancelling Function)。
C、Design of Accurate Probability Conversion Circuits
这部分,我们采用上一部分的ECF准则来设计一个精确的PCC。为了兼顾到当
C
C
C为奇数的情况,所以新型的PCC有
k
+
1
k+1
k+1个基于忆阻器的随机比特源输入,每个输入代表的概率值理想情况下是0.5,另外还有
k
k
k个目标比特输入
(
c
k
−
1
,
.
.
.
,
c
0
)
(c_{k-1},...,c_{0})
(ck−1,...,c0),所以布尔函数可以写成
f
(
r
k
,
r
k
−
1
,
.
.
.
,
r
0
,
c
k
−
1
,
.
.
.
,
c
0
)
f(r_{k},r_{k-1},...,r_{0},c_{k-1},...,c_{0})
f(rk,rk−1,...,r0,ck−1,...,c0),由于针对一个概率值,目标比特输入是固定的,所以
f
(
r
k
,
r
k
−
1
,
.
.
.
,
r
0
,
c
k
−
1
,
.
.
.
,
c
0
)
=
f
a
k
−
1
.
.
.
a
0
(
r
k
,
r
k
−
1
,
.
.
.
,
r
0
)
f(r_{k},r_{k-1},...,r_{0},c_{k-1},...,c_{0})=f_{a_{k-1}...a_{0}}(r_{k},r_{k-1},...,r_{0})
f(rk,rk−1,...,r0,ck−1,...,c0)=fak−1...a0(rk,rk−1,...,r0)。因此为了让输出概率即使在随机比特源输入概率不是准确的0.5,输出也能够准确,所以我们需要让
f
a
k
−
1
.
.
.
a
0
(
r
k
,
r
k
−
1
,
.
.
.
,
r
0
)
f_{a_{k-1}...a_{0}}(r_{k},r_{k-1},...,r_{0})
fak−1...a0(rk,rk−1,...,r0)是ECF,如果对应于每一个
(
c
k
−
1
,
.
.
.
,
c
0
)
(c_{k-1},...,c_{0})
(ck−1,...,c0)组合,函数
f
f
f都是ECF,那么
f
(
r
k
,
r
k
−
1
,
.
.
.
,
r
0
,
c
k
−
1
,
.
.
.
,
c
0
)
f(r_{k},r_{k-1},...,r_{0},c_{k-1},...,c_{0})
f(rk,rk−1,...,r0,ck−1,...,c0)就是一个ECPCF(Error Cancelling Probability Conversion Function)。
接下来,我们将传统PCC的布尔函数
g
g
g和ECPCF建立一个直接的联系。例如下面这个利用传统
k
=
2
k=2
k=2输入的PCC的布尔函数
g
(
r
1
,
r
0
,
c
1
,
c
0
)
g(r_{1},r_{0},c_{1},c_{0})
g(r1,r0,c1,c0)合成一个ECPCF:
f
(
r
2
,
r
1
,
r
0
,
c
1
,
c
0
)
=
r
2
g
(
r
1
‾
,
r
0
‾
,
c
1
,
c
0
)
+
r
2
‾
g
(
r
1
,
r
0
,
c
1
,
c
0
)
f(r_{2},r_{1},r_{0},c_{1},c_{0})=r_{2}g(\overline{r_{1}},\overline{r_{0}},c_{1},c_{0})+\overline{r_{2}}g(r_{1},r_{0},c_{1},c_{0})
f(r2,r1,r0,c1,c0)=r2g(r1,r0,c1,c0)+r2g(r1,r0,c1,c0)
分析一下这个函数:当
r
2
=
0
r_{2}=0
r2=0时,
f
(
r
2
,
r
1
,
r
0
,
c
1
,
c
0
)
=
g
(
r
1
,
r
0
,
c
1
,
c
0
)
f(r_{2},r_{1},r_{0},c_{1},c_{0})=g(r_{1},r_{0},c_{1},c_{0})
f(r2,r1,r0,c1,c0)=g(r1,r0,c1,c0),此时会有
A
A
A个组合使得函数
g
g
g等于1,也就是
f
f
f等于1;当
r
2
=
1
r_{2}=1
r2=1时,
f
(
r
2
,
r
1
,
r
0
,
c
1
,
c
0
)
=
g
(
r
1
‾
,
r
0
‾
,
c
1
,
c
0
)
f(r_{2},r_{1},r_{0},c_{1},c_{0})=g(\overline{r_{1}},\overline{r_{0}},c_{1},c_{0})
f(r2,r1,r0,c1,c0)=g(r1,r0,c1,c0),同样会有
A
A
A个组合使得函数
g
g
g等于1,这A个组合中的每一个组合中的每一个布尔变量都是上一个布尔变量的置反。所以最后总共有
2
A
2A
2A个组合使得
f
a
1
,
a
0
(
r
2
,
r
1
,
r
0
)
=
1
f_{a_{1},a_{0}}(r_{2},r_{1},r_{0})=1
fa1,a0(r2,r1,r0)=1,所以最后的概率值是
A
4
\frac{A}{4}
4A。这个ECPCF的实现电路结构如下:
如图所示,这种新型的PCC使用了双倍数量的传统PCC,使得功耗和电路面积都加倍了。但是由于这种电路使用基于忆阻器这种新兴设备的随机比特源,尺寸和功耗相比于传统的利用LFSR的RNS小得多,所以整个
S
N
G
SNG
SNG的功耗和电路面积还是比传统的小的。
D、Generating Correlated Bit Streams using ECPCCs
一般在SC电路中,我们都需要输入的随机比特流是互不相关或者独立的,但是有的有些运算,如果运用了这种相关性,将会很有利于SC电路的设计。就比如如下的运算:
∣
x
−
y
∣
|x-y|
∣x−y∣
这可以运算就可以只利用一个XOR运算符就可以实现,但是是有条件的,就是这两个随机比特流必须是具有最大相关性。可以利用韦恩图理解:
此图中表示的就是
x
x
x和
y
y
y具有最大的相关性即重叠的1个数最大,蓝色部分表示
x
x
x和
y
y
y的异或运算结果。电路结构如下:
由图可知,产生
x
x
x和
y
y
y的输入随机比特流是来自同一个比特源,所以保证在每个时钟时刻,
x
x
x和
y
y
y重叠1的可能性最大。