Browse > Article

Profile Guided Selection of ARM and Thumb Instructions at Function Level  

Soh Changho (한국과학기술원 전산학과)
Han Taisook (한국과학기술원 전산학과)
Abstract
In the embedded system domain, both memory requirement and energy consumption are great concerns. To save memory and energy, the 32 bit ARM processor supports the 16 bit Thumb instruction set. For a given program, the Thumb code is typically smaller than the ARM code. However, the limitations of the Thumb instruction set can often lead to generation of poorer quality code. To generate codes with smaller size but a little slower execution speed, Krishnaswarmy suggests a profiling guided selection algorithm at module level for generating mixed ARM and Thumb codes for application programs. The resulting codes of the algorithm give significant code size reductions with a little loss in performance. When the instruction set is selected at module level, some functions, which should be compiled in Thumb mode to reduce code size, are compiled to ARM code. It means we have additional code size reduction chance. In this paper, we propose a profile guided selection algorithm at function level for generating mixed ARM and Thumb codes for application programs so that the resulting codes give additional code size reductions without loss in performance compared to the module level algorithm. We can reduce 2.7% code size additionally with no performance penalty
Keywords
profiling; optimization; code size; cycle count; embedded system;
Citations & Related Records
연도 인용수 순위
  • Reference
1 C. Lee, M. Potkonjak, and W Mangione - smith. MediaBench: A Tool for Evaluating and Synthesizing Multimedia and Communications Systems. In Proceedings of the sth Annual IEEE/ACM International Symposium on Microarchitecture, pages 330-335, Nov. 1997   DOI
2 ActiveState Perl Homepage, http://www.activestate.com/
3 P. Marwedel, S. Steinke and L. Wehmeyer, 'Compilation techniques for energy-, code-size-, and run-time-efficient embedded software,' Int. Workshop on Advanced Compiler Techniques for High Performance and Embedded Processors, Bucharest, 2001
4 ARM, 'ARM Software Development Toolkit Version 2.50 User Guide,' ARM DUI 0040D
5 L. Goudge and S. Segars, 'Thumb: Reducing the cost of 32-bit rise performance in portable and consumer applications,' In Precedings of COMPCON 96, 1996
6 A. Halambi, A. Shrivastava, P. Biswas, N. Dutt, and A. Nicolau, 'An efficient compiler technique for code size reduction using reduced bi-width ISAs,' In Proc. of Design Automation and Test in Europe(DATE), 2002
7 A. Krishnaswarmy and R. Gupta, 'Profile Guided Selection of ARM and Thumb Instructions,' CM SIGPLAN Joint Conference on Languages Compilers and Tools for Embedded Systems & Software and Compilers for Embedded Systems (LCTES/SCOPES), Berlin, Germany, June 2002   DOI