Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE CATÓLICA DE PELOTAS ESCOLA DE INFORMÁTICA PROGRAMA DE PÓS-GRADUACÃO EM INFORMÁTICA Circuitos Multiplicadores Array de Baixo Consumo de Potência Aplicados a Filtros Adaptativos por Leandro Zafalon Pieper Dissertação apresentada como requisito parcial para obtenção do grau de Mestre em Ciência da Computação Orientador: Prof. Dr. Eduardo Antônio César da Costa Co-orientador: Prof. Dr. Sérgio José Melo de Almeida DM-2008/8-005 Pelotas, Agosto de 2008 2 AGRADECIMENTOS Ao completar este trabalho, presto meus agradecimentos a todos que de alguma forma contribuíram de forma direta ou indireta. Agradeço a minha mãe e a minha namorada pelo incentivo dado. Aos meus colegas de laboratório, meu sincero obrigado, pela companhia e auxílio. Um especial agradecimento aos meus professores: orientador Prof. Dr. Eduardo Antônio César da Costa e co-orientador Prof. Dr. Sérgio José Melo de Almeida, pelo incentivo e ajuda ao longo desta jornada. Saibam que vossa amizade, apoio e companheirismo foram fundamentais para o desenvolvimento deste trabalho. 3 SUMÁRIO LISTA DE FIGURAS......................................................................................................... 5 LISTA DE TABELAS........................................................................................................ 6 LISTA DE ABREVIATURAS E SIGLAS ....................................................................... 7 RESUMO............................................................................................................................. 8 ABSTRACT ........................................................................................................................ 9 1 INTRODUÇÃO .......................................................................................................... 10 1.1 Motivação ................................................................................................................. 11 1.2 Objetivos................................................................................................................... 11 1.3 Metodologia............................................................................................................... 12 1.3.1 Ambientes de descrição e análise dos multiplicadores............................................ 12 1.3.2 Ferramenta automática de geração das descrições dos circuitos multiplicadores (RAMAGT) ......................................................................................................................... 14 1.4 Principais contribuições do trabalho ...................................................................... 17 1.5 Sumário ..................................................................................................................... 17 2 POTÊNCIA E ATRASO EM CIRCUITOS CMOS................................................. 18 2.1 Fontes de Consumo de Potência em Circuitos CMOS .......................................... 18 2.1.1 Consumo de Potência Estática................................................................................. 19 2.1.2 Consumo de Potência de Curto-Circuito................................................................. 20 2.1.3 Consumo de Potência Dinâmica.............................................................................. 20 2.1.4 Consumo de Potência pela Atividade de Glitching ................................................. 21 3 OPERADORES ARITMÉTICOS EFICIENTES .................................................... 23 3.1 Estado da Arte de Circuitos Multiplicadores......................................................... 23 3.2 Operação de Multiplicação na Base 2m em Complemento de 2............................ 26 3.3 Multiplicador Booth Modificado............................................................................. 28 3.4 Somador do tipo Carry Save Adder (CSA)............................................................ 30 3.5 Circuitos Somadores Compressores ....................................................................... 32 3.6 Sumário ..................................................................................................................... 35 4 OTIMIZAÇÕES NOS BLOCOS DE MULTIPLICAÇÃO NA BASE 2m ............. 36 4.1 Técnicas para otimizações dos blocos de multiplicação m=4................................ 38 4.1.1 Otimização usando blocos de multiplicação m=2 e somadores RCA ..................... 38 4.1.2 Otimização usando blocos de multiplicação m=2 e somadores CSA...................... 39 4.1.3 Uso de blocos de multiplicação dedicados 4:2 e RCA............................................ 41 4.1.4 Análise Comparativa ............................................................................................... 42 4.2 Aplicação da segunda técnica (m=2 e CSA) a diferentes valores de m ................ 43 4 4.2.1 Análise comparativa entre multiplicadores com diferentes valores de m ............... 47 4.2.2 Análise comparativa entre circuitos multiplicadores array na base 2m e Booth modificado ............................................................................................................... 52 4.3 Sumário ..................................................................................................................... 56 5 CIRCUITOS SOMADORES EFICIENTES APLICADOS AOS MULTIPLICADORES ARRAY NA BASE 2m ................................................................ 57 5.1 Extensão dos Circuitos Somadores Compressores para Blocos 8:2 e 16:2 ......... 57 5.2 Aplicação dos Compressores a Multiplicadores Array na Base 2m ...................... 61 5.2.1 Análise Comparativa de Circuitos Multiplicadores Array na Base 2m Utilizando Somadores Compressores........................................................................................ 64 5.3 Sumário ..................................................................................................................... 67 6 ESTUDO DE CASO: MULTIPLICADORES ARRAY NA BASE 2m OTIMIZADOS APLICADOS A FILTROS DIGITAS............................................ 68 6.1 Filtros FIR com Coeficientes Fixos ......................................................................... 69 6.1.1 Aplicação dos Multiplicadores Array Otimizados em Arquiteturas Totalmente Seqüenciais .............................................................................................................. 70 6.1.2 Aplicação dos Multiplicadores Array Otimizados em Arquiteturas Semi - Paralelas 71 6.2 Arquitetura de Filtro FIR com Coeficientes Adaptativos .................................... 75 6.2.1 Algoritmo Adaptativo LMS (Least Mean Square) .................................................. 76 6.2.2 Aplicação dos Multiplicadores Array Otimizados em Arquitetura Dedicada para o Algoritmo LMS ....................................................................................................... 77 6.3 Sumário ..................................................................................................................... 79 7 CONCLUSÕES............................................................................................................ 80 7.1 Trabalhos futuros ..................................................................................................... 81 REFERÊNCIAS ............................................................................................................... 83 ANEXOS ...........................................................................................................................88 5 LISTA DE FIGURAS Figura 1.1 Metodologia para estimativa de área, atraso e potência dos circuitos multiplicadores array na base 2m.................................................................... 13 Figura 1.2 Metodologia usada o desenvolvimento da ferramenta RAMAGT................. 15 Figura 1.3 Tela principal da ferramenta RAMAGT ........................................................ 16 Figura 1.4 Exemplo de descrições VHDL e BLIF geradas pela ferramenta RAMAGT . 16 Figura 2.1 Esquema de contribuição de glitches para dissipação de potência................. 22 Figura 3.1 Exemplo de multiplicação de 4 bits base-4(m=2) em complemento de 2 ...... 27 Figura 3.2 Estrutura geral para multiplicação na base 2 m em complemento de 2 ............ 27 Figura 3.3 Exemplo de multiplicador array base 4 de 8 bits em complemento de 2 ...... 28 Figura 3.4 Exemplo de multiplicação de 8 bits usando o algoritmo Booth Modificado . 29 Figura 3.5 Exemplo de arquitetura Booth Modificado de 8 bits...................................... 30 Figura 3.6 Exemplo de um somador Carry Save ............................................................. 31 Figura 3.7 Exemplo de soma de números de 4 bits usando a estrutura Carry Save ........ 31 Figura 3.8 Estrutura de um circuito somador compressor 4:2 ......................................... 32 Figura 3.9 Um compressor 4:2 baseado em multiplexador ............................................. 34 Figura 4.1 Exemplo de estrutura do Operando I.............................................................. 36 Figura 4.2 Representação do bloco Tipo I de multiplicação m=2 ................................... 36 Figura 4.3 Bloco de multiplicação (m=4) Tipo I composto por blocos m=2 e RCA...... 39 Figura 4.4 Bloco de multiplicação (m=4) Tipo I composto por blocos m=2 e CSA ...... 40 Figura 4.5 Bloco de multiplicação (m=4) Tipo I composto por blocos de mult. 4:2....... 41 Figura 4.6 Exemplo completo de multiplicação de 8 bits com blocos m=4 otimizados Tipo I, Tipo II e Tipo III................................................................................. 44 Figura 4.7 Exemplo de uma multiplicação de 16 bits com blocos de multiplicação m=8 otimizados....................................................................................................... 46 Figura 4.8 Bloco de multiplicação otimizado m=3 utilizando blocos dedicados 1:2 ...... 47 Figura 4.9 Gráficos com os resultados de área, atraso e consumo de potência dos multiplicadores para diferentes valores de m ................................................. 51 Figura 4.10 Gráficos das simulações dos multiplicador para área, atraso e potência........ 55 Figura 5.1 Estrutura interna de um compressor 8:2 ......................................................... 59 Figura 5.2 Estrutura interna de um compressor 16:2 ....................................................... 60 Figura 5.3 Exemplo de multiplicação de 16 bits m=4 utilizando compressores 4:2........ 63 Figura 5.4 Estrutura de circuito multiplicador de 16 bits m=4 utilizando compressores 4:2 ........................................................................................................................ 64 Figura 6.1 Exemplo de filtro FIR de 8 taps ..................................................................... 71 Figura 6.2 Parte operativa das implementações seqüenciais do filtro FIR ...................... 72 Figura 6.3 Parte Operativa das implementações semi-paralelas do filtro FIR................. 74 Figura 6.4 Elementos de um filtro FIR com coeficientes adaptativos ............................. 76 Figura 6.5 Arquitetura do hardware dedicado para o algoritmo adaptativo LMS .......... 78 6 LISTA DE TABELAS Tabela 3.1 Tabela verdade de um compressor 4:2........................................................... 33 Tabela 4.1 Resultados para multiplicadores m=2 ............................................................ 38 Tabela 4.2 Resultados de Área, atraso e potência para multiplicadores array de 16 bits na base 16....................................................................................................... 42 Tabela 4.3 Produto atraso-potência (AP)......................................................................... 43 Tabela 4.4 Possibilidades de otimizações dos blocos de multiplicação .......................... 46 Tabela 4.5 Resultados para multiplicadores m=3 ............................................................ 48 Tabela 4.6 Resultados para multiplicadores m=4 ............................................................ 48 Tabela 4.7 Resultados para multiplicadores m=5 ............................................................ 48 Tabela 4.8 Resultados para multiplicadores m=6 ............................................................ 49 Tabela 4.9 Resultados das simulações para m=8 Otimizado........................................... 51 Tabela 4.10 Resultados das simulações dos Multiplicadores na base 2m e Booth Modificado..................................................................................................... 53 Tabela 5.1 Tabela verdade de um compressor 8:2........................................................... 59 Tabela 5.2 Tabela verdade de um compressor 16:2......................................................... 61 Tabela 5.3 Número de linhas de somas de produtos parciais em multiplicadores nas bases 16 e 256 ................................................................................................ 65 Tabela 5.4 Resultados para multiplicadores m=4 Otimizado 1 com o uso de compressores.................................................................................................. 66 Tabela 5.5 Resultados para multiplicadores m=8 Otimizado com compressores ........... 66 Tabela 6.1 Resultados de área, atraso e energia normalizada por amostra para o filtro seqüencial....................................................................................................... 72 Tabela 6.2 Resultados de área, atraso e energia normalizada por amostra para o filtro semi-paralelo.................................................................................................. 75 Tabela 6.3 Valores de área, atraso e consumo de potência da arquitetura para o algoritmo LMS .............................................................................................. 79 7 LISTA DE ABREVIATURAS E SIGLAS ASICs Application Specific Integrated Circuit BLIF Berkeley Logic Interchange Format CMOS Complementary Metal Oxide Semiconductor CSA Carry Save Adder CSL C Scripting Language DSP Digital Signal Processing FIR Finite Impulse Response Filter FPGA Field Programmable Gate Array LMS Least Mean Squares Algorithms MAC Multiplier/Accumulator NMOS Negative Channel Metal Oxide Semiconductor PDP Power Delay Product PLA Programmable Logic Arrays PMOS Positive Channel Metal Oxide Semiconductor RCA Ripple Carry Adder SIS Sequential Interactive Synthesis SLS Switch Level Simulator VHDL VHSIC Hardware Description Language VHSIC Very High Speed Integrated Circuits VLSI Very Large Scale Integration 8 RESUMO O objetivo principal deste trabalho é a implementação e análise de novas arquiteturas de circuitos multiplicadores array digitais recentemente apresentados no meio cientifico com diferentes técnicas de redução de potência, tais como a utilização de eficientes estruturas de circuitos somadores, bem como a otimização dos blocos dedicados de multiplicação,que permitem a operação de multiplicação na base 2m. A proposta de novas arquiteturas consiste em operações de multiplicação em complemento de 2 e que mantenham a mesma regularidade de um multiplicador array convencional. As arquiteturas podem operar com números na base 2m, onde m representa o grupo de bits de multiplicação. Em um multiplicador array convencional, onde a operação de multiplicação é realizada bit a bit, o valor de m é igual a 1 (operação na base 2). Neste trabalho, são apresentadas novas arquiteturas de multiplicadores que operam em diferentes bases, o que permite a redução do número de linhas de produtos parciais, com impactos diretos no aumento de desempenho e redução do consumo de potência. A implementação dos diferentes circuitos multiplicadores foi realizada no nível textual (nível de portas lógicas), onde circuitos multiplicadores de 16, 32 e 64 bits são comparados em termos de parâmetros de área, atraso e consumo de potência utilizando os ambientes SIS (para valores de área e atraso) e SLS (para estimação de valores de consumo de potência). Como estudos de caso, as diferentes arquiteturas de circuitos multiplicadores propostas neste trabalho foram aplicadas em filtros digitais de resposta finita ao impulso (FIR) e em arquitetura dedicada de algoritmo de filtragem adaptativa LMS (Least Mean Square). Palavras-Chave: multiplicadores array, Filtros digitais, baixa potência 9 Title: “Low-Power Array Multipliers Circuits for Adaptive Filters” Abstract The main goal of this work is the implementation and analyzes of new array multiplier architectures. These new architectures were recently presented in the scientific community by including different power reduction techniques, such as the use of efficient adder circuits and the optimization of the dedicated multiplication structures that allow the multiplication operation in the radix 2m. The new multipliers operate in 2´s complement and keep the same regularity presented by a conventional array multiplier. The architectures operate in the radix 2m, where m represents the group of bits multiplied at a time. In a conventional array multiplier, where the multiplication is performed bit by bit, m assumes value equal 1 (radix 2 operation). In this work, the new multiplier architectures operate in different radices, leading to a reduction in the number of partial product lines, enabling higher performance and power reduction in the multipliers. The 16, 32 and 64 bit width multipliers were described in textual language (gate level), and the comparisons between the multipliers are preformed in terms of area, delay and power consumption by using SIS environment (for area and delay results) and SLS tool (for power consumption estimation). In this work we have applied the proposed optimized multipliers in digital filtering algorithms such as finite impulse response (FIR) and dedicated architecture for the LMS (Least Mean Square) adaptive filtering. Keywords: array multipliers, digital filters, low power 10 1 INTRODUÇÃO A rápida e crescente inovação em dispositivos VLSI (Very Large Scale Integration) impulsiona a utilização das tecnologias de fabricação aos seus limites, dentre as quais a verificação da dissipação de potência é um dos problemas de maior preocupação. Equipamentos portáteis, como notebooks, telefones celulares, handhelds, aparelhos biomédicos portáteis, entre outros, necessitam de um alto desempenho e baixo consumo de potência. Neste contexto, aspectos de baixa dissipação de potência, exigem a pesquisa de novas arquiteturas confiáveis que possam ser testadas e fabricadas e que levem em consideração as necessidades de sistemas eletrônicos portáteis e de funções diversas (COSTA, 2002). Na verdade, tem-se atualmente a ênfase crescente no projeto de circuitos integrados de baixa potência e sistemas de alto desempenho e que levem em consideração aspectos como densidade de integração, velocidade de operação e freqüência de relógio. Este trabalho consiste na implementação de novas arquiteturas de circuitos multiplicadores que levam em consideração técnicas para o aumento de desempenho e redução do consumo de potência, tais como o uso de circuitos somadores eficientes (compressores) (WEINBERGER, 1981) e a otimização dos blocos dedicados de multiplicação, que permitem a operação de multiplicação na base 2m. As novas arquiteturas de circuitos multiplicadores foram implementadas em linguagem textual no formato BLIF (Berkeley Logic Interchange Format) e apresentam como principal características a regularidade e redução de caminhos críticos e transições espúrias que são propagadas ao longo do array, tornando possível a redução do consumo de potência em suas arquiteturas. As novas arquiteturas de circuitos multiplicadores propostas são aplicadas em estruturas dedicadas de filtros digitais, que incluem a filtragem de resposta finita ao impulso (FIR – Finite Impulse Response) e algoritmo de filtragem adaptativa LMS (Least Mean Square) (HAYKIN, 2002). Estes filtros foram escolhidos como estudos de caso, por envolverem um bom número de operadores aritméticos em suas estruturas. Neste caso, as diferentes arquiteturas de circuitos multiplicadores são aplicadas a estes filtros, onde são reportados os resultados de área, atraso e consumo de potência destes circuitos. Os principais resultados apresentados mostram a eficiência dos filtros FIR e adaptativo, quando do uso dos multiplicadores otimizados propostos neste trabalho. 11 1.1 Motivação Na área de Processamento Digital de Sinais (Digital Signal Processing - DSP) os circuitos que implementam os diversos algoritmos, incluem um elevado número de operadores aritméticos. Dentre estes operadores, os circuitos multiplicadores são responsáveis por uma parte significativa do consumo de potência global no processamento dos sinais digitais. Desta forma, a proposta de novas arquiteturas de circuitos multiplicadores de alto desempenho e baixo consumo contribui para o projeto de circuitos mais eficientes nestas áreas de aplicação. Diante do quadro exposto, surge a motivação em analisar em diferentes níveis de abstração os circuitos multiplicadores apresentados em (COSTA, 2002) com diferentes técnicas de redução do consumo de potência, como a utilização de eficientes estruturas de circuitos somadores e a otimização dos blocos dedicados de multiplicação que permitem a operação de multiplicação na base 2m. Os multiplicadores otimizados propostos são aplicados em filtros digitais de resposta finita ao impulso e algoritmo de filtragem adaptativa LMS. 1.2 Objetivos O principal objetivo deste trabalho é implementar e analisar o desempenho de diferentes arquiteturas de multiplicadores digitais de 16, 32 e 64 bits presentes na literatura. São investigados circuitos multiplicadores paralelos, sendo estes chamados array Binário na base 2m (COSTA, 2002). O uso de somadores eficientes do tipo compressores 4:2, 8:2 e 16:2 nas linhas de produtos parciais e a otimização dos blocos dedicados de multiplicação m:m e 1:m também são alvo deste trabalho. A análise comparativa dos resultados foi efetuada considerando as métricas de área, atraso e consumo de potência para multiplicadores com diferentes grupos de bits (desde m = 2 – multiplicação na base 4 até m = 8 – multiplicação na base 256). A otimização destes blocos permite explorar a principal característica do multiplicador array que é o aspecto da regularidade. Assim, pode-se ter um circuito multiplicador regular com um reduzido 12 número de linhas de produtos parciais. Esta redução tem um impacto direto no aumento de desempenho e redução do consumo de potência dos multiplicadores. Uma ferramenta degeração automática dos circuitos multiplicadores, desenvolvida no âmbito deste trabalho, chamada RAMAGT (JACCOTTET, 2008), permite a análise de diferentes arquiteturas de multiplicadores com diferentes larguras de operandos e diferentes bases de operação (desde 4 até 256). O objetivo desta ferramenta é a geração de uma biblioteca de circuitos multiplicadores array com aspectos de aumento de desempenho e redução do consumo de potência. Deve-se destacar que todas as técnicas propostas neste trabalho estão agregadas à ferramenta de geração automática. Como objetivo final deste trabalho, tem-se a aplicação dos multiplicadores otimizados em arquiteturas dedicadas de filtros FIR e algoritmo de filtragem adaptativa LMS. 1.3 Metodologia Para cada uma das fontes de consumo de potência de um circuito integrado, existem várias técnicas visando a sua estimativa de modo eficiente considerando os diversos fatores que definem os seus modelos. No presente trabalho, o enfoque é o consumo de potência dinâmica, pois este representa a maior parcela de consumo de potência de um circuito integrado (WESTE, 1994). A seguir são apresentados os principais ambientes de descrição, análise e geração dos multiplicadores array na base 2m. 1.3.1 Ambientes de descrição e análise dos multiplicadores O procedimento completo de um projeto que envolve a análise de potência de um circuito consiste inicialmente em estabelecer um nível de descrição da arquitetura do circuito a ser analisada. Esta descrição fornece para a ferramenta de análise de potência uma lista de todos os diferentes módulos que têm de ser analisados bem como suas complexidades. O diagrama da metodologia utilizada neste trabalho é mostrado na Figura 1.1. A descrição do fluxo completo da metodologia utilizada neste trabalho, é apresentada nos Anexos I e II. Inicialmente a descrição dos circuitos é realizada no formato BLIF 13 (Berkeley Logic Interchange Format) (BERKELEY, 2007), cujo objetivo é descrever uma hierarquia do circuito no nível lógico na forma textual. Este formato é mapeado para uma biblioteca que contém a funcionalidade das portas lógicas, além das informações de capacitâncias e atrasos característicos. (a) (b) Figura 1.1 – Metodologia para estimativa de área, atraso e potência dos circuitos multiplicadores array na base 2m Utiliza-se o ambiente SIS (SENTOVICH, 1992) para efeitos de síntese e simulação dos circuitos, além de cálculos de área e atraso. Entretanto para estimativa do consumo de potência dos circuitos, utiliza-se a ferramenta no nível de transistores SLS (GENDEREN, 1989). Os valores de área são apresentados em termos do número de literais, onde 1 literal corresponde aproximadamente a 2 transistores. Os valores de atraso são obtidos a partir do modelo de atraso geral da biblioteca mcnc. Os valores do consumo de potência dos circuitos são obtidos a partir da ferramenta SLS após a conversão do circuito do formato BLIF para o formato no nível de transistores desta ferramenta. Os resultados de potência são obtidos após a aplicação de 10000 vetores randômicos de excitação às entradas primárias do circuito, de acordo com os resultados apresentados em (COSTA, 2002). Para as simulações dos multiplicadores foi utilizada a tecnologia fishbone de 1.2 micrometros 14 (Sea of gates, CMOS, Semi-Custom, VDD=5V) (TUDELF, 2008). A ferramenta SLS simula o comportamento do circuito ao longo do tempo. De acordo com os parâmetros do transistor e suas interconexões, o atraso é calculado para as diferentes transições no circuito. Neste cálculo, são utilizados os tamanhos dos transistores, as resistências de interconexão e valores de capacitâncias. Para encontrar os tempos de subida e descida assim como valores estáveis dos sinais. Os tempos de subida e descida são computados pela interpretação de uma rede RC para cada nó do circuito. Desta forma, a dissipação média do circuito é calculada considerando o atraso genérico de cada porta lógica do circuito. A partir da descrição no formato BLIF dos circuitos, pode-se proceder à conversão desta descrição para o formato VHDL (VHSIC – Very High Speed Integrated Circuits – Hardware Description Language) (RUSHTON, 1998) utilizando um programa de conversão especifico (blif2vhdl), como mostrado na Figura 1.1. Este fluxo possibilita a prototipação dos circuitos multiplicadores voltada para FPGA (Field Programmable Gate Array). Neste formato, realiza-se a síntese e a simulação das descrições dos multiplicadores por intermédio do programa Quartus II (ALTERA, 2006) que utiliza componentes FPGA da fabricante Altera (ALTERA, 2002). Os resultados de área, atraso e potência são obtidos no próprio ambiente para o componente FPGA EP1S10B67C6 da família Stratix. Vale ressaltar que este fluxo é utilizado neste trabalho, devido ao fato do hardware dedicado para o algoritmo de filtragem adaptativa LMS estar descrito em linguagem VHDL. Neste caso, os circuitos multiplicadores testados neste circuito são também descritos em VHDL. 1.3.2 Ferramenta automática de geração das descrições dos circuitos multiplicadores (RAMAGT) Com o aumento da complexidade dos sistemas digitais, torna-se cada vez mais difícil a implementação de descrições textuais dos circuitos de forma manual. Em particular, os circuitos multiplicadores desenvolvidos neste trabalho, apresentam uma grande complexidade, principalmente para os casos onde se utiliza uma maior largura dos operandos. Para contornar este problema, propõe-se neste trabalho uma ferramenta que possa gerar automaticamente as descrições textuais dos circuitos multiplicadores array na base 2m (JACCOTTET, 2008). A idéia desta ferramenta é gerar, de forma automática, as 15 descrições de multiplicadores na base 2m para qualquer largura de operandos (n bits) e para m grupos de bits entre (m=2 – base 4 e m=8 – base 256). A metodologia utilizada para o desenvolvimento da ferramenta RAMAGT é mostrada no fluxo da Figura 1.2. Figura 1.2 - Metodologia usada no desenvolvimento da ferramenta RAMAGT Como pode ser verificado através da Figura 1.2, a ferramenta é implementada usando duas linguagens de programação, uma delas é a C++ que gera arquivos executáveis e a outra é chamada CSL (C Scripting Language) (KOCH, 2002) que é uma linguagem interpretada que não necessita de compilação (OUSTERHOUT, 1998). A linguagem C++ é utilizada para realizar a interface entre o usuário e o programa para estabelecer os parâmetros da descrição a ser gerada automaticamente. As descrições dos blocos básicos de multiplicação e soma dos circuitos estão dispostos em uma biblioteca onde, através da linguagem CSL, ocorre a seleção e ligação destes blocos, conforme os parâmetros inseridos pelo usuário. Outra característica desta ferramenta é a propriedade de poder gerar várias descrições ao mesmo tempo, ou seja, pode-se abrir várias janelas da ferramenta simultaneamente. Na Figura 1.3 é mostrada a tela de seleção e inserção dos parâmetros da descrição do multiplicador a ser gerado. Primeiramente é selecionado o valor do grupo de m (2 a 8). O próximo passo é inserir a largura dos operandos do multiplicador e finalmente clicar no botão “GERAR”. Os arquivos com as descrições geradas automaticamente são gravadas 16 em uma pasta especifica, tendo-se a possibilidade da inserção dos comentários da descrição gerada. Isto pode ser realizado através da seleção do botão “NOTAS”. Figura 1.3 - Tela principal da ferramenta RAMGAT As descrições dos circuitos foram validadas na ferramenta SIS. Através da ferramenta RAMAGT foi possível gerar automaticamente as descrições dos circuitos multiplicadores na base 2m para 32 e 64 bits de uma forma rápida e confiável, pois a geração de umadescrição leva em torno de um minuto. O aspecto da confiabilidade é comprovado pelos testes preliminares efetuados nas descrições das bibliotecas. Exemplos de descrições VHDL e BLIF, geradas automaticamente pela ferramenta RAMAGT, de um multiplicador array de 4 bits é apresentado na Figura 1.4. Para simplificar as figuras não são mostrados os sub-circuitos. Figura 1.4 - Exemplo de descrições VHDL e BLIF geradas pela ferramenta RAMAGT 17 1.4 Principais contribuições do trabalho Os principais aspectos deste trabalho estão baseados nas otimizações realizadas no multiplicador array binário na base 2m apresentado em (COSTA, 2002). Para tal, as seguintes contribuições são apresentadas: • desenvolvimento de uma ferramenta de geração automática parametrizável de circuitos multiplicadores array Binário na base 2m nos formatos BLIF e VHDL; • implementação de circuitos multiplicadores array Binário na base 2m de 16, 32 e 64 bits com blocos dedicados de multiplicação otimizados. Estes blocos dedicados estão presentes nos operandos do multiplicador. Foram realizadas otimizações para blocos de multiplicação de m=2 até m=8.; • implementação de circuitos multiplicadores array Binário na base 2m de 16, 32 e 64 bits com circuitos somadores compressores 4:2, 8:2 e 16:2. Estes compressores são utilizados para a redução do número de linhas de somas de produtos parciais dos multiplicadores; • aplicação dos circuitos multiplicadores otimizados em arquiteturas dedicadas de filtros FIR de coeficientes fixos e coeficientes adaptativos. 1.5 Sumário Neste capitulo foram abordados os principais pontos motivacionais do trabalho. Os objetivos e principais contribuições também foram apresentadas. Também foi apresentado o fluxo da metodologia do trabalho, incluindo aspectos da ferramenta de geração automática de multiplicadores array na base 2m de baixo consumo de potência. No próximo capítulo serão abordadas as principais fontes de consumo de potência em circuitos CMOS. 18 2 POTÊNCIA EM CIRCUITOS CMOS Neste capítulo são abordados os aspectos de consumo de potência e de propagação em circuitos CMOS (Complementary Metal Oxide Semiconductor). São apresentados alguns conceitos que envolvem as principais fontes de consumo de potência em circuitos CMOS (OLIVEIRA, 2005). O custo de produtos eletrônicos para o consumidor associados com o encapsulamento e resfriamento dos chips impõem limitações severas à dissipação média de potência. Afinal de contas, aquecimento e temperatura estão diretamente relacionados com a potência média (NAJN, 1994). De fato, um outro fator de interesse do projetista de circuitos integrados além da dissipação de potência são problemas de temperatura dos dispositivos. Com a redução do tamanho dos dispositivos, a densidade dos transistores tende a aumentar, gerando o aumento do número de componentes dissipando potência por unidade de área. Além disso, a redução do tamanho provoca a redução do atraso de propagação, permitindo a operação dos circuitos em freqüências mais altas, o que por sua vez leva a um aumento do consumo de potência. Neste capítulo são inicialmente apresentados alguns conceitos que envolvem as principais fontes de consumo de potência em circuitos CMOS. 2.1 Fontes de Consumo de Potência em Circuitos CMOS Existem três componentes que estabelecem a quantidade de potência dissipada em circuitos CMOS (WEST, 1994): • dissipação estática de potência devido à corrente de fuga ou outras correntes que fluem continuamente pela fonte de potência do circuito; • o consumo de potência de curto-circuito, que ocorre devido à corrente direta da fonte de alimentação para o terra durante o processo de comutação de uma porta lógica; • dissipação dinâmica de potência devido à corrente de comutação durante a carga e descarga das capacitâncias de saída. 19 Considerando as componentes acima, pode-se então especificar, de acordo com a Equação 2.1, o consumo de potência total em circuitos CMOS: dinstaticSCTOTAL PPPP ++= (2.1) onde PSC é a potência de curto-circuito, Pstatic representa a parcela devida ao consumo estático e Pdin é a potência dinâmica. A principal razão para a popularidade da lógica CMOS é que as portas tradicionais não possuem consumo estático quando suas saídas não estão comutando entre os níveis lógicos. Entretanto, para qualquer saída de uma porta CMOS que tenha o seu valor lógico alterado, haverá uma potência dissipada na porta dos transistores (MARTIN, 2000). A razão inicial para esta dissipação de potência é o movimento de cargas elétricas para carregar e descarregar capacitâncias de carga externas e capacitâncias parasitas internas. Em adição a isto, para sinais de entrada com tempos de subida e descida finitos, é possível se ter temporariamente um caminho direto de corrente que flui desde a fonte de tensão até o terra. A seguir são apresentados detalhes das principais fontes de consumo de potência em circuitos CMOS. 2.1.1 Consumo de Potência Estática Correntes de fuga ou outras correntes que fluem continuamente pela fonte de potência causam a dissipação de potência estática. Idealmente, o consumo de potência estática de um circuito CMOS é nulo. Entretanto há sempre uma corrente de fuga presente. Esta contribuição no consumo total de potência torna-se um fator de preocupação à medida que a tecnologia de processo de semicondutores atinge valores abaixo de 0.1µm (KIM, 2003). Estudos demonstram que para o caso de um circuito inversor, utilizando tecnologia de 70nm, submetido a simulações operando a 125ºC, as correntes de fuga podem chegar a contribuir em 49% no consumo de potência total do circuito (KIM, 2002). Correntes de fuga podem ocorrer quando um transistor está no estado desligado e outro transistor ativo carrega (up/down) o dreno em relação ao potencial de substrato. A potência estática total é o produto da corrente de fuga do dispositivo e da fonte de tensão, dada pela Equação 2.2. 20 DDleakagestatic VIP .= (2.2) −= 1TVT V Sleakage eII (2.3) Onde VDD é a tensão de alimentação do circuito e Ileakage é a corrente de fuga que é dada pela equação característica do diodo de polarização reversa conforme é visto na Equação 2.3, onde IS é a corrente de saturação reversa, V é a tensão do diodo e VT=KT/q é a tensão termal. 2.1.2 Consumo de Potência de Curto-Circuito O consumo de potência de curto-circuito ocorre quando flui uma corrente diretamente da fonte de alimentação para o terra. Isto ocorre quando um circuito CMOS estático é chaveado por um sinal de entrada com tempos de subida e descida não-zero, com os transistores tipos PMOS (Positive Channel Metal Oxide Semiconductor) e NMOS (Negative Channel Metal Oxide Semiconductor) conduzindo simultaneamente por um curto intervalo de tempo. Este consumo de potência, devido à corrente de curto-circuito, contribui com aproximadamente 10% do valor de consumo de potência total (POPPEN, 2000), mas pode tornar-se substancial, particularmente se a entrada mudar de maneira lenta, ou seja, se os tempos de subida ou descida dos sinais de entrada dos circuitos são altos. Na realidade, não é correto assumir valores de tempo de subida e descida como sendo nulos para as formas de onda de entrada (RABAEY, 1996). Como resultado disto, é criado um caminho para a corrente diretamente da fonte de alimentação para o terra em um curto período de tempo durante a comutação, onde os transistores PMOS e NMOS estão conduzindo simultaneamente. 2.1.3 Consumo de Potência Dinâmica A dissipação dinâmica ocorre durante o processo de comutação dos transistores PMOS e NMOS devido à corrente de curto-circuito e pelo processode carga e descarga da capacitância de saída. 21 A potência dinâmica ainda é a fonte dominante de consumo de potência, embora a diferença vem se tornando menor em novas tecnologias que envolvem maiores escalas de integração. (WILLIAMS, 1996). A componente de comutação dinâmica de dissipação de potência (P din ) em uma transição na saída de uma porta carregada por um capacitor C L é dada de acordo com a Equação 2.4 (CHANDRAKASAN, 1995), onde A é a atividade do nó de saída, medida em eventos/segundo para uma carga/descarga completa. No caso de projetos síncronos, a atividade A não é simplesmente f (freqüência), mas em geral uma probabilidade de atividade normalizada a (menor do que 1 para modelo de atraso zero) é computada como função da estatística de entrada e modelos lógicos, pois nem todos os nós mudam em um determinado ciclo de relógio. Se, em um circuito, uma simples transição é realizada a cada ciclo de relógio na taxa f clk , então a potência é dada pela Equação 2.5. clkDDLdin fVCP 22 1 = (2.5) Entretanto, há casos em que a transição do sinal ocorre em diferentes taxas de freqüência, tendo-se que considerar o valor do número de transições por ciclo de relógio ou o fator de atividade a de transição dos nós, como mostrado na Equação 2.5. 2.1.4 Consumo de Potência pela Atividade de Glitching A dissipação de potência dinâmica também é influenciada por sinais espúrios (glitching), característico de sistemas com lógicas complementares em cascata (GOWAN, 1998). A principal razão para a ocorrência do efeito de glitching recai sobre o fato de que as portas lógicas possuem um atraso de propagação do sinal diferente de zero (RABAEY, 1996). Na realidade, o atraso de propagação finito de um bloco lógico para o próximo, pode causar transições espúrias, chamadas de glitches ou hazards. Estas transições espúrias dificultam a estimação da energia de circuitos síncronos. A principal razão para isto recai no fato de que os glitches são muito dependentes do atraso do circuito e, desta maneira, qualquer tentativa de se estimar a energia consumida precisa incluir um modelo preciso de 22 2 1 2 1 DDLDDLdin VafCAVCP == (2.4) 22 atraso (PENZES, 2002). Desta maneira, um determinando nó de um circuito pode exibir múltiplas transições em um único pulso de relógio antes de estabelecer de fato, o valor lógico correto. Esta atividade de chaveamento extra contribui para a dissipação total de energia com cerca de 20% do valor global, mas pode chegar até a 70% da energia consumida no circuito no caso de somadores combinacionais (SHEN, 1992). Um esquema da geração e propagação de sinais espúrios é mostrado na Figura 2.1. Pode-se notar a geração de glitches na saída de uma porta e a propagação através de uma porta. (FAVALLI, 1995) Figura 2.1 – Esquema de contribuição de glitches para dissipação de potência Observa-se que o instante de chaveamento do sinal de entrada de uma porta pode causar níveis lógicos falsos em sua saída, contribuindo para a geração de glitches. A propagação destes sinais é uma função da profundidade lógica do circuito contribuindo fortemente para o aumento do consumo de potência. 2.2 Sumário Este capítulo apresentou as principais fontes de consumo de potência em circuitos digitais CMOS. Foram apresentadas as principais características das fontes de potência estática, de curto-circuito e dinâmica, bem como aspectos de consumo de potência devido à atividade de glitching Este estudo é importante, pois o principal foco deste trabalho é a redução do consumo de potência dinâmica em circuitos multiplicadores array, pela redução da atividade de chaveamento nos blocos dedicados de multiplicação e redução da atividade de glitching ao longo da estrutura array do multiplicador. A seguir são apresentados os principais operadores aritméticos somadores e multiplicadores explorados neste trabalho. 23 3 OPERADORES ARITMÉTICOS EFICIENTES Entre os operadores aritméticos, os circuitos multiplicadores são os mais comuns em muitas operações envolvendo multiplicação e acumulação (MAC), como os algoritmos da área de Processamento Digital de Sinais (DSP), por exemplo. Nos circuitos DSP, os multiplicadores são os responsáveis pela maior parte do consumo de potência (COSTA, 2002). Diante disto, apresenta-se o interesse na aplicação de técnicas que possam reduzir o consumo de potência dos circuitos multiplicadores. Novas arquiteturas de circuitos multiplicadores de baixa potência do tipo array, que operam em complemento de 2 na base 2 m , foram apresentadas em (COSTA, 2002). A principal característica destes novos multiplicadores é a redução da atividade de chaveamento e operação em diferentes codificações de dados. Outro aspecto a ser destacado é a regularidade dos circuitos, que facilita as suas implementações em layout. Neste trabalho o principal objetivo é a otimização dos circuitos multiplicadores apresentados em (COSTA, 2002). Para tal, são utilizadas técnicas que vão desde a utilização de circuitos somadores eficientes, tais como Carry Save (CSA) e compressores, até a otimização dos blocos dedicados de multiplicação, que permitem a operação de multiplicação na base 2m. Estes novos circuitos multiplicadores são comparados com o multiplicador estado da arte em termos de redução do consumo de potência, ou seja, multiplicador Booth Modificado (KHATER, 1996). A seguir são apresentadas as principais características do multiplicador array na base 2m. Também são mostrados alguns aspectos do multiplicador Booth Modificado (alvo de comparação dos multiplicadores array propostos neste trabalho), bem como as principais características dos somadores eficientes usados para a otimização dos circuitos multiplicadores. 3.1 Estado da Arte de Circuitos Multiplicadores Os circuitos multiplicadores para aplicações na área de DSP necessitam de alto desempenho, baixo consumo de potência e execução de operações de multiplicação com sinal. Neste contexto, os multiplicadores mais rápidos são os paralelos. Entre estes, os 24 multiplicadores Wallace (WALLACE, 1964) estão entre os mais rápidos. Entretanto, estes multiplicadores não apresentam boa regularidade, o que compromete os seus consumos de potência. Por outro lado, um multiplicador Booth (BOOTH, 1951) apresenta um bom aspecto de regularidade, além da redução das linhas de produtos parciais, o que representa o estado da arte em operações de multiplicação com aspecto de baixo consumo de potência. Devido à sua complexidade e grande utilização nos mais diversos algoritmos, uma grande quantidade de trabalhos de pesquisa têm sido desenvolvida, visando o projeto de eficientes e regulares arquiteturas de circuitos multiplicadores com operações em complemento de 2. Esquemas de multiplicação tais como bi-section (LU, 2004), Baugh- Wooley (BAUGH, 1973) e Hwang (HWANG, 1979) propõem a implementação de arquiteturas em complemento de 2, utilizando módulos repetitivos com padrões de interconexão uniformes. Entretanto, neste tipo de arquitetura não é permitida uma implementação eficiente, devido à forma irregular utilizada do tipo árvore-array. O mesmo aspecto da falta de regularidade na estrutura de multiplicação é observado em (PEKMESTZI, 1999), onde é apresentado um esquema de multiplicador baseado em multiplexador. Em (WANG, 2001) é observado um avanço desta técnica, onde a arquitetura exibe um layout mais regular do que o apresentado em (PEKMESTZI, 1999). Apesar da arquitetura apresentar reduções em área da ordem de 40%, só são observadas reduções em atraso e consumo de potência após a utilização de circuitos somadores mais eficientes. As técnicas descritas acima têm sido aplicadas a multiplicadores array convencionais, cuja operação é realizadabit a bit e algumas vezes a regularidade da arquitetura não é preservada. Um novo tipo de array para um multiplicador paralelo baseado em diferentes agrupamentos de bits de produtos foi proposto em (NAKAMURA, 1986). Neste trabalho, o esquema proposto necessita de aproximadamente metade das células quando comparado aos multiplicadores array convencionais. Apesar do bom desempenho apresentado, a complexidade do circuito aumenta consideravelmente devido aos circuitos contadores utilizados na unidade de adição. Para um multiplicador na base 4, por exemplo, faz-se necessária a utilização de 16 vezes mais hardware em relação a um multiplicador array binário convencional. 25 Para aumentar o desempenho dos multiplicadores, considerando aspectos de regularidade e redução do consumo de potência, têm sido propostos projetos de circuitos baseados na técnica de recodificação de Booth (SAM, 1990;MILAR, 1992; GALLACHER, 1994; CHERKAUER, 1996; SEIDEL, 2001). Nestes trabalhos são propostos multiplicadores Booth de alto desempenho baseados em operações em maiores bases de operação. Entretanto, estes circuitos exibem pouca regularidade e não são indicadas reduções no consumo de potência. Trabalhos de pesquisa direcionados a redução do consumo de potência a partir do multiplicador Booth, operando em bases maiores, são apresentados em (YU 2000a; GOLDOVISKY, 2000). Em (YU 2000a), propõe-se um multiplicador Booth tipo Carry- Save Array para baixa potência. Neste trabalho, mostra-se que é possível obter uma redução de 18% em potência. Entretanto, não é apresentada nenhuma melhora em termos de desempenho. Em (GOLDOVISKY, 2000), apresenta-se um multiplicador que utiliza codificadores Booth na base 4, que são otimizados para geração dos produtos parciais. São apresentados resultados com reduções de área, atraso e consumo de potência e com um esquema de codificação altamente otimizado no nível de transistores. Em (SHAH, 2000) há uma comparação entre cinco diferentes tipos de multiplicadores de 32 bits em diferentes métricas de desempenho. O multiplicador combinado Booth-Wallace modificado apresentou melhores resultados em atraso e consumo de potência entre os multiplicadores apresentados neste trabalho. De acordo com (GALLAGHER, 1994), apesar de o algoritmo Booth proporcionar uma maior simplicidade para a implementação da sua arquitetura, torna-se difícil projetar arquiteturas para operar em bases maiores do que 4, devido a complexidade em pré- computar, no termo multiplicador, um crescente número de múltiplos do termo multiplicando. EM (MILLAR, 1992; SEIDEL, 2001) são propostos multiplicadores Booth de alto desempenho baseados em operação em maiores bases. Entretanto, estes circuitos exibem pouca regularidade e não são indicadas reduções no consumo de potência. Em (COSTA, 2002; COSTA, 2002a), buscam-se os mesmos objetivos do multiplicador Booth, ou seja, alcançar melhores desempenhos e menores consumos de potência a partir da redução dos termos dos produtos parciais, mantendo-se a mesma regularidade de um multiplicador array. Nestes trabalhos, mostra-se que as novas 26 arquiteturas propostas podem ser estendidas a operações de multiplicação em bases maiores utilizando menos níveis lógicos e, desta forma, apresentando menos transições espúrias e menor consumo de potência. Este trabalho de dissertação de mestrado busca tornar ainda mais eficientes as arquiteturas de multiplicadores apresentadas em (COSTA, 2002) a partir da otimização dos diferentes módulos de multiplicação dedicados que compõem a sua estrutura array, além da utilização de circuitos somadores compressores que possibilitam uma grande redução nas linhas de produtos parciais. 3.2 Operação de Multiplicação na Base 2m em Complemento de 2 Nesta Seção é apresentado um resumo das principais características do multiplicador array na base 2m proposto em (COSTA, 2002). Esta arquitetura apresenta como principais características a realização de operações em complemento de 2 e a característica de apresentar a mesma regularidade de um multiplicador array convencional. Para operações de uma multiplicação na base 2 m , os operandos são divididos em grupos de m bits. Cada um destes grupos pode ser visto como uma representação de um digito em um base 2 m . Conseqüentemente, a arquitetura de multiplicação na base 2 m segue a operação de multiplicação básica de números representados na base 2 m . A operação nesta base, em representação em complemento de 2, é mostrada na Equação 3.1. ∑ − = +− − − − − −−×=× 1 0 1 1 1 11 22'' W j jW jW W m Ww babbABABA (3.1) A Figura 3.1 ilustra uma operação com operadores de W = 4 bits na representação binária utilizando a base 4 (m = 2). Para o exemplo mostrado, os termos do produto parcial são obtidos pela multiplicação de cada grupo de m bits dos termos multiplicador e multiplicando. Desta forma, cada linha do produto parcial é processada para uma 27 multiplicação m x W. Nesta Figura, observam-se três tipos de multiplicação representados por Tipo I, Tipo II e Tipo III. Estes módulos são mostrados na Figura 3.2. Fig. 3.1 Exemplo de multiplicação de 4 bits base-4(m=2) em complemento de 2 Fig. 3.2 Estrutura geral para multiplicação na base 2 m em complemento de 2 Para os W – m bits menos significativos dos operandos podem ser usadas multiplicações sem sinal. Os módulos do Tipo I são os módulos sem sinal. Módulos Tipo II executam operações de um número sem sinal por um número em complemento de 2. Finalmente, o módulo Tipo III (operações de multiplicação em complemento de 2) é requerido para qualquer tipo de multiplicação. Na Figura 3.3 apresenta-se um exemplo concreto para uma multiplicação na base 4 (m = 2) e uma largura W = 8 bits. As estratégias utilizadas neste trabalho, propõem a otimização dos blocos de multiplicação Tipo I, Tipo II e Tipo III e a redução do número de linhas de produtos parciais para a redução do caminho crítico dos circuitos multiplicadores. 28 Figura 3.3 - Exemplo de multiplicador array base 4 de 8 bits em complemento de 2 3.3 Multiplicador Booth Modificado Nesta Seção apresenta-se uma revisão sobre os aspectos de multiplicação do algoritmo Booth Modificado. Este algoritmo tem um melhor desempenho do que o 29 algoritmo Booth original, pois opera na codificação na base 4, enquanto que o algoritmo Booth original opera na base 2. No Booth Modificado são gerados sinais de controle (0, +MD, +2MD, -MD e - 2MD) , sendo MD é o termo multiplicando, a partir do operando do multiplicador para cada grupo de 3 bits, como mostra o exemplo da Figura 3.4 para uma operação de 8 bits. Figura 3.4 - Exemplo de multiplicação de 8 bits usando o algoritmo Booth Modificado Um circuito multiplexador produz os produtos parciais, de acordo com o sinal de controle codificado. Como se pode observar no exemplo da Figura 3.4, para reduzir o número de produtos parciais no multiplicador Booth Modificado (KHATER, 1996), realiza- se uma operação em grupos de 3 bits no termo multiplicador (MR). Este termo é verificado de 2 em 2 bits com sobreposição do terceiro bit. No algoritmo, considera-se um valor zero virtual a direita do bit menos significativo. No algoritmo Booth também é utilizada a técnica de extensão de sinal, para manter a regularidade da arquitetura (HWANG, 1979). A Figura 3.5 apresenta a arquitetura de um multiplicador Booth Modificado de 8 bits. 30 Figura 3.5 - Exemplo de arquitetura Booth Modificado de 8 bits Como pode ser visto na Figura 3.5, são necessários quatro circuitos operandos para o cálculo dos termos dos produtos parciais. Esses circuitos são compostos por umcodificador e um multiplexador, que produzem o termo multiplicando de acordo com os 3 bits no termo multiplicador (MR). Os termos do produto parcial são deslocados pelos circuitos somadores, que são também utilizados para produzir o resultado final. Observa-se que as células Booth básicas não são simples circuitos somadores, como nas arquiteturas array na base 2m. Ao contrário, as células do multiplicador Booth têm que realizar operações de soma, subtração e deslocamento a esquerda dos bits do termo multiplicando. Esta complexidade torna difícil a implementação de arquitetura Booth em bases maiores do que 4. 3.4 Somador do tipo Carry Save Adder (CSA) O somador Carry Save (CSA) (KIM, 1998) tem a característica de efetuar a soma de três números simultaneamente. A idéia básica é que três números possam ser reduzidos para dois, como um compressor 3:2, como mostra o exemplo da Figura 3.6. 31 Figura 3.6 - Exemplo de um somador Carry Save Como pode ser observado na Figura 3.6, somente na recombinação do carry com a soma é utilizado um somador onde o carry é propagado. Apenas na última linha de soma é que existe a propagação normal do carry a partir da utilização de somadores do tipo Ripple Carry. A Figura 3.7 mostra um exemplo de adição de seis números usando o somador Carry Save (IMPERIAL, 2004) Fig. 3.7 Exemplo de soma de números de 4 bits usando a estrutura Carry Save Como é mostrado na Figura 3.7, o somador Carry Save é apresentado como um bloco com três entradas e duas saídas. Neste caso, os somadores completos (full-adder) não dependem de outras somas para efetuar sua operação. Cada somador recebe três números e 32 produz dois como saída, tal que RQPSC ++=+∗2 . De fato, pode-se então converter o problema de computação RQP ++ para SC +∗2 sem esperar carry algum. Os módulos x2 mostrados na Figura 3.7 não requerem lógica adicional, sendo somente necessário a conexão apropriada dos blocos. A soma final M + 2N representa uma soma normal de dois números. O somador Carry Save se torna bastante rápido devido ao fato de simplificar as saídas de carry ao invés de propagar para a esquerda. Neste trabalho, este somador é utilizado na otimização dos blocos dedicados de multiplicação na base 2m . 3.5 Circuitos Somadores Compressores Um dos objetivos deste trabalho é a aplicação de circuitos somadores eficientes nas linhas de produtos parciais dos multiplicadores array para a aceleração da propagação de carry ao longo das suas estruturas. Neste contexto, os circuitos compressores aparecem na literatura como estruturas eficientes para a operação de soma, pois estes circuitos possuem a capacidade de adicionar números com a mínima propagação de carry. Em (WEINBERGER, 1981) foi apresentada uma estrutura de soma de números chamada “4-2 Carry-Save module" na qual era possível a realização da soma simultânea de quatro números. Esta estrutura foi posteriormente aperfeiçoada por (OKLOBDZIJA, 1996). Esta estrutura contém uma combinação de células de somadores completos em conexão truncada na qual possibilita uma rápida compressão dos produtos parciais. Como mostra a Figura 3.8a, um compressor 4:2 possui cinco entradas e três saídas. (a) (b) Figura 3.8 – Estrutura de um circuito somador compressor 4:2 33 As cinco entradas e a saída da soma possuem o mesmo peso (j), e as saídas Cout e Carry possuem peso maior (j+1). Além disto, a saída Cout não é função de Cin. Com isto não ocorre a propagação do carry. Para esta implementação as saídas da soma, do carry intermediário e do carry (Carry) de saída (Cout) são expressas pelas Equações 3.2, 3.3 e 3.4 (PARHAMI, 1999). ( )[ ][ ] inCDCBAS ⊕⊕⊕⊕= (3.2) CBCABACout ... ++= (3.3) ( )[ ]( ) inin CDCDCBACarry .. ++⊕⊕= (3.4) O compressor 4:2 descrito pelas equações acima possui um caminho critico dado pela soma dos atrasos de quatro portas lógicas XOR conectadas em série, como mostra a Equação 3.2. A Figura 3.8b mostra que este compressor pode ser implementado utilizando dois somadores completos (full adders) em série, o que reforça o caminho crítico composto pelas 4 portas lógicas XOR. Tabela 3.1 - Tabela verdade de um compressor 4:2 Cin=0 Cin=1 A B C D Cout Carry Sum Cout Carry Sum 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 0 0 0 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 0 1 1 0 1 0 0 1 0 1 0 1 1 1 1 0 1 1 1 0 1 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 0 0 1 1 1 0 1 0 1 0 0 1 0 1 1 0 1 1 1 0 1 1 1 0 1 1 0 0 1 0 0 1 0 1 1 1 0 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 34 A Tabela verdade de um compressor 4:2 é mostrada na Tabela 3.1. De fato, o resultado de uma operação de soma usando compressor 4:2 será dado por: S+2(Cout + Carry). Como pode ser visto em um exemplo da Tabela 3.1, com todos os valores de entrada em nível lógico 1 (inclusive o termo Cin), o resultado será dado por 111 que é equivalente a: [1+2(1+1)]=5. Um aperfeiçoamento na estrutura de um circuito compressor 4:2, usando multiplexador é mostrado na Figura 3.9 (OKLOBDZIJA, 1996). Esta estrutura possui um caminho critico com seu valor de atraso máximo dado por três portas XOR, o que representa um caminho crítico menor do que o mostrado na estrutura da Figura 3.8. Outra vantagem deste tipo de estrutura é o fato de que o circuito multiplexador pode ser otimizado no nível de transistores utilizando portas de transmissão. (PRASAD, 2001; JIANG, 2004; RADHAKRISHNAN, 2000; GOPINEEDI, 2006) Figura 3.9 - Um compressor 4:2 baseado em multiplexador No capítulo 5 será mostrado o efeito da utilização destes circuitos compressores para a redução do número de linhas de produtos parciais dos multiplicadores array na base 2m. Além disto, será mostrada a extensão do circuito compressor 4:2 para módulos de operação 8:2 e 16:2. 35 3.6 Sumário Neste capitulo foram apresentados os principais operadores aritméticos abordados neste trabalho. Foram apresentadas revisões dos multiplicadores array na base 2m de (COSTA, 2002) e multiplicador Booth Modificado. Também foram apresentadas as principais características dos somadores Carry Save e Compressor 4:2. A extensão do circuito compressor para estruturas maiores 8:2 e 16:2, bem como a utilização destes somadores eficientes no multiplicador array na base 2m será apresentado no capítulo 5. 36 4. OTIMIZAÇÕES NOS BLOCOS DE MULTIPLICAÇÃO NA BASE 2m Como visto anteriormente, os multiplicadores array na base 2m agregam em seus operandos três tipos de multiplicadores dedicados (Tipo I, Tipo II e Tipo III), que variam de acordo com o tipo de operação realizada (multiplicações sem sinal e com sinal). A Figura 4.1 mostra um exemplo de operando (operando I) com multiplicadores do Tipo I e Tipo II. Figura 4.1 – Exemplo de estrutura do Operando I O bloco mais básico de multiplicação dos multiplicadores array na base 2m é o bloco que opera na base 4 (m=2). Este bloco pode ser facilmente otimizado, tendo-se poucas portas lógicas compondo o seu circuito. Para o bloco Tipo I, por exemplo, apenas oito portas lógicas são necessárias para a sua implementação e a sua estrutura pode ser vista na Figura 4.2. Os blocos de multiplicação Tipo II e Tipo III apresentam praticamente o mesmo nível de complexidade. Figura 4.2 - Representação do bloco Tipo I de multiplicação m=2 37 Embora os blocos que operam na base 4 sejam facilmente obtidos, esta mesma característica não se aplica para operações em bases maiores do que quatro, onde o maior número de entradas dos blocos de multiplicação dificultam otimizações manuais a partir de mapas de Karnaugh (como é realizado para blocos m=2). Em (COSTA, 2002) osblocos de multiplicação dedicados na base 16 (m=4) são gerados automaticamente pela ferramenta SIS. Um arquivo texto com todas as entradas e saídas em PLA (Programmable Logic Arrays) é sintetizado na ferramenta SIS. Este arquivo é mapeado em portas lógicas através de uma biblioteca (mcnc.genlib) e finalmente convertido para o formato BLIF (Berkeley Logic Interchange Format). A Tabela 4.1 mostra resultados de área, atraso e consumo de potência para um multiplicador array na base 4 utilizando blocos de multiplicação dedicados m=2. Nesta Tabela, são mostrados resultados considerando blocos sintetizados na ferramenta SIS a partir de descrição em PLA (Original) e considerando blocos otimizados a partir de mapas de Karnaugh (Otimizado) (COSTA, 2002). Esta comparação é realizada para mostrar a eficiência do processo de otimização dos blocos de multiplicação dedicados. Os resultados mostrados na Tabela 4.1, e nas demais tabelas deste trabalho, são obtidos na ferramenta SIS (área e atraso) e na ferramenta SLS (potência). Os multiplicadores são todos descritos no formato BLIF. O resultado de área representa o número de literais, onde cada literal corresponde a dois transistores. O atraso é dado de acordo com o atraso de cada porta lógica presente no caminho crítico do multiplicador. A potência média é obtida na ferramenta SLS, na tecnologia fishbone de 1.2 micrometros, onde se torna possível verificar a atividade de glitching do circuito, visto que nesta ferramenta a estimação de potência é realizada no nível de transistores. Para a estimação de potência são utilizados vetores randômicos de 10000 pontos para todos os multiplicadores apresentados neste trabalho. Este número de pontos é utilizado, pois representa um bom compromisso para a estimação de potência, como apresentado em (COSTA, 2002). Como pode ser observado na Tabela 4.1, o multiplicador de 16 bits que utiliza blocos de multiplicação dedicados otimizados a partir de mapas de Karnaugh apresentam os melhores resultados de área, atraso e consumo de potência. Embora este resultado aponte para um caminho natural de otimizações para maiores bases, sem a síntese automática a partir da ferramenta SIS, torna-se difícil a otimização destes blocos para bases maiores a 38 partir do uso de mapas de Karnaugh. Desta forma, surge a motivação deste trabalho, cujo desafio a ser superado é a utilização de técnicas que possam otimizar os blocos de multiplicação para grupos de multiplicação maiores do que m=2. Tabela 4.1 - Resultados para multiplicadores m=2 Multiplicador 16 bits Métricas Original Otimizado Diferença Otim. vs. Orig. (%) Área (literais) 5678 4602 -18,95 Atraso (ns) 231,70 227,80 -1,68 Potência (mW) 282,70 241,40 -14,61 A seguir são mostradas as técnicas de otimização dos blocos de multiplicação. Na primeira parte são mostradas três diferentes técnicas aplicadas ao bloco de multiplicação m=4 e os resultados são comparados com o multiplicador apresentado em (COSTA, 2002). A seguir, a técnica que apresenta o melhor resultado é aplicada a blocos de multiplicação de diferentes bases, cujos resultados são apresentados e comparados. 4.1 Técnicas para otimizações dos blocos de multiplicação m=4 As técnicas de otimização apresentadas nesta Seção levam em consideração três diferentes estratégias de implementação do bloco de multiplicação Tipo I na base 16 (m=4) (PIEPER, 2008). Estas técnicas são naturalmente estendidas para os blocos do Tipo II e Tipo III. 4.1.1. Otimização usando blocos de multiplicação m=2 e somadores RCA Nesta primeira alternativa o bloco de multiplicação na base 16 (m=4) utiliza na sua estrutura, o bloco de multiplicação mais simples m=2. Os somadores do tipo Ripple Carry (RCA) formam uma estrutura em árvore para a composição do bloco de multiplicação, como mostra a Figura 4.3(b). 39 Figura 4.3 - Bloco de multiplicação (m=4) Tipo I composto por blocos m=2 e RCA Um exemplo de multiplicação de dois números A e B sem sinal é mostrado na Figura 4.3(a). São utilizados três tipos de somadores, ou seja, somador completo (FA – Full Adder), meio somador (HA – Half Adder) e um somador mais simples (representado por 2:1 na Figura 4.3), que faz a operação de soma do carry anterior com os dois bits do operando. As letras utilizadas ao lado dos somadores são identificadores para os blocos utilizados na Figura 4.3(b). Como pode ser visto na Figura 4.3(b), dois bits são multiplicados de uma vez e grupos de dois bits das linhas parciais são somados para se obter o resultado final. Uma última linha de somadores, do tipo RCA, faz a soma final dos resultados parciais obtidos nas somas anteriores. Como pode ser observado na Figura 4.3(b), somente um somador completo, três meio-somadores e três somadores 2:1 são necessários para implementar a soma da linhas dos produtos parciais. Neste bloco, o caminho crítico é composto pela soma dos atrasos de um bloco de multiplicação (m=2) do Tipo I, um somador completo, dois meio somadores e um somador 2:1, como pode ser observado através da linha pontilhada da Figura 4.3(b). 4.1.2. Otimização usando blocos de multiplicação m=2 e somadores CSA 40 Nesta alternativa, utilizam-se os mesmos blocos de multiplicação da base 4 (m=2) para compor o bloco de multiplicação do Tipo I na base 16. Porém, utiliza-se nesta alternativa, o somador CSA (Carry Save Adder) para a soma das linhas parciais. Neste somador, três números são somados simultaneamente, como mostrado anteriormente na Seção 3.4. Em (FONSECA, 2005), os somadores CSA foram aplicados às linhas de produtos parciais do multiplicador array na base 2m. Foram mostradas reduções de área, atraso e potência no multiplicador, quando do uso de CSA. Neste trabalho, os somadores CSA são utilizados para a composição da árvore de somas do módulo de multiplicação dedicado m=4. A Figura 4.4(a) mostra um exemplo de multiplicação de dois números sem sinal com a respectiva indicação das somas dos produtos parciais gerados por cada bloco de multiplicação na base 4. Pode-se notar que usando CSA três números podem ser somados simultaneamente. A idéia básica é que estes três números possam ser reduzidos a dois, como um compressor 3:2, mantendo os resultados da soma e do carry separados. Uma última linha de soma do tipo RCA é responsável pela recombinação dos termos de soma e carry gerados pela árvore de somadores CSA. A Figura 4.4(b) mostra o uso do somador CSA na estrutura interna do bloco de multiplicação na base 16. Figura 4.4 - Bloco de multiplicação (m=4) Tipo I composto por blocos m=2 e CSA 41 Como pode ser visto pela linha pontilhada da Figura 4.4(b), o caminho critico desta técnica é composto pela soma dos atrasos de um bloco de multiplicação (m=2) do Tipo I, um bloco de soma CSA, um meio somador e um somador completo. O fato de usar CSA faz com que haja um bloco a menos de soma no caminho crítico em relação à técnica anterior. 4.1.3. Uso de blocos de multiplicação dedicados 4:2 e RCA Nesta alternativa, utiliza-se um bloco de multiplicação dedicado 4:2 para a composição do bloco de multiplicação m=4. Devido ao maior número de entradas deste bloco (6 entradas), foi utilizada uma metodologia similar à aplicada ao bloco original na base 16, ou seja, a síntese automática do bloco de multiplicação dedicado 4:2 do Tipo I através de uma descrição PLA. O bloco gerado é menos complexo do que um bloco de multiplicação 4:4, pois este apresenta 44 portas lógicas contra as 385 portas lógicas de um módulo de multiplicação 4:4. O exemplo de multiplicação de dois números sem sinal é mostrado na Figura 5.5(a). Figura 4.5 - Bloco de multiplicação (m=4) Tipo I composto por blocos de multiplicação 4:2 Comopode ser observado na Figura 4.5(b), a partir do uso de blocos de multiplicação dedicados 4:2, torna-se necessário apenas uma linha de somadores do tipo RCA para a soma dos produtos parciais. 42 O caminho crítico desta alternativa é composto por um bloco de multiplicação 4:2 e uma linha de somadores RCA como é mostrado na linha pontilhada da Figura 4.5(b). Como também deve ser observado nesta Figura, utiliza-se um bloco de soma dedicado (FA – 3 bit) para a soma simultânea de operandos de 3 bits. 4.1.4. Análise Comparativa Nesta Seção, observam-se resultados de área, atraso e consumo de potência de um multiplicador array na base 16 (m=4) de 16 bits utilizando as três alternativas para o bloco de multiplicação na base 16 do Tipo I. Os multiplicadores com as três alternativas são comparados ao multiplicador original, ou seja, o bloco de multiplicação 4:4 que é obtido a partir da descrição em PLA e síntese automática na ferramenta SIS. Os principais resultados são mostrados na Tabela 4.2. Tabela 4.2 - Resultados de Área, atraso e potência para multiplicadores array de 16 bits na base 16 Alternativa Área % Atraso (ns) % Potência (mW) % original 15932 -- 234,0 -- 214,09 -- m=2 e RCA 7544 -52,65 204,8 -12,47 189,94 -11,28 m=2 e CSA 8612 -45,94 199,3 -14,83 190,42 -11,05 blocos 4:2 dedicados 7664 -51,89 200,3 -14,40 200,37 -6,41 Como pode ser observado na Tabela 4.2, os multiplicadores array que utilizam as três alternativas propostas neste trabalho apresentam menores valores de área em relação à versão original do multiplicador. Isto ocorre devido ao fato das três alternativas usarem blocos de multiplicação dedicados mais simples. Também pode ser observado na Tabela 4.2 que a primeira alternativa (m=2 e RCA) apresenta a menor área entre as alternativas analisadas. Isto devido ao fato desta estrutura utilizar blocos de multiplicação na base 4 e somadores simples do tipo RCA. Apesar do multiplicador com a segunda alternativa (m=2 e RCA) apresentar maior área, este multiplicador apresenta o menor valor de atraso entre as estruturas estudadas, como pode ser observado na Tabela 4.2. Isto ocorre devido a esta alternativa usar blocos simples de multiplicação na base 4 e utilizar somadores CSA que são mais eficientes do que os somadores RCA, como é mostrado em (PIEPER, 2007). O uso do somador CSA no 43 bloco de multiplicação da base 16 contribui para a redução da propagação de carry dentro da estrutura, pois este transfere o carry na diagonal, como foi mostrado na Seção 3.4, resultando assim na redução do caminho critico do circuito. De acordo com a Tabela 4.2, as três alternativas são mais eficientes em termos de atraso do que a estrutura original. Na verdade, foi observado que a complexidade do bloco original contribui para o aumento do caminho critico na sua estrutura interna, o que lhe confere maior valor de atraso, como mostrado na Tabela 4.2. Como também pode ser observado na Tabela 4.2, os multiplicadores array binários usando as três novas alternativas são mais eficientes em termos de consumo de potência quando comparados com a estrutura original. Isto ocorre devido a estas três novas estruturas apresentarem blocos mais simples e estruturas regulares as quais contribuem para uma menor atividade de glitching dentro dos blocos de multiplicação. Em particular, o multiplicador com a técnica m=2 e somador RCA no bloco dedicado de multiplicação é o que apresenta a menor potência. Entretanto, deve-se observar que a diferença para a segunda alternativa, que utiliza a técnica m=2 e somador CSA não é significativa. De fato, quando se observa o produto atraso potência (PDP – Power Delay Product), observa-se que a segunda alternativa é a que oferece a melhor relação, como pode ser observado na Tabela 4.3. Desta forma, de acordo com os resultados apresentados na Tabela 4.3, define-se a segunda alternativa como a selecionada para a utilização em outros multiplicadores com diferentes tamanhos de grupos de m bits, ou seja, operação em diferentes bases. Tabela 4.3 – Produto atraso-potência (AP) Alternativa Produto atraso-potência(ns.mW) (%) original 50097,06 -- m=2 e RCA 38899,71 -22,35 m=2 e CSA 37950,71 -24,24 blocos 4:2 dedicados 40134,11 -19,88 4.2 Aplicação da segunda técnica (m=2 e CSA) a diferentes valores de m De acordo com que foi mostrado na Seção anterior, conclui-se que as três alternativas propostas são mais eficientes em termos de área, atraso e consumo de potência para o multiplicador array binário de 16 bits comparando com a estrutura original. 44 Figura 4.6 - Exemplo completo de multiplicação de 8 bits m blocos m=4 otimizados Tipo I, Tipo II e Tipo III 45 Sendo que a segunda alternativa demonstrou o melhor resultado na relação atraso versus consumo de potência. Desta forma, esta técnica é também aplicada a blocos de multiplicação do Tipo II e III que são partes integrantes do bloco operando II do multiplicador array. Também, esta técnica é aplicada a diferentes tamanhos de multiplicadores (16, 32 e 64 bits) com diferentes grupos de m bits. A Figura 4.6 mostra a segunda alternativa de otimização aplicada aos blocos de multiplicação Tipo I, Tipo II e Tipo III, para um exemplo de multiplicação de 8 bits (A=-1 x B=-1). Observa-se que esta técnica pode ser facilmente aplicada aos três blocos de multiplicação, tendo-se o mesmo caminho crítico para os três blocos, sendo este composto por um bloco de multiplicação m=2, um somador CSA, um FA, um HA. As linhas parciais são obtidas a partir de blocos de multiplicação dedicados de 4 bits (m=4). A principal diferença entre as operações está na extensão de sinal que se faz necessária nos blocos de multiplicação Tipo II e Tipo III, pois estes operam com números com sinal. A partir da otimização do bloco m=4 com a segunda alternativa proposta, pode-se naturalmente estender esta técnica para diferentes blocos de multiplicação. No caso do bloco na base 256 (m=8), pode-se obtê-lo a partir da utilização dos blocos m=4, já previamente otimizados, como mostra o exemplo da Figura 4.7, para um exemplo de multiplicação de 16 bits sem sinal. Nota-se a hierarquia possível na implementação de blocos com diferentes valores de m. Na verdade, a partir de estruturas mais simples, pode-se implementar estruturas mais complexas. No exemplo da Figura 4.7, um módulo m=8 pode ser obtido a partir de uma árvore de blocos m=4, que por sua vez são construídos a partir de blocos mais simples m=2. Esta característica abre uma perspectiva de exploração de espaço de projeto, onde diferentes alternativas podem ser testadas antes da implementação final do circuito. Neste caso, a técnica pode ser adaptada para diferentes valores de m, como mostra a Tabela 4.4. 46 Figura 4.7 - Exemplo de uma multiplicação de 16 bits com blocos de multiplicação m=8 otimizados A Tabela 4.4 mostra também as diferentes possibilidades de implementação de blocos de multiplicação a partir de blocos previamente otimizados. Na primeira coluna da Tabela são indicados os valores dos blocos de multiplicação dedicados a serem implementados. A segunda coluna representa o número de otimizações que foram implementadas para cada valor de m. Finalmente, a terceira coluna da tabela mostra o tipo de otimização que utiliza os blocos previamente implementados. Tabela 4.4 - Possibilidades de otimizações dos blocos de multiplicação Valor de m Número de Otimizações Característica 3 1 Otimizado 1: bloco m=2 otimizado + blocos dedicados 1:2 Otimizado 1: blocos m=2 otimizado 4 2 Otimizado 2: bloco m=3 otimizado + blocos dedicados 1:3 Otimizado 1: bloco m=4 + blocos dedicados 1:4 5 2 Otimizado 2: bloco m=3 otimizado + bloco m=2 otimizado Otimizado
Compartilhar