动态调度的静态分析及其应用与降低STM开销
1. 计算读写集
调度分析的第二部分是为每个激活计算读写集。我们通过关系 read : H × BC × H 和 write : H × BC × H 来捕获读写集。例如,元组 read(act, bc, obj) 表示激活对象 act 可能到达字节码 bc ,并且这个字节码是一个可能访问对象 obj 的加载操作。读写集的计算很直接,可以用以下两条 Datalog 规则表示(其中下划线 _ 表示“任意”):
read(act, bc, obj) :-
activationReaches(act, bc), load(bc, v, _, _),
variablePT(v, obj).
write(act, bc, obj) :-
activationReaches(act, bc), store(bc, v, _, _), variablePT(v, obj).
关系 activationReaches : H × BC 是一个简单的可达性谓词,它从激活对象的任务开始,沿着调用图中的所有调用边,找出该激活可能执行的所有字节码。
2. 基于调度分析的优化
基于调度分析,有三种针对并行程序的优化方法。
超级会员免费看
订阅专栏 解锁全文
1794

被折叠的 条评论
为什么被折叠?



