A Compiler Framework for Recovery Code Generation in General Speculative Optimizations
Proceedings of the 13th International Conference on Parallel Architectures and Compilation Techniques
Recovery code generation for general speculative optimizations
ACM Transactions on Architecture and Code Optimization (TACO)
Runtime dependency analysis for loop pipelining in high-level synthesis
Proceedings of the 50th Annual Design Automation Conference
Hi-index | 0.00 |
Modulo scheduling is an effective instruction scheduling technique for exploiting ILP in modern microprocessors with wide machine resources. As with any instruction scheduling technique, its effectiveness is constrained by both the source program dependencies as deduced by the compiler and the resources available in the target machine. Data speculation is a technique for eliminating memory dependencies in the instruction dependence graph with demonstrated benefits in acyclic scheduling. Therefore, by applying data speculation in modulo scheduled loops we are able to achieve higher degrees of instruction level parallelism. This paper addresses a number of key issues in applying data speculation to modulo scheduling: effectively identifying the additional instructions required to recover from mis-speculation, ensuring full recoverability of instructions speculated across multiple stages and possibly executed speculatively multiple times on-the-fly, and coloring rotating registers for speculated instructions and instructions in recovery blocks. We implemented the framework proposed in this paper and demonstrated its effectiveness through experimental results.