利用不变路径加速优化
在代码优化过程中,如何有效减少最坏情况执行时间(WCET)是一个重要的问题。本文将介绍一种基于不变路径的优化方法,以及相关的WCET感知循环去开关优化技术,并通过实验验证其有效性。
1. 不变路径相关概念
- 良性分支与不变路径 :在很多应用中,像IF - THEN - ELSE结构产生的分支以及if语句产生的分支,被称为良性分支,因为它们不太容易发生路径切换。所以,大部分代码可以被声明为不变路径。
- 静态不可评估条件的IF - THEN - ELSE结构 :当if - else语句的条件不能被静态评估时,WCET分析会保守地假设互斥路径中较长的路径是最坏情况执行路径(WCEP),并且在所有执行上下文中都会遍历该路径。这种情况下可能会发生WCEP切换,这类分支语句不会被声明为不变路径。当对代码进行转换优化时,可能会导致WCEP发生切换,因此需要进行WCET分析来验证路径信息。
2. 不变路径的构建
不变路径的构建是基于深度优先搜索的递归过程。具体步骤如下:
1. 从程序控制流图(CFG)的入口点开始,通常是主函数的第一条语句或指令。
2. 遍历图中的所有基本块:
- 对于不在任何分支上且不依赖于任何分支语句的直线代码片段,将其声明为不变路径。
- 如果检测到分支,判断其是否可以被分类为不变路径。如果一个分支被声明为不变路径πinv,其互斥路径上的所有基本块也会被声明为πinv,直到遇到嵌套分支需要重新分类。
- 如果在被声明为不变路径的WCEP上遇到函数调用,对其函
超级会员免费看
订阅专栏 解锁全文
964

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



