Exploração do Espaço de Projeto da DCT 2-D de um Compressor de Imagens JPEG Roger Endrigo Carvalho Porto, Luciano Volcan Agostini GACI - Grupo de Arquiteturas e Circuitos Integrados Departamento de Matemática, Estatística e Computação Universidade Federal de Pelotas (UFPel) Caixa Postal 354 96.010-900 Pelotas RS Brasil {rogerecp,agostini}@ufpel.edu.br Abstract. This paper presents an architectural exploration on the JPEG compressor proposed and implemented by Agostini [Agostini 2002]. This exploration took as base the substitution of the operators used in the 2-D DCT of the compressor with main focus in the carry lookahead, hierarchical carry lookahead and carry select architectures [Hwang 1979, Weste and Eshraghian 1995]. The new operators were described in VHDL and inserted in the 2-D DCT calculation architecture for synthesis directed for an Altera FPGA [Altera Corporation 2002]. With this space project exploration, the higher performance obtained for the 2-D DCT was 23% higher than the original, using 11% more logic cells. Resumo. Este artigo apresenta uma exploração arquitetural sobre o compressor JPEG proposto e implementado por Agostini [Agostini 2002]. Esta exploração tomou como base a substituição dos operadores usados na DCT 2-D do compressor com foco principal nas arquiteturas carry lookahead, carry lookahead hierárquico e carry select [Hwang 1979, Weste e Eshraghian 1995]. Os novos operadores foram descritos em VHDL e inseridos na arquitetura de cálculo da DCT 2-D para síntese direcionada para um FPGA da Altera [Altera Corporation 2002]. Com esta exploração arquitetural, o maior desempenho obtido para a DCT 2-D foi de 23% mais alto que o original, usando 11% a mais em células lógicas. 1. Introdução O padrão JPEG de compressão de imagens [The International Telegraph and Telephone Consultative Committee 1992] foi desenvolvido pelo Joint Photographic Expert Group [JPEG e JBIG Committees 2001]. No contexto dessa compressão, a informação é transformada para o domínio das freqüências pela transformada discreta do co-seno em duas dimensões (DCT 2-D). A partir daí, as freqüências mais elevadas (que geralmente contribuem menos com a informação da imagem) são atenuadas ou até mesmo eliminadas pela quantização que é o processo seguinte à DCT 2-D na compressão JPEG. A compressão JPEG de imagens em tons de cinza, então, pode ser dividida em três operações principais: DCT 2-D, quantização e codificação de entropia, como pode ser observado na fig. 1.
Figura 1. Operações da compressão JPEG de imagens em tons de cinza No compressor JPEG, a DCT 2-D é o bloco mais crítico em se tratando de desempenho, devido a grande complexidade dos cálculos realizados. No nível arquitetural este ponto crítico é responsabilidade das operações de soma sobre entradas com número elevado de bits e do conseqüente atraso gerado pela propagação do carry out na arquitetura ripple carry utilizada nos somadores originais [Agostini 2002]. Então, o objetivo principal deste trabalho foi maximizar o desempenho do compressor de imagem JPEG através da substituição das arquiteturas utilizadas nos somadores, com foco principal nas arquiteturas carry look ahead e carry select [Weste e Eshraghian 1995, Hwang 1979]. Também foram avaliados os impactos, em termos do uso de recursos, gerados por cada substituição. As seções deste artigo apresentam as arquiteturas da DCT 2-D e da DCT 1-D, as arquiteturas alternativas de somadores usadas neste trabalho, a descrição e validação dos operadores, os resultados de síntese e as conclusões. 2. Arquitetura da Transformada Discreta do Co-seno em Duas Dimensões A arquitetura da DCT 2-D usada no compressor JPEG é genericamente apresentada na fig. 2. Esta arquitetura foi desenvolvida para alcançar uma alta freqüência de operação com o uso de técnicas de pipeline e é baseada na arquitetura proposta por Kovac [Kovac e Ranganathan 1995] com algumas modificações. Então, a arquitetura foi dividida em duas arquiteturas de DCT 1-D e um buffer de transposição. Figura 2. Arquitetura genérica da DCT 2-D 2.1 Arquitetura da Transformada Discreta do Co-seno em Uma Dimensão A arquitetura da DCT 1-D proposta por Kovac [Kovac e Ranganathan 1995] e usada neste artigo é apresentada na fig. 3. Considerando os passos do algoritmo usado pela DCT 1-D, o uso de pipeline entre estes passos se torna natural. Já que o algoritmo possui seis passos independentes entre si, o pipeline também foi desenvolvido com seis estágios, onde cinco efetuam adições e subtrações e um efetua multiplicações. Os cinco somadores na arquitetura original da DCT são ripple carry e o multiplicador é baseado em operações de somas de deslocamentos. Então, arquitetura da DCT 1-D é composta por buffers ping-pong (que mantém os dados estáveis nas entradas dos operadores), multiplexadores (para selecionar o valores a serem colocados nas entradas dos operadores) e os operadores, como pode ser visto na fig. 3.
Figura 3. Arquitetura para o cálculo da DCT 1-D Os somadores utilizados na arquitetura da DCT 1-D são do tipo ripple carry [Weste e Eshraghian 1995]. A arquitetura destes somadores é bastante simples e amplamente difundida. Sua principal vantagem é o reduzido uso de recursos. Porém, há a desvantagem do baixo desempenho provocado pela propagação do carry. É esta propagação que define o caminho crítico da arquitetura de cálculo da DCT 1-D e, por conseqüência, da própria DCT 2-D. 3. Algumas Arquiteturas Alternativas de Somadores Três arquiteturas alternativas de somadores foram desenvolvidas neste trabalho: carry lookahead, carry lookahead hierárquico e carry select. Todas as três arquiteturas têm como propósito aumentar a velocidade de propagação do carry [Hwang 1979]. 3.1 Somadores Carry Lookahead Este tipo de arquitetura de somador se utiliza de uma técnica chamada de carry lookahead (CLA) que se baseia em examinar todos os estágios de entrada do somador e, simultaneamente, produzir os carries apropriados para cada um destes estágios. Para isso são usadas duas funções auxiliares: carry generate e carry propagate. A arquitetura em blocos de um somador carry lookahead de 8 bits pode ser vista na fig. 4. Figura 4. Arquitetura em blocos de um somador CLA de 8 bits
3.2 Somadores Carry Lookahead Hierárquico Uma outra arquitetura a ser analisada é a do somador carry lookahead hierárquico. Esta arquitetura tem um propósito adicional que é diminuir a complexidade das equações produzidas quando se usa a técnica carry lookahead em um somador. Neste tipo de arquitetura usa-se um bloco de controle para agrupar m somadores de n-bits formando um somador de m n bits. Para maior clareza, um exemplo deste tipo de somador é ilustrado na fig. 5. Figura 5. Arquitetura em blocos de um somador CLA Hierárquico de 8 bits 3.3 Somadores Carry Select Outra abordagem adicional de arquitetura para acelerar a propagação do carry são os somadores carry select [Weste e Eshraghian 1995]. Usualmente, divide-se o somador em sessões de soma. Cada uma destas sessões, por sua vez, é composta por duas estruturas de somadores ripple carry, uma com carry in e outra sem [Hwang 1979], e um multiplexador para selecionar a soma apropriada. O esquema básico de um somador carry select de 8 bits é mostrado na fig. 6. Figura 6. Arquitetura em blocos de um somador CSA de 8 bits
4. Descrição dos Somadores em VHDL A descrição dos operadores utilizados neste trabalho foi feita em linguagem VHDL, utilizando-se o editor de textos do Max Plus II da Altera. Foram desenvolvidos 18 arquivos de descrições para a arquitetura carry lookahead, 38 para a arquitetura carry lookahead hierárquico e 19 para a arquitetura carry select, totalizando 75 arquivos de descrições para as três arquiteturas alternativas apresentadas. A quantidade de descrições implementadas para cada alternativa arquitetural difere da quantidade original (15 descrições). Isto se deve à necessidade de arquivos auxiliares para que as características específicas de cada arquitetura fossem respeitadas. No caso da arquitetura carry lookahead hierárquico foram desenvolvidas duas alternativas para cada operador. Foi desenvolvido um total aproximado de 8100 linhas de código VHDL para descrever todos os operadores. Na implementação das arquiteturas carry lookahead hierárquico e carry select, utilizou-se a vantagem da hierarquização, através da reutilização do código de outras descrições. Em outras palavras, blocos comuns a vários operadores foram descritos de forma separada para que pudessem ser instanciados como componentes nestes somadores. Com isso, o código das descrições ficou, além de mais curto, mais claro. Posteriormente, os operadores originais da DCT 2-D (ripple carry) foram substituídos pelos novos operadores implementados para que fosse feita a síntese e avaliação de resultados. A substituição dos operadores levou em conta a equivalência entre os operadores em relação ao número de bits e a ocorrência ou não de carry out. Essa equivalência é mostrada na tab. 1. Tabela 1. Equivalência entre as diferentes arquiteturas implementadas Bits RCA CLA CSA CLA Hierárquico 8 addsub8c addsub8clac addsub8csac addsub8cla2hc / addsub8cla4hc 9 addsub9c addsub9clac addsub9csac addsub9cla3hc / addsub9cla5hc 10 addsub10c addsub10clac addsub10csac addsub10cla2hc / addsub10cla5hc 11 addsub11c addsub11clac addsub11csac addsub11cla3hc / addsub11cla4hc 12 addsub12 addsub12cla addsub12csa addsub12cla3h / addsub12cla4h addsub12c addsub12clac addsub12csac addsub12cla3hc / addsub12cla4hc 13 addsub13c addsub13clac addsub13csac addsub13cla3hc / addsub13cla4hc 14 addsub14c addsub14clac addsub14csac addsub14cla2hc / addsub14cla5hc 15 addsub15 addsub15cla addsub15csa addsub15cla3h / addsub15cla5h 16 add16 add16cla add16csa add16cla4h add16c add16clac add16csac add16cla4hc add20dct1 add20cladct1 add20csadct1 add20cla4hdct1 / add20cla5hdct1 20 add20 add20cla add20csa Add20cla4h / add20cla5h add20c add20clac add20csac add20cla4hc / add20cla5hc 24 add24dct2 add24cladct2 add24csadct2 add24cla4hdct2 / add24cla6hdct2 5. Resultados de Síntese A etapa seguinte à descrição dos operadores foi a síntese dos mesmos. A síntese foi direcionada a FPGAs da família ACEX1K da Altera e utilizou o software Max Plus II. Inicialmente, todos os operadores descritos foram sintetizados separadamente. Após, foram sintetizados dentro dos blocos da primeira e da segunda DCT 1-D. Por fim, foi sintetizada a DCT 2-D com os novos operadores.
Os resultados da síntese para FPGAs da família ACEX1K da Altera são apresentados na tabelas seguintes. Os resultados de síntese para a primeira DCT 1-D, arquitetura por arquitetura, podem ser comparados na tab. 2. Tabela 2. Comparação dos resultados de síntese da primeira DCT 1-D para o dispositivo EP1K50TC144-1 da família ACEX1K da Altera 1ª DCT 1-D RCA CLA CLA H. CSA Células Lógicas 1660 1664 1734 1842 Período 37,8 ns 35,3 ns 34,8 ns 34,3 ns Freqüência 26,45 MHz 28,32 MHz 28,73 MHz 29,15 MHz Ganho em Desempenho* - 7,08 % 8,62 % 10,21 % Perda no Uso de Recursos* - 0,24 % 4,46 % 10,96 % * resultados comparativos com a arquitetura original (RCA) A tab. 3 apresenta o mesmo tipo de comparação da tab. 2 mas para a segunda DCT 1-D. Tabela 3. Comparação dos resultados de síntese da segunda DCT 1-D para o dispositivo EP1K50TC144-1 da família ACEX1K da Altera 2ª DCT 1-D RCA CLA CLA H. CSA Células Lógicas 2241 2243 2331 2490 Período 41,1 ns 39,6 ns 40,8 ns 40,1 ns Freqüência 24,33 MHz 25,25 MHz 24,5 MHz 24,93 MHz Ganho em Desempenho* - 3,78 % 0,7 % 2,47 % Perda no Uso de Recursos* - 0,09 % 4,02 % 11,11 % * resultados comparativos com a arquitetura original (RCA) A tab. 4 mostra os resultados gerais, ou seja, uma comparação dos resultados de síntese da DCT 2-D para o dispositivo EP1K100QC208-1 da família ACEX1K da Altera, utilizando-se as três arquiteturas alternativas desenvolvidas. Tabela 4. Comparação dos resultados de síntese da DCT 2-D para o dispositivo EP1K100QC208-1 da família ACEX1K da Altera DCT 2-D RCA CLA CLA H. CSA Células Lógicas 4181 4192 4343 4621 Período 45,7 ns 44,1 ns 41,6 ns 36,9 ns Freqüência 21,88 MHz 22,67 MHz 24,03 MHz 27,10 MHz Ganho em Desempenho* - 3,61 % 9,83 % 23,86 % Perda no Uso de Recursos* - 0,26 % 3,87 % 10,52 % * resultados comparativos com a arquitetura original (RCA) 6. Validação dos Operadores A validação dos operadores levou em conta os resultados da síntese e da simulação do funcionamento. A simulação do funcionamento dos operadores foi feita com o auxílio do editor de formas de onda do Max Plus II (fig. 7). No processo de simulação foi avaliado o correto funcionamento dos operadores, observando-se o comportamento da saída em função dos valores das entradas. Não somente os operadores foram simulados mas sim todas as descrições implementadas incluindo os arquivos auxiliares.
Figura 7. O editor de formas de onda do Max Plus II 7. Conclusões Este artigo apresentou o desenvolvimento de arquiteturas de somadores para uso na compressão de imagens JPEG, mais especificamente, para uso na DCT 2-D do compressor. Estes somadores foram desenvolvidos com o objetivo de indicar alternativas para o aumento do desempenho do compressor. No total, foram desenvolvidas 75 descrições e aproximadamente 8100 linhas de código VHDL para as três alternativas arquiteturais utilizadas na implementação dos operadores. Foram apresentados, também, os resultados da síntese (direcionada a FPGAs da Altera) e das simulações realizadas para validar os somadores desenvolvidos. As freqüências máximas de operação da DCT 2-D, obtidas como resultado para cada uma das arquiteturas alternativas implementadas, foram todas maiores do que a freqüência máxima de operação original obtendo-se, por exemplo, um ganho em desempenho em torno de 23 % para a arquitetura carry select. Os resultados obtidos mostraram também que para todas as três alternativas arquiteturais implementadas os impactos no desempenho foram maiores que seus respectivos impactos no uso de recursos. Considerando-se que o objetivo principal do trabalho foi maximizar o desempenho do compressor de imagens JPEG, os resultados obtidos foram considerados satisfatórios. Como trabalhos futuros, indicam-se o desenvolvimento de novas alternativas arquiteturais de somadores, como carry skip adder, para que novas avaliações e comparações possam ser realizadas. Também espera-se desenvolver alguns destes operadores em layout full custom e standard cell, para realizar comparações mais precisas, tomando por base os resultados de simulações elétricas e de análise de timing de mais baixo nível. 8. Referências Bibliográficas The International Telegraph and Telephone Consultative Committee (CCITT). (1992). "Information Technology Digital Compression and Coding of Continuous-Tone Still Images Requirements and Guidelines". Rec. T.81. Geneva: International Telecommunication Union. Agostini, L. (2002) "Projeto de Arquiteturas Integradas para a Compressão de Imagens JPEG", Porto Alegre: PPGC da UFRGS, 2002. Dissertação de Mestrado em Computação. Universidade Federal do Rio Grande do Sul.
Weste, N. e Eshraghian, K. (1995) "Principles of CMOS VLSI Design - Second Edition", Addison-Wesley, USA. Hwang, K. (1979) "Computer Arithmetic: Principles, Architecture and Design", New York: John Wiley & Sons. Altera Corporation. (2002) "Altera: The Programmable Solutions Company", San Jose: Altera Corporation. Disponível em: <http://www.altera.com>. JPEG and JBIG Committees. (2001) "Home Site of the JPEG and JBIG Committees", Disponível em: <http://www.jpeg.org>. Kovac, M. e Ranganathan, N. (1995) "JAGUAR: A Fully Pipelined VLSI Architecture for JPEG Image Compression Standard", Proceedings of the IEEE, New York, v.83, n.2, p. 247-258.