Register pressure problem has been a known problem for compiler because of the mismatch between the infinite number of pseudo registers and the finite number of hard registers. Too heavy register pressure may results in register spilling and then leads to performance degradation. There are a lot of optimizations, especially loop optimizations suffer from register spilling in compiler. In order to fight register pressure and therefore improve the effectiveness of compiler, this research takes the register pressure into account to improve loop unrolling optimization during the transformation process. In addition, a register pressure aware transformation is able to reduce the performance overhead of some fine-grained randomization transformations which can be used to defend against ROP attacks. Experiments showed a peak improvement of about 3.6% and an average improvement of about 1% for SPEC CPU 2006 benchmarks and a peak improvement of about 3% and an average improvement of about 1% for the LINPACK benchmark.
展开▼
机译:寄存器压力问题已成为编译器的已知问题,因为无限数量的伪寄存器和有限数量的硬寄存器之间不匹配。太大的套准压力可能导致套准溢出,进而导致性能下降。有很多优化,尤其是循环优化会遭受编译器中寄存器溢出的困扰。为了克服寄存器压力,从而提高编译器的有效性,本研究考虑了寄存器压力,以改善转换过程中的循环展开优化。此外,寄存器压力感知转换能够减少一些细粒度的随机转换的性能开销,这些转换可用于防御ROP攻击。实验表明,SPEC CPU 2006基准测试的峰值改进约3.6%,平均改进约1%,LINPACK基准测试的峰值改进约3%,平均改进约1%。
展开▼