Inter-Boundary Scheduling of Stack Operands: A preliminary Study

Chris Bailey · 2000

Stack-processors, which abandon register files and instead work directly on the stack content have recently enjoyed a resurgence of interest in conjunction with higher level languages. However, the way in which local variables are handled by typically stack-targeted compilers leaves much room for improvement. These issues are not restricted to stack architectures using a C-compiler, although this is the focus here. The elimination of troublesome local variable references has been investigated in several studies [Koop92], [Maierhofer97], with some interesting trade-offs for stack instruction set design noted [Bailey97]. These studies have so far been limited to optimisation of memory dependencies only within each basic-block of object code. Further development would have benefits in such areas as real-time systems where caching may be restricted, and memory penalties increased, whilst any move toward instructionlevel parallelism in a stack-based environment would be severely handicapped if these issues are not first alleviated. This paper presents a new technique for optimisation of local-variable references, “inter-boundary scheduling”, which extends the scope of optimisation beyond the basicblock boundary and allows local variable content to remain on the computation stack even when control-flow operations are encountered. Results presented suggest that the method can eliminate 10 to 20% of local variable references remaining after the existing intra-block techniques are applied. Data presented is based upon compilation of C source to a stack-based target architecture, however the method is open to application in wider areas including FORTH.

Read the paper · More papers on PaperTik