2000 · 110 citations · 16 references
ComputingComputer EngineeringComputer ScienceCompilersOptimizationSchedulingCompiler ConstructionControl-flow AnalysisCpu SchedulingInstruction SchedulingInteger ProgrammingScheduling OptimizationCompile-time OptimizationCompiler DesignDependency Graph AnalysisDependency Graph ConstructionInstruction Scheduling AlgorithmsInteger Programming ConstraintsOptimal Instruction SchedulingScheduling Problems
This paper presents a new approach to local instruction scheduling based on integer programming that produces optimal instruction schedules in a reasonable time, even for very large basic blocks. The new approach first uses a set of graph transformations to simplify the data-dependency graph while preserving the optimality of the final schedule. The simplified graph results in a simplified integer program which can be solved much faster. A new integer-programming formulation is then applied to the simplified graph. Various techniques are used to simplify the formulation, resulting in fewer integer-program variables, fewer integer-program constraints and fewer terms in some of the remaining constraints, thus reducing integer-program solution time. The new formulation also uses certain adaptively added constraints (cuts) to reduce solution time. The proposed optimal instruction scheduler is built within the Gnu Compiler Collection (GCC) and is evaluated experimentally using the SPEC95 floating point benchmarks. Although optimal scheduling for the target processor is considered intractable, all of the benchmarks' basic blocks are optimally scheduled, including blocks with up to 1000 instructions, while total compile time increases by only 14%.
16
V. J. Rayward‐Smith, Thomas H. Cormen, Charles E. Leiserson et al. · Journal of the Operational Research Society · 1991 · 17K citations
1990 · 3.1K citations