编译器优化序列探索与多目标优化研究
1. 传统编译器优化结构
传统编译器在初始状态下,会以固定顺序执行每个中间表示(IR)类的优化。其优化器结构类似于一系列连续的 if-then 语句,示例代码如下:
if( enabled( optimization_A ) )
perform( optimization_A );
if( enabled( optimization_B ) )
perform( optimization_B );
if( enabled( optimization_C ) )
perform( optimization_C );
...
这种结构自上而下遍历,启用的优化总是以相同顺序执行,且同一优化不能多次执行。为避免固定阶段排序,WCC 进行了扩展,能内部保留传递给编译器的任意序列顺序,即优化按调用编译器的顺序执行,同时保留可用 IR 类的处理顺序。
2. 可用的编译器优化
WCC 有标准 ACET 优化和 WCET 感知优化,本次研究专注于 ACET 优化,原因如下:
- 探索标准编译器优化对程序最坏情况性能的影响,结果更具通用性。
- WCET 感知优化耗时,需多次进行静态 WCET 估计,不适合迭代编译。
具体优化分类如下:
- 高级 IR 源代码优化(HIR) :WCC 提供 21 个标准源代码优化,部分为参数化优化。考虑不同参数,共区分出 30 个源代码优化,包括 18 个非参数化
超级会员免费看
订阅专栏 解锁全文
10万+

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



