Static Program Partitioning for Embedded Processors

Modern processors have a small on-chip local memory for instructions. Usually it is in the form of a cache but in some cases it is an addressable memory. In the latter, the user is required to partition and arrange the code such that appropriate fragments are loaded into the memory at appropriate times. We explore automatic partitioning by defining an optimality criterion and provide a lazy algorithm which tries to combine procedures which should be loaded together. The procedures which do not fit into local memory are further partitioned. The lazy nature of the algorithm facilitates using multiple heuristics to identify good partitions. Our partitioner can be used to provide the much needed relief to a programmer and could be an important tool in the design space exploration of embedded processor architectures to study the possibility of replacing expensive cache memory by relatively inexpensive and larger RAM.

[1]  Andrew C. Myers,et al.  Secure program partitioning , 2002, TOCS.

[2]  Eric Rotenberg,et al.  A large, fast instruction window for tolerating cache misses , 2002, ISCA.

[3]  Frank Vahid Partitioning sequential programs for CAD using a three-step approach , 2002, TODE.

[4]  Nikil D. Dutt,et al.  On-chip vs. off-chip memory: the data partitioning problem in embedded processor-based systems , 2000, TODE.

[5]  Wei Zhang,et al.  Compiler-directed cache polymorphism , 2002, LCTES/SCOPES '02.

[6]  Jens Palsberg,et al.  Compiling with code-size constraints , 2002, LCTES/SCOPES '02.

[7]  Tao Zhang,et al.  Leakage-proof program partitioning , 2002, CASES '02.

[8]  Mahmut T. Kandemir,et al.  Dynamic management of scratch-pad memory space , 2001, Proceedings of the 38th Design Automation Conference (IEEE Cat. No.01CH37232).

[9]  Manoj Franklin,et al.  A general compiler framework for speculative multithreading , 2002, SPAA '02.

[10]  Mohamed Shalan,et al.  A dynamic memory management unit for embedded real-time system-on-a-chip , 2000, CASES '00.

[11]  Santosh Pande,et al.  An Efficient Data Partitioning Method for Limited Memory Embedded Systems , 1998, LCTES.

[12]  David B. Whalley,et al.  Improving performance by branch reordering , 1998, PLDI '98.

[13]  Peter Marwedel,et al.  Assigning program and data objects to scratchpad for energy reduction , 2002, Proceedings 2002 Design, Automation and Test in Europe Conference and Exhibition.

[14]  Donald Yeung,et al.  Design and evaluation of compiler algorithms for pre-execution , 2002, ASPLOS X.

[15]  Andrew B. Kahng,et al.  Recent directions in netlist partitioning: a survey , 1995, Integr..

[16]  Rajeev Barua,et al.  An optimal memory allocation scheme for scratch-pad-based embedded systems , 2002, TECS.

[17]  Vipin Kumar,et al.  Multilevel Algorithms for Multi-Constraint Graph Partitioning , 1998, Proceedings of the IEEE/ACM SC98 Conference.

[18]  Hyuk-Jae Lee,et al.  Iterative procedural abstraction for code size reduction , 2002, CASES '02.