{'fraction_non_alphanumeric': 0.017734553775743706, 'fraction_numerical': 0.006864988558352402, 'mean_word_length': 5.650190114068441, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Optimal global instruction scheduling using enumeration

Instruction scheduling is one of the most important compiler optimizations. An instruction scheduler reorders instructions to improve performance by minimizing pipeline stalls. Traditional approaches to instruction scheduling were based on heuristics. Over the past decade, however, a number of researchers have proposed optimal solutions to instruction scheduling. This dissertation presents the first set of algorithms to optimally schedule two global instruction scheduling regions: traces and superblocks. A global scheduling region is a collection of basic blocks that a compiler schedules simultaneously to exploit instruction-level parallelism (ILP) across basic block boundaries. Several heuristic techniques have been proposed for scheduling traces and superblocks, but the precision of these heuristics has not been studied relative to optimality. Optimality in this dissertation is defined as minimizing the expected schedule length, which is the weighted sum of schedule lengths across all code paths in the scheduling region. Optimal instruction scheduling is known to be NP-hard. So, the optimal algorithms proposed in this work use branch-and-bound enumeration with a number of novel pruning techniques to efficiently explore the entire solution space within reasonable time. Experimental evaluation of the proposed algorithms shows that, within a per-problem time limit of one second, 93% of the hard traces and 99% of the hard superblocks in the SPEC int2000 benchmarks are scheduled optimally. 87% of the optimally scheduled hard traces and 83% of the optimally scheduled hard superblocks in those benchmarks have improved schedules compared to typical heuristic schedules.