ABSTRACT
A banked register file is a register file partitioned into banks. A register in a banked register file is addressed with the register number in conjunction with the active bank number. A banked register file may be employed to reduce the number of bits for register operands in the instruction encoding at the cost of bank changes and inter-bank data transfers. Although a banked register file is introduced to provide sufficient registers and reduce memory traffic, it may on the other hand inflate code by unwanted bank hanges and excessive inter-bank data movements. In this context, code quality heavily depends on the register allocator that decides the location of each variable. This paper addresses a heuristic approach to register allocation for exploiting two register banks. It performs global register allocation with the primary bank registers, while reducing the register pressure by doing local register allocation with the secondary bank registers. Experimental results show that the proposed register allocator eliminates a significant amount of memory traffic while achieving smaller code size compared to an allocator that utilizes the primary bank only.
- 1.Intel Corporation. MCS51 Microcontroller Family User's Manual. Intel Corporation, Feb 1994.]]Google Scholar
- 2.G.J. Chaitin, M.A. Auslander, A.K. Chandra, J. Cocke, M.E. Hopkins, and P.W. Markstein. Register Allocation via Coloring. Computer Languages, 6:47-57, 1981.]]Google ScholarDigital Library
- 3.G.J. Chaitin. Register Allocation and Spilling via Graph Coloring. SIGPLAN Symposium on Compiler Construction, pages 98-105, June 1982.]] Google ScholarDigital Library
- 4.P. Briggs, K.D. Cooper, and L. Torczon. Improvements to Graph Coloring Register Allocation. Transactions on Programming Languages and Systems, 16(3):428-455, May 1994.]] Google ScholarDigital Library
- 5.R. Morgan. Building an Optimizing Compiler. Digital Press, 1998.]] Google ScholarDigital Library
- 6.Alan Tucker. Coloring a Family of Circular Arcs. SIAM Journal on Applied Mathematics, 29(3):493-502, November 1975.]]Google ScholarCross Ref
- 7.B.-S. Yang, S.-M. Moon, S. Park, J. Lee, S. Lee, J. Park, Y.C. Chung, S. Kim, K. Ebcioglu, and E. Altman. LaTTe: A Java VM Just-in-Time Compiler with Fast and Efficient Register Allocation. In Proceedings of the 1999 International Conference on Parallel Architectures and Compilation Techniques (PACT '99), pages 128-138, Newport Beach, California, October 12-16, 1999. IEEE Computer Society Press.]] Google ScholarDigital Library
- 8.C.W. Fraser and D.R. Hanson. Simple Register Spilling in a Retargetable Compiler. Software - Practice and Experience, 22(1):85-99, January 1992.]] Google ScholarDigital Library
- 9.L.J. Hendren, G.R. Gao, E.R. Altman, and C. Mukerji. A Register Allocation Framework Based on Hierarchical Cyclic Interval Graphs. In Compiler Construction, 4th International Conference on Compiler Construction, volume 641 of Lecture Notes in Computer Science, pages 176-191, Paderborn, Germany, 5-7 October 1992. Springer.]] Google ScholarDigital Library
- 10.J. Park and S.-M. Moon. Optimistic Register Coalescing. In Proceedings of the 1998 International Conference onParallel Architectures and Compilation Techniques (PACT '98), pages 196-204, Paris, France, October 12-18, 1998. IEEE Computer Society Press.]] Google ScholarDigital Library
- 11.SAMSUNG Electronics Corp. CalmRISC8 Specification. SAMSUNG Electronics Corp., 1999.]]Google Scholar
- 12.D.-H. Kim. Advanced Compiler Optimization for CalmRISC8 Low-End Embedded Processor. Lecture Notes in Computer Science, 1781:173-188, March 2000.]] Google ScholarDigital Library
- 13.C.W. Fraser and D.R. Hanson. A Retargetable C Compiler: Design and Implemtation. Addison-Wesley Pub Co., Jan 1995.]] Google ScholarDigital Library
- 14.M.Z. Zastre. Compacting Object Code via Parameterized Procedural Abstraction. Master's thesis, Simon Fraser University, 1993.]]Google Scholar
Index Terms
- Register Allocation for Banked Register File
Recommendations
Multiple-banked register file architectures
ISCA '00: Proceedings of the 27th annual international symposium on Computer architectureThe register file access time is one of the critical delays in current superscalar processors. Its impact on processor performance is likely to increase in future processor generations, as they are expected to increase the issue width (which implies ...
Register Allocation for Banked Register File
A banked register file is a register file partitioned into banks. A register in a banked register file is addressed with the register number in conjunction with the active bank number. A banked register file may be employed to reduce the number of bits ...
Register Allocation for Banked Register File
LCTES '01: Proceedings of the ACM SIGPLAN workshop on Languages, compilers and tools for embedded systemsA banked register file is a register file partitioned into banks. A register in a banked register file is addressed with the register number in conjunction with the active bank number. A banked register file may be employed to reduce the number of bits ...
Comments