Uma Arquitetura para Compressão de Código em Processadores Embarcados
Resumo
O uso eficiente de sistemas móveis e embarcados depende fortemente de estratégias adequadas para redução do consumo de energia. Esses sistemas são caracterizados também por uma grande restrição de recursos, entre eles a quantidade de memória disponível para as aplicações. Este trabalho apresenta um esquema de compressão de código para processadores embarcados compatíveis com o processador ARM, que visa apresentar soluções para essas duas demandas específicas dos sistemas móveis e embarcados. A compressão é feita diretamente no código objeto, após a compilação do código-fonte pelas ferramentas tradicionais, e usa um algoritmo de compressão por freqüência de opcodes: o código de Huffman. Para a execução do código comprimido é necessário que haja um hardware de expansão das instruções associado ao núcleo do processador. O hardware de expansão é composto por estruturas de armazenamento e controle projetados para a realização eficiente das operações de expansão. As medidas de desempenho de compressão e os efeitos da expansão foram feitos a partir da simulação em uma versão modificada do SimpleScalar e com uso da suíte de avaliação MiBench. As simulações realizadas mostram que a taxa média de compressão foi de 76% para o conjunto de benchmarks estudados e com uma perda relativamente pequena no desempenho, quando comparado com a execução das aplicações na sua versão sem compressão.Referências
M. Benes, S. M. Nowick, and A. Wolfe. A fast asynchronous huffman decoder for compressed-code embedded processors. In ASYNC ’98: Proceedings of the 4th International Symposium on Advanced Research in Asynchronous Circuits and Systems, page 0043,Washington, DC, USA, 1998. IEEE Computer Society.
M. Benes, A.Wolfe, and S. M. Nowick. A high-speed asynchronous decompression circuit for embedded processors. In ARVLSI ’97: Proceedings of the 17th Conference on Advanced Research in VLSI (ARVLSI ’97), page 219, Washington, DC, USA, 1997. IEEE Computer Society.
D. Burger and T. M. Austin. The SimpleScalar tool set, version 2.0. SIGARCH Comput. Archit. News, 25(3):13–25, 1997.
A. B. R. da Silva. Um Esquema de Compressão de Código para Processadores Embutidos. Master’s thesis, IM-NCEUFRJ, 08 2006.
M. R. Guthaus, J. S. Ringenberg, D. Ernst, T. M. Austin, T. Mudge, and R. B. Brown. MiBench: A free, commercially representative embedded benchmark suite. IEEE 4th Annual Workshop on Workload Characterization, Dezembro 2001.
D. A. Huffman. A method for the construction of minimum redundancy codes. Proceedings of the IERE, 40:1098–1101, 1952.
IBM. CodePack: PowerPC Code Compression Utility User’s Manual. Version 4.1. International Business Machines (IBM) Corporation, Março 2001.
Intel. Intel StrongARM SA-1100 Microprocessor Developer’s Manual, Outubro 2001.
H. Lekatsas, J. Henkel, and W. Wolf. Code compression for low power embedded system design. In DAC ’00: Proceedings of the 37th conference on Design automation, pages 294–299, New York, NY, USA, 2000. ACM Press.
H. Lekatsas and W. Wolf. Code compression for embedded systems. In DAC ’98: Proceedings of the 35th annual conference on Design automation, pages 516–521, New York, NY, USA, 1998. ACM Press.
M. Mamidipaka and N. Dutt. ecacti: An enhanced power estimation model for on-chip caches. Technical report, University of California, 2004.
A. Orpaz and S. Weiss. A study of CodePack: optimizing embedded code space. In CODES ’02: Proceedings of the tenth international symposium on Hardware/software codesign, pages 103–108, New York, NY, USA, 2002. ACM Press.
Árpád BeszÉdes, R. Ferenc, T. Gyimóthy, A. Dolenc, and K. Karsisto. Survey of code-size reduction methods. ACM Comput. Surv., 35(3):223–267, 2003.
A. Wolfe and A. Chanin. Executing compressed programs on an embedded RISC architecture. In MICRO 25: Proceedings of the 25th annual international symposium on Microarchitecture, pages 81–91, Los Alamitos, CA, USA, 1992. IEEE Computer Society Press.
X. H. Xu, C. T. Clarke, and S. R. Jones. High performance code compression architecture for the embedded ARM/THUMB processor. In CF ’04: Proceedings of the 1st conference on Computing frontiers, pages 451–456, New York, NY, USA, 2004. ACM Press.
M. Benes, A.Wolfe, and S. M. Nowick. A high-speed asynchronous decompression circuit for embedded processors. In ARVLSI ’97: Proceedings of the 17th Conference on Advanced Research in VLSI (ARVLSI ’97), page 219, Washington, DC, USA, 1997. IEEE Computer Society.
D. Burger and T. M. Austin. The SimpleScalar tool set, version 2.0. SIGARCH Comput. Archit. News, 25(3):13–25, 1997.
A. B. R. da Silva. Um Esquema de Compressão de Código para Processadores Embutidos. Master’s thesis, IM-NCEUFRJ, 08 2006.
M. R. Guthaus, J. S. Ringenberg, D. Ernst, T. M. Austin, T. Mudge, and R. B. Brown. MiBench: A free, commercially representative embedded benchmark suite. IEEE 4th Annual Workshop on Workload Characterization, Dezembro 2001.
D. A. Huffman. A method for the construction of minimum redundancy codes. Proceedings of the IERE, 40:1098–1101, 1952.
IBM. CodePack: PowerPC Code Compression Utility User’s Manual. Version 4.1. International Business Machines (IBM) Corporation, Março 2001.
Intel. Intel StrongARM SA-1100 Microprocessor Developer’s Manual, Outubro 2001.
H. Lekatsas, J. Henkel, and W. Wolf. Code compression for low power embedded system design. In DAC ’00: Proceedings of the 37th conference on Design automation, pages 294–299, New York, NY, USA, 2000. ACM Press.
H. Lekatsas and W. Wolf. Code compression for embedded systems. In DAC ’98: Proceedings of the 35th annual conference on Design automation, pages 516–521, New York, NY, USA, 1998. ACM Press.
M. Mamidipaka and N. Dutt. ecacti: An enhanced power estimation model for on-chip caches. Technical report, University of California, 2004.
A. Orpaz and S. Weiss. A study of CodePack: optimizing embedded code space. In CODES ’02: Proceedings of the tenth international symposium on Hardware/software codesign, pages 103–108, New York, NY, USA, 2002. ACM Press.
Árpád BeszÉdes, R. Ferenc, T. Gyimóthy, A. Dolenc, and K. Karsisto. Survey of code-size reduction methods. ACM Comput. Surv., 35(3):223–267, 2003.
A. Wolfe and A. Chanin. Executing compressed programs on an embedded RISC architecture. In MICRO 25: Proceedings of the 25th annual international symposium on Microarchitecture, pages 81–91, Los Alamitos, CA, USA, 1992. IEEE Computer Society Press.
X. H. Xu, C. T. Clarke, and S. R. Jones. High performance code compression architecture for the embedded ARM/THUMB processor. In CF ’04: Proceedings of the 1st conference on Computing frontiers, pages 451–456, New York, NY, USA, 2004. ACM Press.
Publicado
29/10/2008
Como Citar
SILVA, André B. R.; SILVA, Gabriel P..
Uma Arquitetura para Compressão de Código em Processadores Embarcados. In: SIMPÓSIO EM SISTEMAS COMPUTACIONAIS DE ALTO DESEMPENHO (SSCAD), 9. , 2008, Campo Grande.
Anais [...].
Porto Alegre: Sociedade Brasileira de Computação,
2008
.
p. 131-138.
DOI: https://doi.org/10.5753/wscad.2008.17677.