1、Abstract
在这篇文章中,为随机计算电路的设计介绍了一种一般的组合电路设计方法。这种设计方法能够完成具有任何算术方程功能的电路。
2、Introduction
超大规模集成电路(VLSI circuits)的可靠性成为一个最重要的问题,设计过程存在电压变化和热变化引起一系列问题。为此,随机计算高容错能力(tolerance of bit-flip errors)能够很好的解决这些问题。
SC 简介:它是将数字电路中逻辑域上的运算转化成概率域上的运算。即:当一个逻辑器件的布尔方程是
Y
=
F
(
X
1
,
X
2
)
Y=F(X_{1},X_{2})
Y=F(X1,X2)
转化到概率域上运算就是把每个输入输出看作是一个随机变量,那么输出是1的概率是:
P
(
Y
=
1
)
=
P
(
F
(
X
1
,
X
2
)
=
1
)
=
P
(
X
1
=
a
1
,
X
2
=
a
2
)
P(Y=1)=P(F(X_{1},X_{2})=1)=P(X_{1}=a_{1},X_{2}=a_{2})
P(Y=1)=P(F(X1,X2)=1)=P(X1=a1,X2=a2)
例如一个二输入的AND门,它的布尔函数是:
Y
=
F
(
X
1
,
X
2
)
=
X
1
X
2
Y=F(X_{1},X_{2})=X_{1}X_{2}
Y=F(X1,X2)=X1X2
转化到概率域上运算,要使得输出随机变量是1,则输入变量需要都是1,即:
P
(
Y
=
1
)
=
P
(
X
1
=
1
,
X
2
=
1
)
=
P
(
X
1
=
1
)
P
(
X
2
=
1
)
P(Y=1)=P(X_{1}=1,X_{2}=1)=P(X_{1}=1)P(X_{2}=1)
P(Y=1)=P(X1=1,X2=1)=P(X1=1)P(X2=1)
利用伯努利大数定理可得:一些列独立同分布的实验,可以利用频率去近似概率。所以利用随机数序列去表示这些概率值,即利用一串二进制数序列中1出现的频率去表示这些概率值。如下图:
SC一个重要特点就是:它具有强大的容错能力。
设计SC电路的方法类似于逻辑电路中的设计方法,分为:组合和时序。
这篇文章主要贡献是:
1、我们为SC引入了一般的组合设计,它只对必要的输入概率做出假设,而不需要对底层组合电路进行任何额外的假设。 我们分析了随机域中设计的一般行为。
2、我们提出了一种综合方法来合成用于实现任意目标算术函数的随机电路。 我们首先将目标函数转换为可以通过所提出的设计实现的特殊形式。 但是,布尔函数有很多选择,可以在随机域中实现转换后的函数。 我们展示了这些候选布尔函数的依据的特征,并提出了有效的启发式方法,以确定一个可以减小电路面积和延迟的组合电路的良好选择。
3、A General Design of Stochastic Design
我们的目的在于设计一个算术函数
f
(
x
1
,
.
.
.
,
x
n
)
f(x_{1},...,x_{n})
f(x1,...,xn),即输出为
1
1
1的概率是
f
(
x
1
,
.
.
.
,
x
n
)
f(x_{1},...,x_{n})
f(x1,...,xn)。下面我们讨论的是组合电路。
首先,这个函数中的变量
x
1
,
.
.
.
,
x
n
x_{1},...,x_{n}
x1,...,xn需要由一系列的输入
X
1
,
.
.
.
,
X
n
X_{1},...,X_{n}
X1,...,Xn提供这些“概率值”(利用RNG产生)。另外这些变量一定会有系数,所以需要额外提供常量输入,这些常量利用一系列的
1
2
\frac{1}{2}
21构成(利用LFSR提供)。因此,文章中提出的设计电路的输入是:
X
1
,
.
.
.
,
X
n
,
Y
1
,
.
.
.
,
Y
m
X_{1},...,X_{n},Y_{1},...,Y_{m}
X1,...,Xn,Y1,...,Ym,其中
X
i
X_{i}
Xi提供一系列的概率值
x
i
∈
[
0
,
1
]
x_{i}\in[0,1]
xi∈[0,1],
Y
i
Y_{i}
Yi提供一系列的常量
1
2
\frac{1}{2}
21。如下图:
那么,提出这样的组合电路到底能够实现怎么样的函数:
y
=
P
(
F
(
X
1
,
.
.
.
,
X
n
,
Y
1
,
.
.
.
,
Y
m
)
=
1
)
=
∑
(
a
1
,
.
.
.
,
a
n
,
b
1
,
.
.
.
,
b
m
)
∈
{
0
,
1
}
m
+
n
:
F
(
a
1
,
.
.
.
,
a
n
,
b
1
,
.
.
.
,
b
m
)
=
1
P
(
X
1
=
a
1
,
.
.
.
,
X
n
=
a
n
,
Y
1
=
b
1
,
.
.
.
,
Y
m
=
b
m
)
=
∑
(
a
1
,
.
.
.
,
a
n
)
∈
{
0
,
1
}
n
∑
(
b
1
,
.
.
.
,
b
m
)
∈
{
0
,
1
}
m
:
F
(
a
1
,
.
.
.
,
a
n
,
b
1
,
.
.
.
,
b
m
)
=
1
P
(
X
1
=
a
1
,
.
.
.
,
X
n
=
a
n
,
Y
1
=
b
1
,
.
.
.
,
Y
m
=
b
m
)
=
∑
(
a
1
,
.
.
.
,
a
n
)
∈
{
0
,
1
}
n
g
(
a
1
,
.
.
.
,
a
n
)
P
(
X
1
=
a
1
)
.
.
.
P
(
X
n
=
a
n
)
1
2
m
∵
P
(
X
i
=
1
)
=
x
i
,
P
(
X
i
=
0
)
=
1
−
x
i
∴
P
(
X
i
=
a
i
)
=
x
i
a
i
(
1
−
x
i
)
1
−
a
i
∴
y
=
f
(
x
1
,
.
.
.
,
x
n
)
=
∑
(
a
1
,
.
.
.
,
a
n
)
∈
{
0
,
1
}
n
g
(
a
1
)
,
.
.
.
,
g
(
a
n
)
2
m
∏
j
=
1
n
x
j
a
j
(
1
−
x
j
)
1
−
a
j
其
中
h
(
a
1
,
.
.
.
,
a
n
)
=
g
(
a
1
,
.
.
.
,
a
n
)
2
m
,
g
(
a
1
,
.
.
.
,
a
n
)
∈
[
0
,
2
m
]
表
示
当
(
a
1
,
.
.
.
,
a
n
)
确
定
时
,
有
多
少
种
不
同
的
(
b
1
,
.
.
.
,
b
m
)
可
以
使
得
F
(
a
1
,
.
.
.
,
a
n
,
b
1
,
.
.
.
,
b
m
)
=
1.
∏
j
=
1
n
x
j
a
j
(
1
−
x
j
)
1
−
a
j
与
(
a
1
,
.
.
.
,
a
n
)
的
二
进
制
组
合
是
一
致
的
,
因
此
把
这
种
形
式
的
方
程
叫
做
二
进
制
组
合
多
项
式
(
B
C
P
)
,
h
(
a
1
,
.
.
.
,
a
n
)
=
g
(
a
1
,
.
.
.
,
a
n
)
2
m
为
多
项
式
的
系
数
.
y=P(F(X_{1},...,X_{n},Y_{1},...,Y_{m})=1)\\= \sum_{(a_{1},...,a_{n},b_{1},...,b_{m})\in\{0,1\}^{m+n}:\ F(a_{1},...,a_{n},b_{1},...,b_{m})=1} P(X_{1}=a_{1},...,X_{n}=a_{n},Y_{1}=b_{1},...,Y_{m}=b_{m})\\ \ \\ =\sum_{(a_{1},...,a_{n})\in\{0,1\}^{n}}\sum_{(b_{1},...,b_{m})\in\{0,1\}^{m}:\ F(a_{1},...,a_{n},b_{1},...,b_{m})=1}P(X_{1}=a_{1},...,X_{n}=a_{n},Y_{1}=b_{1},...,Y_{m}=b_{m})\\ \ \\ =\sum_{(a_{1},...,a_{n})\in\{0,1\}^{n}}g(a_{1},...,a_{n})P(X_{1}=a_{1})...P(X_{n}=a_{n})\frac{1}{2^{m}}\\ \ \\ \ \\ \because P(X_{i}=1)=x_{i},\ P(X_{i}=0)=1-x_{i} \therefore P(X_{i}=a_{i})=x_{i}^{a_{i}}(1-x_{i})^{1-a_{i}}\\ \therefore y=f(x_{1},...,x_{n})=\sum_{(a_{1},...,a_{n})\in\{0,1\}^{n}}\frac{g(a_{1}),...,g(a_{n})}{2^{m}}\prod_{j=1}^{n}x_{j}^{a_{j}}(1-x_{j})^{1-a_{j}}\\ \ \\ \ \\ 其中h(a_{1},...,a_{n})=\frac{g(a_{1},...,a_{n})}{2^{m}},\ g(a_{1},...,a_{n})\in[0,2^{m}]表示当(a_{1},...,a_{n})确定时,\\有多少种不同的(b_{1},...,b_{m})可以使得F(a_{1},...,a_{n},b_{1},...,b_{m})=1.\\ \prod_{j=1}^{n}x_{j}^{a_{j}}(1-x_{j})^{1-a_{j}}与(a_{1},...,a_{n})的二进制组合是一致的,因此把\\这种形式的方程叫做二进制组合多项式(BCP),\ h(a_{1},...,a_{n})=\frac{g(a_{1},...,a_{n})}{2^{m}}为多项式的系数.
y=P(F(X1,...,Xn,Y1,...,Ym)=1)=(a1,...,an,b1,...,bm)∈{0,1}m+n: F(a1,...,an,b1,...,bm)=1∑P(X1=a1,...,Xn=an,Y1=b1,...,Ym=bm) =(a1,...,an)∈{0,1}n∑(b1,...,bm)∈{0,1}m: F(a1,...,an,b1,...,bm)=1∑P(X1=a1,...,Xn=an,Y1=b1,...,Ym=bm) =(a1,...,an)∈{0,1}n∑g(a1,...,an)P(X1=a1)...P(Xn=an)2m1 ∵P(Xi=1)=xi, P(Xi=0)=1−xi∴P(Xi=ai)=xiai(1−xi)1−ai∴y=f(x1,...,xn)=(a1,...,an)∈{0,1}n∑2mg(a1),...,g(an)j=1∏nxjaj(1−xj)1−aj 其中h(a1,...,an)=2mg(a1,...,an), g(a1,...,an)∈[0,2m]表示当(a1,...,an)确定时,有多少种不同的(b1,...,bm)可以使得F(a1,...,an,b1,...,bm)=1.j=1∏nxjaj(1−xj)1−aj与(a1,...,an)的二进制组合是一致的,因此把这种形式的方程叫做二进制组合多项式(BCP), h(a1,...,an)=2mg(a1,...,an)为多项式的系数.
4、Synthesis of Multi-Linear Polynomial
BCP毕竟还是一种特殊形式的多项式。接下来,来探讨一种更具普遍性的多项式形式:多线性多项式(MLP)。如下:
f
(
x
1
,
.
.
.
,
x
n
)
=
∑
(
a
1
,
.
.
.
,
a
n
)
∈
{
0
,
1
}
n
c
(
a
1
,
.
.
.
,
a
n
)
∏
j
=
1
n
x
j
a
j
f(x_{1},...,x_{n})=\sum_{(a_{1},...,a_{n})\in\{0,1\}^{n}}c(a_{1},...,a_{n})\prod_{j=1}^{n}x_{j}^{a_{j}}
f(x1,...,xn)=(a1,...,an)∈{0,1}n∑c(a1,...,an)j=1∏nxjaj
其中
c
(
a
1
,
.
.
.
,
a
n
)
c(a_{1},...,a_{n})
c(a1,...,an)表示MLP的系数。
设计实现MLP功能的逻辑电路分为两个步骤:
a、将MLP转化BCP形式,然后求出BCP的系数;
b、设计出相应的电路。
A、MLP
→
\rightarrow
→BCP
MLP是肯定可以转化成BCP的形式的。原因如下:
MLP是由这
2
n
2^{n}
2n个基础项构成的:
∏
j
=
1
n
x
j
a
j
\prod_{j=1}^{n}x_{j}^{a_{j}}
j=1∏nxjaj
可以利用数学归纳法(mathematical induction)证明在SC中这
2
n
2^{n}
2n个项是彼此独立的:
P
r
o
o
f
:
1
、
令
n
=
2
:
∏
j
=
1
n
x
j
a
j
=
{
1
,
x
1
,
x
2
,
x
1
x
2
}
x
1
和
x
2
必
然
是
相
互
独
立
的
,
那
么
x
1
,
x
2
是
否
是
相
互
独
立
的
呢
?
∵
在
S
C
运
算
中
为
了
是
运
算
结
果
保
证
正
确
,
要
求
不
同
运
算
项
中
的
同
一
变
量
也
需
要
是
独
立
的
∴
E
(
x
1
∗
x
1
x
2
)
=
E
(
x
1
)
E
(
x
1
)
E
(
x
2
)
=
E
(
x
1
)
E
(
x
1
x
2
)
∴
这
四
个
项
是
相
互
独
立
的
2
、
令
n
=
n
+
1
:
∏
j
=
1
n
+
1
x
j
a
j
:
(
a
1
,
.
.
.
,
a
n
+
1
)
∈
{
0
,
1
}
n
+
1
∏
j
=
1
n
+
1
x
j
a
j
=
{
x
n
+
1
∏
j
=
1
n
x
j
a
j
,
∏
j
=
1
n
x
j
a
j
}
∵
x
n
+
1
和
x
n
+
1
,
x
1
,
.
.
.
,
x
n
都
是
独
立
的
∴
x
n
+
1
∏
j
=
1
n
x
j
a
j
中
的
这
2
n
项
是
相
互
独
立
的
同
理
:
x
n
+
1
∏
j
=
1
n
x
j
a
j
和
∏
j
=
1
n
x
j
a
j
也
是
相
互
独
立
的
∴
∏
j
=
1
n
+
1
x
j
a
j
这
2
n
+
1
项
是
两
两
独
立
的
综
上
所
述
:
∏
j
=
1
n
x
j
a
j
是
两
两
独
立
的
Proof:\ \ 1、令n=2: \\ \prod_{j=1}^{n}x_{j}^{a_{j}}=\{1,\ x_{1},\ x_{2},\ x_{1}x_{2}\}\\ x_{1}和x_{2}必然是相互独立的,那么x_{1},\ x_{2}是否是相互独立的呢?\\ \because 在SC运算中为了是运算结果保证正确,要求不同运算项中的同一变量也需要是独立的\\ \therefore E(x_{1}*x_{1}x_{2})=E(x_{1})E(x_{1})E(x_{2})=E(x_{1})E(x_{1}x_{2})\\ \therefore 这四个项是相互独立的\\ 2、令n=n+1:\ \prod_{j=1}^{n+1}x_{j}^{a_{j}}:(a_{1},...,a_{n+1})\in\{0,1\}^{n+1}\\ \prod_{j=1}^{n+1}x_{j}^{a_{j}}=\{x_{n+1}\prod_{j=1}^{n}x_{j}^{a_{j}},\ \prod_{j=1}^{n}x_{j}^{a_{j}}\}\\ \because x_{n+1}和x_{n+1},\ x_{1},...,x_{n}都是独立的\\ \therefore x_{n+1}\prod_{j=1}^{n}x_{j}^{a_{j}}中的这2^{n}项是相互独立的\\ 同理:x_{n+1}\prod_{j=1}^{n}x_{j}^{a_{j}}和\prod_{j=1}^{n}x_{j}^{a_{j}}也是相互独立的\\ \therefore \prod_{j=1}^{n+1}x_{j}^{a_{j}}这2^{n+1}项是两两独立的\\ 综上所述:\prod_{j=1}^{n}x_{j}^{a_{j}}是两两独立的
Proof: 1、令n=2:j=1∏nxjaj={1, x1, x2, x1x2}x1和x2必然是相互独立的,那么x1, x2是否是相互独立的呢?∵在SC运算中为了是运算结果保证正确,要求不同运算项中的同一变量也需要是独立的∴E(x1∗x1x2)=E(x1)E(x1)E(x2)=E(x1)E(x1x2)∴这四个项是相互独立的2、令n=n+1: j=1∏n+1xjaj:(a1,...,an+1)∈{0,1}n+1j=1∏n+1xjaj={xn+1j=1∏nxjaj, j=1∏nxjaj}∵xn+1和xn+1, x1,...,xn都是独立的∴xn+1j=1∏nxjaj中的这2n项是相互独立的同理:xn+1j=1∏nxjaj和j=1∏nxjaj也是相互独立的∴j=1∏n+1xjaj这2n+1项是两两独立的综上所述:j=1∏nxjaj是两两独立的
因此
∏
j
=
1
n
x
j
a
j
\prod_{j=1}^{n}x_{j}^{a_{j}}
∏j=1nxjaj构成了一个维度是
2
n
2^{n}
2n的空间。由于BCP是由
∏
j
=
1
n
x
j
a
j
(
1
−
x
j
)
1
−
a
j
\prod_{j=1}^{n}x_{j}^{a_{j}}(1-x_{j})^{1-a_{j}}
∏j=1nxjaj(1−xj)1−aj这
2
n
2^{n}
2n项构成的,所以这
2
n
2^{n}
2n项构成的空间维度肯定不大于
2
n
2^{n}
2n,所以一定可以用
∏
j
=
1
n
x
j
a
j
\prod_{j=1}^{n}x_{j}^{a_{j}}
∏j=1nxjaj描述
∏
j
=
1
n
x
j
a
j
(
1
−
x
j
)
1
−
a
j
\prod_{j=1}^{n}x_{j}^{a_{j}}(1-x_{j})^{1-a_{j}}
∏j=1nxjaj(1−xj)1−aj构成的空间,即任何一个MLP可以映射成一个BCP。
h
(
a
1
,
.
.
.
,
a
n
)
=
f
(
a
1
,
.
.
.
,
a
n
)
h(a_{1},...,a_{n})=f(a_{1},...,a_{n})
h(a1,...,an)=f(a1,...,an)
为了让
h
(
a
1
,
.
.
.
,
a
n
)
∈
[
0
,
1
]
h(a_{1},...,a_{n})\in[0,1]
h(a1,...,an)∈[0,1],需要进行一个变换。如果
h
m
i
n
=
r
,
h
m
a
x
=
s
h_{min}=r,\ h_{max}=s
hmin=r, hmax=s,则将
h
′
=
h
−
r
s
−
r
h'=\frac{h-r}{s-r}
h′=s−rh−r替换
h
h
h,得到:
f
′
(
x
1
,
.
.
.
,
x
n
)
=
∑
(
a
1
,
.
.
.
,
a
n
)
∈
{
0
,
1
}
n
h
′
(
a
1
,
.
.
.
,
a
n
)
∏
j
=
1
n
x
j
a
j
(
1
−
x
j
)
1
−
a
j
f
(
x
1
,
.
.
.
,
x
n
)
=
(
s
−
r
)
f
′
(
x
1
,
.
.
.
,
x
n
)
+
r
f'(x_{1},...,x_{n})=\sum_{(a_{1},...,a_{n})\in\{0,1\}^{n}}h'(a_{1},...,a_{n})\prod_{j=1}^{n}x_{j}^{a_{j}}(1-x_{j})^{1-a_{j}}\\ f(x_{1},...,x_{n})=(s-r)f'(x_{1},...,x_{n})+r
f′(x1,...,xn)=(a1,...,an)∈{0,1}n∑h′(a1,...,an)j=1∏nxjaj(1−xj)1−ajf(x1,...,xn)=(s−r)f′(x1,...,xn)+r
如何确定
m
m
m:
首先,会实现给出一个需要达到的精度值
p
r
e
c
prec
prec即为使
h
′
h'
h′满足
g
2
m
\frac{g}{2^{m}}
2mg的形式,将每个
h
′
h'
h′近似成
h
′
′
h''
h′′,但是需要满足
∣
h
′
′
−
h
′
∣
≤
p
r
e
c
|h''-h'|\le prec
∣h′′−h′∣≤prec。采用迭代的方法,将
m
m
m从1开始递增,当满足精度要求时,停止迭代。但
m
m
a
x
=
⌈
log
2
1
p
r
e
c
⌉
m_{max}=\lceil\log_{2}\frac{1}{prec}\rceil
mmax=⌈log2prec1⌉,所以当
m
m
m达到最大值时必须停止迭代。
B、Synthesis the circuit
在得到了BCP形式的多项式后,我们可以知道的一个最重要的信息就是:对于每一个确定的
(
a
1
,
.
.
.
,
a
n
)
∈
{
0
,
1
}
n
(a_{1},...,a_{n})\in\{0,1\}^{n}
(a1,...,an)∈{0,1}n,有多少种不同的
(
b
1
,
.
.
.
,
b
m
)
∈
{
0
,
1
}
m
(b_{1},...,b_{m})\in\{0,1\}^{m}
(b1,...,bm)∈{0,1}m组合,使得
F
(
a
1
,
.
.
.
,
a
n
,
b
1
,
.
.
.
,
b
m
)
=
1
F(a_{1},...,a_{n},b_{1},...,b_{m})=1
F(a1,...,an,b1,...,bm)=1,即
g
(
a
1
,
.
.
.
,
a
n
)
g(a_{1},...,a_{n})
g(a1,...,an)。接下来我们只需要选择适当的
(
b
1
,
.
.
.
,
b
m
)
∈
{
0
,
1
}
m
(b_{1},...,b_{m})\in\{0,1\}^{m}
(b1,...,bm)∈{0,1}m组合来建立对应的布尔函数。当然每个
g
(
a
1
,
.
.
.
,
a
n
)
g(a_{1},...,a_{n})
g(a1,...,an)可以有多个布尔函数,所以我们需要按一定的方法选择来满足一定的要求:更小的电路时延以及更少电路所占面积。
文章中采用了一种启发式方法:
首先定义
M
(
a
1
,
.
.
.
,
a
n
,
b
1
,
.
.
.
,
b
m
)
M(a_{1},...,a_{n},b_{1},...,b_{m})
M(a1,...,an,b1,...,bm)是相应的组合:
(
a
1
,
.
.
.
,
a
n
,
b
1
,
.
.
.
,
b
m
)
(a_{1},...,a_{n},b_{1},...,b_{m})
(a1,...,an,b1,...,bm)的最小项。另外,定义
S
(
a
1
,
.
.
.
,
a
n
)
S(a_{1},...,a_{n})
S(a1,...,an)是一个最小项集合:
{
M
(
a
1
,
.
.
.
,
a
n
,
b
1
,
.
.
.
,
b
m
)
:
(
b
1
,
.
.
.
,
b
m
)
∈
{
0
,
1
}
m
}
\{M(a_{1},...,a_{n},b_{1},...,b_{m}):\ (b_{1},...,b_{m})\in\{0,1\}^{m}\}
{M(a1,...,an,b1,...,bm): (b1,...,bm)∈{0,1}m}。(
C
u
b
e
:
是
指
布
尔
变
量
的
与
式
,
e
.
g
.
,
X
1
X
2
ˉ
Cube:\ 是指布尔变量的与式,\ e.g.,\ X_{1}\bar{X_{2}}
Cube: 是指布尔变量的与式, e.g., X1X2ˉ)。
为了使得电路面积尽量小,则尽量使得布尔运算次数减少,那么我们需要选择一些最小项使得最后得到得布尔函数中的
c
u
b
e
cube
cube越少越好,因为这样的话就代表着被Cube化简了的布尔变量越多,进而布尔运算的次数也越少。
接下来对不同的
g
(
a
1
,
.
.
.
,
a
n
)
g(a_{1},...,a_{n})
g(a1,...,an)进行讨论:
1、
g
(
a
1
,
.
.
.
,
a
n
)
=
0
g(a_{1},...,a_{n})=0
g(a1,...,an)=0, 不需要从
S
(
a
1
,
.
.
.
,
a
n
)
S(a_{1},...,a_{n})
S(a1,...,an)中挑选任何一项最小项;
2、
g
(
a
1
,
.
.
.
,
a
n
)
=
2
m
g(a_{1},...,a_{n})=2^{m}
g(a1,...,an)=2m,所有的
S
(
a
1
,
.
.
.
,
a
n
)
S(a_{1},...,a_{n})
S(a1,...,an)中的项都满足条件;
3、
0
<
g
(
a
1
,
.
.
.
,
a
n
)
<
2
m
0<g(a_{1},...,a_{n})<2^{m}
0<g(a1,...,an)<2m:
a、先将
g
(
a
1
,
.
.
.
,
a
n
)
g(a_{1},...,a_{n})
g(a1,...,an)表示成二进制形式,即:
g
(
a
1
,
.
.
.
,
a
n
)
=
∑
k
=
0
r
−
1
2
i
k
g(a_{1},...,a_{n})=\sum_{k=0}^{r-1}2^{i_{k}}
g(a1,...,an)=k=0∑r−12ik
其中
r
r
r表示二进制形式中
1
1
1的个数,
0
≤
i
0
≤
i
1
≤
.
.
.
≤
i
r
−
1
≤
m
−
1
0\le i_{0}\le i_{1}\le ...\le i_{r-1}\le m-1
0≤i0≤i1≤...≤ir−1≤m−1。即我们需要
r
r
r个
C
u
b
e
Cube
Cube来描述这个布尔函数。即第
k
k
k个
C
u
b
e
Cube
Cube包含了
2
i
k
2^{i_{k}}
2ik个最小项,但是每个
C
u
b
e
Cube
Cube中的任意最小项不能重复(这就是我们之后将重复提到的性质:Disjoint),所以在选择
(
b
1
,
.
.
.
,
b
m
)
∈
{
0
,
1
}
m
(b_{1},...,b_{m})\in\{0,1\}^{m}
(b1,...,bm)∈{0,1}m时需要遵循以下规则:
如
果
一
个
C
u
b
e
中
,
包
含
了
2
k
个
最
小
项
,
那
么
我
们
将
(
b
1
,
.
.
.
,
b
m
)
设
置
为
:
b
1
=
.
.
.
=
b
m
−
k
−
1
=
1
,
b
m
−
k
=
0
如果一个Cube中,包含了2^{k}个最小项,那么我们将(b_{1},...,b_{m})设置为:b_{1}=...=b_{m-k-1}=1,\ b_{m-k}=0
如果一个Cube中,包含了2k个最小项,那么我们将(b1,...,bm)设置为:b1=...=bm−k−1=1, bm−k=0
利用这种方法,可以注意到,对于同一个
(
a
1
,
.
.
.
,
a
n
)
(a_{1},...,a_{n})
(a1,...,an)组合,所有的
C
u
b
e
Cube
Cube是两两
d
i
s
j
o
i
n
t
disjoint
disjoint的,并且对于不同的两个
(
a
1
,
.
.
.
,
a
n
)
(a_{1},...,a_{n})
(a1,...,an)组合,
(
b
1
,
.
.
.
,
b
m
)
(b_{1},...,b_{m})
(b1,...,bm)组合是相同的,这样使得两个不同组合的
C
u
b
e
Cube
Cube有可能可以合并成一个更大的
C
u
b
e
Cube
Cube,从而能够减少
C
u
b
e
Cube
Cube项,减少电路面积。
5、Synthesis of General Polynomial
前面两个部分,所提及的函数都具有一定特殊性的多项式。这个部分,是设计更具一般性的多项式,即每个变量最高次幂不再是1,可能有高次幂。
A、将目标多项式转换成对应的BCP形式(和MLP类似)
在这里,我们将目标多项式进行了预处理,让它也变成熟悉的MLP形式。如下:
O
b
j
e
c
t
i
v
e
f
u
n
c
t
i
o
n
:
f
=
c
1
x
1
2
+
c
2
x
2
2
+
c
3
x
1
x
2
+
c
4
x
1
+
c
5
x
2
+
c
6
⇒
f
′
=
c
1
x
1
,
1
x
1
,
2
+
c
2
x
2
,
1
x
2
,
2
+
c
3
x
1
,
1
x
2
,
1
+
c
4
x
1
,
1
+
c
5
x
2
,
1
+
c
6
x
1
,
1
=
x
1
,
2
=
x
1
,
x
2
,
1
=
x
2
,
2
=
x
2
Objective\ function:\ f=c_{1}x_{1}^{2}+c_{2}x_{2}^{2}+c_{3}x_{1}x_{2}+c_{4}x_{1}+c_{5}x_{2}+c_{6}\\ \Rightarrow f'=c_{1}x_{1,1}x_{1,2}+c_{2}x_{2,1}x_{2,2}+c_{3}x_{1,1}x_{2,1}+c_{4}x_{1,1}+c_{5}x_{2,1}+c_{6}\\ x_{1,1}=x_{1,2}=x_{1},\ x_{2,1}=x_{2,2}=x_{2}
Objective function: f=c1x12+c2x22+c3x1x2+c4x1+c5x2+c6⇒f′=c1x1,1x1,2+c2x2,1x2,2+c3x1,1x2,1+c4x1,1+c5x2,1+c6x1,1=x1,2=x1, x2,1=x2,2=x2
最后利用Part 4的知识,将该MLP转化成BCP形式。
B、根据BCP设计
但是与Part 4不同的是在决定BCP的时候会相比更为复杂。例如下面的这个单变量函数:
f
(
x
1
,
1
,
x
1
,
2
)
=
g
0
(
0
,
0
)
2
m
(
1
−
x
1
,
1
)
(
1
−
x
1
,
2
)
+
g
0
(
0
,
1
)
2
m
(
1
−
x
1
,
1
)
x
1
,
2
+
g
0
(
1
,
0
)
2
m
x
1
,
1
(
1
−
x
1
,
2
)
+
g
0
(
1
,
1
)
2
m
x
1
,
1
x
1
,
2
f(x_{1,1},x_{1,2})=\frac{g_{0}(0,0)}{2^{m}}(1-x_{1,1})(1-x_{1,2})+\frac{g_{0}(0,1)}{2^{m}}(1-x_{1,1})x_{1,2}+\frac{g_{0}(1,0)}{2^{m}}x_{1,1}(1-x_{1,2})\\+\frac{g_{0}(1,1)}{2^{m}}x_{1,1}x_{1,2}
f(x1,1,x1,2)=2mg0(0,0)(1−x1,1)(1−x1,2)+2mg0(0,1)(1−x1,1)x1,2+2mg0(1,0)x1,1(1−x1,2)+2mg0(1,1)x1,1x1,2
由于
x
1
,
2
=
x
1
,
1
=
x
1
x_{1,2}=x_{1,1}=x_{1}
x1,2=x1,1=x1
所以
f
(
x
1
,
1
,
x
1
,
2
)
⇔
f
∗
(
x
1
,
1
,
x
1
,
2
)
=
g
0
∗
(
0
,
0
)
2
m
(
1
−
x
1
,
1
)
(
1
−
x
1
,
2
)
+
g
0
∗
(
0
,
1
)
2
m
(
1
−
x
1
,
1
)
x
1
,
2
+
g
0
∗
(
1
,
0
)
2
m
x
1
,
1
(
1
−
x
1
,
2
)
+
g
0
∗
(
1
,
1
)
2
m
x
1
,
1
x
1
,
2
(
g
0
∗
(
0
,
1
)
+
g
0
∗
(
1
,
0
)
=
g
0
(
0
,
1
)
+
g
0
(
1
,
0
)
)
f(x_{1,1},x_{1,2})\Leftrightarrow f^{*}(x_{1,1},x_{1,2})=\frac{g^{*}_{0}(0,0)}{2^{m}}(1-x_{1,1})(1-x_{1,2})+\frac{g^{*}_{0}(0,1)}{2^{m}}(1-x_{1,1})x_{1,2}\\+\frac{g^{*}_{0}(1,0)}{2^{m}}x_{1,1}(1-x_{1,2})+\frac{g^{*}_{0}(1,1)}{2^{m}}x_{1,1}x_{1,2}\ \ (g^{*}_{0}(0,1)+g^{*}_{0}(1,0)=g{0}(0,1)+g{0}(1,0))
f(x1,1,x1,2)⇔f∗(x1,1,x1,2)=2mg0∗(0,0)(1−x1,1)(1−x1,2)+2mg0∗(0,1)(1−x1,1)x1,2+2mg0∗(1,0)x1,1(1−x1,2)+2mg0∗(1,1)x1,1x1,2 (g0∗(0,1)+g0∗(1,0)=g0(0,1)+g0(1,0))
所以可以按照需求选择对应的
g
0
∗
(
1
,
0
)
,
g
0
∗
(
0
,
1
)
g^{*}_{0}(1,0),g^{*}_{0}(0,1)
g0∗(1,0),g0∗(0,1)
接下来,讨论一般多项式的BCP形式的基本组成项:
定义变量
x
i
x_{i}
xi的最高幂次是
d
i
d_{i}
di,
d
=
∑
i
=
1
n
d
i
d=\sum_{i=1}^{n}d_{i}
d=∑i=1ndi,所以这个BCP 含有
d
d
d个变量:
x
1
,
1
,
x
1
,
2
,
.
.
.
,
x
n
,
1
,
.
.
.
,
x
n
,
d
n
x_{1,1},\ x_{1,2},\ ...\ ,x_{n,1},\ ...\ ,x_{n,d_{n}}
x1,1, x1,2, ... ,xn,1, ... ,xn,dn,因此基本组成项可以写成:
∏
j
=
1
n
∏
k
=
1
d
j
x
j
,
k
a
j
,
k
(
1
−
x
j
,
k
)
1
−
a
j
,
k
(
a
1
,
1
,
.
.
.
,
a
1
,
d
1
,
.
.
.
,
a
n
,
1
,
.
.
.
,
a
n
,
d
n
)
∈
{
0
,
1
}
d
\prod_{j=1}^{n}\prod_{k=1}^{d_{j}}x_{j,k}^{a_{j,k}}(1-x_{j,k})^{1-a_{j,k}}\\ (a_{1,1},...,a_{1,d_{1}},...,a_{n,1},...,a_{n,d_{n}})\in\{0,1\}^{d}
j=1∏nk=1∏djxj,kaj,k(1−xj,k)1−aj,k(a1,1,...,a1,d1,...,an,1,...,an,dn)∈{0,1}d
另外,我们可以发现:
i
f
:
∑
k
=
1
d
i
a
i
,
k
=
∑
k
=
1
d
i
b
i
,
k
f
o
r
i
∈
[
1
,
n
]
∏
j
=
1
n
∏
k
=
1
d
j
x
j
,
k
a
j
,
k
(
1
−
x
j
,
k
)
1
−
a
j
,
k
⇔
∏
j
=
1
n
∏
k
=
1
d
j
x
j
,
k
b
j
,
k
(
1
−
x
j
,
k
)
1
−
b
j
,
k
if:\ \sum_{k=1}^{d_{i}}a_{i,k}=\sum_{k=1}^{d_{i}}b_{i,k}\ \ for\ i\in[1,n]\\ \prod_{j=1}^{n}\prod_{k=1}^{d_{j}}x_{j,k}^{a_{j,k}}(1-x_{j,k})^{1-a_{j,k}}\Leftrightarrow\prod_{j=1}^{n}\prod_{k=1}^{d_{j}}x_{j,k}^{b_{j,k}}(1-x_{j,k})^{1-b_{j,k}}
if: k=1∑diai,k=k=1∑dibi,k for i∈[1,n]j=1∏nk=1∏djxj,kaj,k(1−xj,k)1−aj,k⇔j=1∏nk=1∏djxj,kbj,k(1−xj,k)1−bj,k
因此根据上述等式,我们可以把所有的组合
a
1
,
1
,
.
.
.
,
a
n
,
d
n
∈
{
0
,
1
}
d
{a_{1,1},...,a_{n,d_{n}}}\in\{0,1\}^{d}
a1,1,...,an,dn∈{0,1}d划分成一系列的等价类,即:
I
(
s
1
,
.
.
.
,
s
n
)
=
{
(
a
1
,
1
,
.
.
.
,
a
n
,
d
n
)
∈
{
0
,
1
}
d
:
∑
k
=
1
d
j
a
j
,
k
=
s
j
,
f
o
r
e
a
c
h
j
=
1
,
.
.
.
,
n
}
I(s_{1},...,s_{n})=\{(a_{1,1},...,a_{n,d_{n}})\in\{0,1\}^{d}:\ \sum_{k=1}^{d_{j}}a_{j,k}=s_{j},\ for\ each\ j=1,...,n\}
I(s1,...,sn)={(a1,1,...,an,dn)∈{0,1}d: k=1∑djaj,k=sj, for each j=1,...,n}
所以类比上面的单变量时候的能够还原初始布尔函数的充分条件是:
∑
(
a
1
,
1
,
.
.
.
,
a
n
,
d
n
)
∈
I
(
s
1
,
.
.
.
,
s
n
)
g
(
a
1
,
1
,
.
.
.
,
a
n
,
d
n
)
=
∑
(
a
1
,
1
,
.
.
.
,
a
n
,
d
n
)
∈
I
(
s
1
,
.
.
.
,
s
n
)
g
0
(
a
1
,
1
,
.
.
.
,
a
n
,
d
n
)
=
△
G
(
s
1
,
.
.
.
,
s
n
)
f
o
r
a
l
l
0
≤
s
1
≤
d
1
,
.
.
.
,
0
≤
s
n
≤
d
n
\sum_{(a_{1,1},...,a_{n,d_{n}})\in I(s_{1},...,s_{n})}g(a_{1,1},...,a_{n,d_{n}})=\sum_{(a_{1,1},...,a_{n,d_{n}})\in I(s_{1},...,s_{n})}g_{0}(a_{1,1},...,a_{n,d_{n}})\overset{\triangle}{=}G(s_{1},...,s_{n})\\ for\ all\ 0\le s_{1}\le d_{1},...,\ 0\le s_{n}\le d_{n}
(a1,1,...,an,dn)∈I(s1,...,sn)∑g(a1,1,...,an,dn)=(a1,1,...,an,dn)∈I(s1,...,sn)∑g0(a1,1,...,an,dn)=△G(s1,...,sn)for all 0≤s1≤d1,..., 0≤sn≤dn
最后的工作就是为我们每一个
(
a
1
,
1
,
.
.
.
,
a
1
,
d
1
,
.
.
.
,
a
n
,
1
,
.
.
.
,
a
n
,
d
n
)
∈
{
0
,
1
}
n
(a_{1,1},...,a_{1,d_{1}},...,a_{n,1},...,a_{n,d_{n}})\in \{0,1\}^{n}
(a1,1,...,a1,d1,...,an,1,...,an,dn)∈{0,1}n组合分配一定的对应的
(
b
1
,
.
.
.
,
b
m
)
∈
{
0
,
1
}
m
(b_{1},...,b_{m})\in\{0,1\}^{m}
(b1,...,bm)∈{0,1}m组合数。采取的策略是:
k
=
⌊
G
(
s
1
,
.
.
.
,
s
n
)
/
2
m
⌋
,
先
将
首
先
的
k
个
(
a
1
,
1
,
.
.
.
,
a
1
,
d
1
,
.
.
.
,
a
n
,
1
,
.
.
.
,
a
n
,
d
n
)
组
合
每
个
分
配
2
m
个
(
b
1
,
.
.
.
,
b
m
)
组
合
,
然
后
再
给
第
k
+
1
个
(
a
1
,
1
,
.
.
.
,
a
1
,
d
1
,
.
.
.
,
a
n
,
1
,
.
.
.
,
a
n
,
d
n
)
组
合
分
配
G
(
s
1
,
.
.
.
,
s
n
)
−
2
m
∗
k
个
(
b
1
,
.
.
.
,
b
m
)
组
合
k=\lfloor G(s_{1},...,s_{n})/2^{m}\rfloor ,先将首先的k个(a_{1,1},...,a_{1,d_{1}},...,a_{n,1},...,a_{n,d_{n}})组合每个分配2^{m}个(b_{1},...,b_{m})组合,\\ 然后再给第k+1个(a_{1,1},...,a_{1,d_{1}},...,a_{n,1},...,a_{n,d_{n}})组合分配G(s_{1},...,s_{n})-2^{m}*k个(b_{1},...,b_{m})组合
k=⌊G(s1,...,sn)/2m⌋,先将首先的k个(a1,1,...,a1,d1,...,an,1,...,an,dn)组合每个分配2m个(b1,...,bm)组合,然后再给第k+1个(a1,1,...,a1,d1,...,an,1,...,an,dn)组合分配G(s1,...,sn)−2m∗k个(b1,...,bm)组合