Abstract

Instruction scheduling algorithms are used in compilers to reduce run-time delays for the compiled code by the reordering or transformation of program statements, usually at the intermediate language or assembly code level. Considerable research has been carried out on scheduling code within the scope of basic blocks, i.e., straight line sections of code, and very effective basic block schedulers are now included in most modern compilers and especially for pipeline processors. In previous work Golumbic and Rainis: IBM J. Res. Dev., Vol. 34, pp.93–97, 1990, we presented code replication techniques for scheduling beyond the scope of basic blocks that provide reasonable improvements of running time of the compiled code, but which still leaves room for further improvement. In this article we present a new method for scheduling beyond basic blocks called SHACOOF. This new technique takes advantage of a conventional, high quality basic block scheduler by first suppressing selected subsequences of instructions and then scheduling the modified sequence of instructions using the basic block scheduler. A candidate subsequence for suppression can be found by identifying a region of a program control flow graph, called an S-region, which has a unique entry and a unique exit and meets predetermined criteria. This enables scheduling of a sequence of instructions beyond basic block boundaries, with only minimal changes to an existing compiler, by identifying beneficial opportunities to cover delays that would otherwise have been beyond its scope.

Highlights

  • Instruction scheduling is a process of rearranging or transforming program statements before execution by a processor in order to reduce possible run-time delays between compiled instructions

  • Instruction scheduling can be advantageous when compiling for pipelined machine architectures. which allow increased throughput by overlapping instruction execution

  • Previous work on the implementation of instruction scheduling concentrated on scheduling within basic blocks [2-7J

Read more

Summary

INTRODUCTION

Instruction scheduling is a process of rearranging or transforming program statements before execution by a processor in order to reduce possible run-time delays between compiled instructions. We present a technique called SHACOOF for ScHeduling Across COntrOl Flow, which extends capabilities well beyond basic blocks. This technique enables reductions in runtime delays, due to branches and loops. Making it transparent to the basic block scheduler These subsequences correspond to regions of the program How graph having a unique entry, a unique exit, and satisfying certain minimality conditions. By suppressing the S-region, regarding it as a pseudo instruction, and preserving data dependency, instructions can be moved over it using the current basic block scheduler. S-regions were introduced in graph theory [10], where they were called hammocks, but have remained unstudied with the exception of one other compiler application [11]

THE USE OF S-REGIONS IN SHACOOF
All instructions in all remaining blocks of S
GOLUMBIC AND RAINISH
SUMMARY
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call