Instruction Splitting for Efficient Code Compression

The size of embedded software is rising at a rapid pace. It is often challenging and time consuming to fit an amount of required software functionality within a given hardware resource budget. Code compression is a means to alleviate the problem. In this paper we introduce a novel and efficient hardware-supported approach. Our scheme reduces the size of the generated decoding table by splitting instructions into portions of varying size (called patterns) before Huffman coding compression is applied. It improves the final compression ratio (including all overhead that incurs) by more than 20% compared to known schemes based on Huffman coding. We achieve allover compression ratios as low as 44%. Thereby, our scheme is orthogonal to approaches that take particularities of a certain instruction set architectures into account. We have conducted evaluations using a representative set of applications and have applied it to two major embedded processors, namely ARM and MIPS.

[1]  Jörg Henkel,et al.  Using Lin-Kernighan algorithm for look-up table compression to improve code density , 2006, GLSVLSI '06.

[2]  Luca Benini,et al.  Cached-code compression for energy minimization in embedded processors , 2001, ISLPED '01.

[3]  Trevor N. Mudge,et al.  Reducing code size with run-time decompression , 2000, Proceedings Sixth International Symposium on High-Performance Computer Architecture. HPCA-6 (Cat. No.PR00550).

[4]  Trevor Mudge,et al.  MiBench: A free, commercially representative embedded benchmark suite , 2001 .

[5]  Trevor N. Mudge,et al.  Improving code density using compression techniques , 1997, Proceedings of 30th Annual International Symposium on Microarchitecture.

[6]  Paolo Ferragina,et al.  Text Compression , 2009, Encyclopedia of Database Systems.

[7]  M. Broy Automotive software and systems engineering , 2005, Proceedings. Second ACM and IEEE International Conference on Formal Methods and Models for Co-Design, 2005. MEMOCODE '05..

[8]  Takao Onoye,et al.  An object code compression approach to embedded processors , 1997, Proceedings of 1997 International Symposium on Low Power Electronics and Design.

[9]  Jörg Henkel,et al.  Efficient Code Density Through Look-up Table Compression , 2007, 2007 Design, Automation & Test in Europe Conference & Exhibition.

[10]  P. P. Chakrabarti,et al.  Dictionary based code compression for variable length instruction encodings , 2005, 18th International Conference on VLSI Design held jointly with 4th International Conference on Embedded Systems Design.

[11]  Andrew Wolfe,et al.  Executing compressed programs on an embedded RISC architecture , 1992, MICRO 1992.

[12]  Kevin D. Kissell MIPS16: High-density MIPS for the Embedded Market1 , 1997 .

[13]  Shmuel Tomi Klein,et al.  Space- and Time-Efficient Decoding with Canonical Huffman Trees , 1997, CPM.

[14]  Yakov Nekrich Decoding of canonical Huffman codes with look-up tables , 2000, Proceedings DCC 2000. Data Compression Conference.

[15]  Jörg Henkel,et al.  A unified architecture for adaptive compression of data and code on embedded systems , 2005, 18th International Conference on VLSI Design held jointly with 4th International Conference on Embedded Systems Design.

[16]  Amir Roth,et al.  DISE: a programmable macro engine for customizing applications , 2003, ISCA '03.

[17]  Wayne H. Wolf,et al.  SAMC: a code compression algorithm for embedded processors , 1999, IEEE Trans. Comput. Aided Des. Integr. Circuits Syst..

[18]  Jörg Henkel,et al.  Design of an one-cycle decompression hardware for performance increase in embedded systems , 2002, DAC '02.