Bernstein条件是应用于将在处理器中执行的两个语句S1和S2的条件。它指出,要同时执行两个连续的语句S1和S2,必须满足以下说明的三个条件,并且仍然会产生相同的结果。
S1和S2的读写集,读写集和读写集之间的交集必须为空。
上面的语句可以用以下表达式形式表示:
1. R(S1) ∩ W(S2) = { }
2. W(S1) ∩ R(S2) = { }
3. W(S1) ∩ W(S2) = { }
语句c = a – b的读写集;
R(c=a-b) = {a, b}
W(c=a-b) = {c}
语句的读写集w = c + 1;
R(w=c+1) = {c}
W(w=c+1) = {w}
语句x = x + 2的读写集;
R(x=x+2) = {x}
W(x=x+2) = {x}
示例1:
让,
S1 : a = x + y
S2 : b = z + 1
检查两个语句S1和S2是否满足Bernstein的条件。
解决方案:
R(S1) = {x, y}
W(S1) = {a}
R(S2) = {z}
W(S2) = {b}
1. R(S1) ∩ W(S2) = {x, y} ∩ {b} = { }
2. W(S1) ∩ R(S2) = {a} ∩ {z} = { }
3. W(S1) ∩ W(S2) = {a} ∩ {b} = { }
因此,可以同时执行S1和S2,即满足伯恩斯坦条件。
示例2:
让,
S1 : a = x + y
S2 : b = z + 1
S3 : c = a - b
检查两个语句S2和S3是否满足Bernstein的条件。
解决方案:
R(S2) = {z}
W(S2) = {b}
R(S3) = {a, b}
W(S3) = {c}
1. R(S2) ∩ W(S3) = {z} ∩ {c} = { }
2. W(S2) ∩ R(S3) = {b} ∩ {a, b} = {b}
3. W(S2) ∩ W(S3) = {b} ∩ {c} = { }
因此,不能同时执行S2和S3,即不满足伯恩斯坦的条件。