WCET 感知的源代码级优化与循环展开技术探究
1. 超块优化基础分析
超块优化是提升程序性能的重要手段,其中涉及到一些关键的基础分析。
1.1 存活时间分析
存活时间分析是基于超块优化所需的最后一项分析。它属于经典的数据流分析,用于确定每个程序点上变量是存活的还是死亡的。具体而言,如果在控制流图(CFG)的一条边上存在一条有向路径,该路径通向变量 v 的使用点,且路径中不包含 v 的重新定义,那么变量 v 在这条 CFG 边上就是存活的。如果变量在语句 s 的任何入边上存活,则称其在语句 s 处是入存活(live - in)的;如果变量在语句 s 的任何出边上存活,则称其在语句 s 处是出存活(live - out)的。LIVE - INmay(s) 和 LIVE - OUTmay(s) 分别是语句 s 处所有变量对应的可能存活集合。
1.2 公共子表达式消除(CSE)
CSE 是一种著名的优化技术,用于消除公共子表达式的重复计算,并将其替换为已保存值的使用。公共子表达式是指程序中某个表达式的出现,若存在另一个相同表达式的出现,且其计算在执行顺序上总是先于该表达式,并且在两次计算之间该表达式的操作数保持不变。
- 局部 CSE :仅在单个基本块的有限范围内操作。
- 全局 CSE :作用于整个函数,但控制流图中的侧入口常常会消除 CSE 的机会,因为公共子表达式可能在侧入口路径中被覆盖。
- 基于超块的 CSE(SB - CSE) :能够超越局部和全局 CSE,因为它在多个基本块上操作,并
超级会员免费看
订阅专栏 解锁全文
5

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



