Effects of program compression Jari Heikkinen * , Jarmo Takala Institute of Digital and Computer Systems, Tampere University of Technology, P.O. Box 553, FIN-33101 Tampere, Finland Received 29 December 2006; accepted 9 January 2007 Available online 19 January 2007 Abstract The size of the program code has become a critical design constraint in embedded systems, especially in handheld, bat- tery operated devices. Large program codes require large memories, which increase the size and cost of the chip. In addi- tion, the power consumption is increased due to higher memory I/O bandwidth. Program compression is one of the most often used methods to reduce the size of the program code. In this paper, two compression approaches, dictionary-based compression and instruction template-based compression, were evaluated on a customizable processor architecture with parallel resources. The effects on area and power consumption were measured. Dictionary-based compression reduced the area at best by 77% and power consumption by 73%. Instruction template-based compression resulted in increase in both area and power consumption and hence turned out to be impractical. Ó 2007 Elsevier B.V. All rights reserved. Keywords: TTA; VLIW; Embedded computing; Dictionary compression; Instruction template 1. Introduction The advances of semiconductor technologies have allowed to pack more and more functionality on a single chip. Moreover, the new design method- ologies have allowed to use the available functional- ity more effectively. During the past two decades this has fueled an explosive growth, especially in the embedded systems market due to the emergence of new application areas. Embedded systems are nowadays widely used in many consumer products, such as automobiles, home automation, and porta- ble electronics. Portable embedded systems, like cel- lular phones, personal digital assistants (PDA), game consoles, and media players, are often limited by constraints on size, weight, battery life, and cost. Therefore, reducing the chip area and its power con- sumption has become crucial in designing this kind of embedded systems. The increased complexity of the embedded appli- cations has lead to an increase in the size of the pro- gram code. Furthermore, the transfer from assembly language to high-level languages (HLLs), such as C and C++, to lower the application devel- opment and maintenance costs has further increased the code size, as the compiler cannot achieve the quality of hand-written and hand-optimized assem- bly code. Moreover, compilers have traditionally favored performance at the cost of the code size. The increased complexity of embedded systems 1383-7621/$ - see front matter Ó 2007 Elsevier B.V. All rights reserved. doi:10.1016/j.sysarc.2007.01.001 * Corresponding author. Tel.: +358 504873381. E-mail addresses: jari.heikkinen@tut.fi (J. Heikkinen), jarmo.takala@tut.fi (J. Takala). Journal of Systems Architecture 53 (2007) 679–688 www.elsevier.com/locate/sysarc