• Nenhum resultado encontrado

Circuitos Multiplicadores Array de Baixo Consumo

N/A
N/A
Protected

Academic year: 2021

Share "Circuitos Multiplicadores Array de Baixo Consumo"

Copied!
47
0
0

Texto

(1)

PROGRAMA DE PÓS-GRADUACÃO EM INFORMÁTICA

Circuitos Multiplicadores Array de Baixo Consumo

por

Leandro Zafalon Pieper

Trabalho Individual I

TI-2007-1-01

Orientador: Prof. Dr. Eduardo Antônio César da Costa

Co-orientador: Prof. Dr. Sérgio José Melo de Almeida

(2)

AGRADECIMENTOS

Presto meus agradecimentos a todos que de alguma forma contribuíram de forma direta ou indireta para a conclusão deste trabalho.

Aos meus colegas de laboratório, meu sincero obrigado, por sua companhia e auxílio.

Agradeço também a minha mãe e a minha namorada pelo incentivo dado.

Um especial agradecimento aos meus professores, orientador Eduardo Antônio César da Costa e co-orientador Prof. Sérgio José Melo, pelo incentivo e ajuda. Saibam todos 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

2 POTÊNCIA E ATRASO EM CIRCUITOS CMOS... 13

2.1 Fontes de Consumo de Potência em Circuitos CMOS ... 14

2.1.1 Consumo de Potência de Curto-Circuito... 15

2.1.2 Consumo de Potência Estática... 15

2.1.3 Consumo de Potência Dinâmica... 16

2.1.4 Consumo de Potência pela Atividade de Glitching... 17

2.2 Análises de Atraso em Circuitos CMOS... 18

2.2.1 Análise Estática de Atraso... 18

2.2.2 Análise de Folga Temporal... 19

2.2.3 Análise Dinâmica do Atraso... 19

3 ARQUITETURAS DEDICADAS DE CIRCUITOS MULTIPLICADORES DE BAIXO CONSUMO ... 20

3.1 Estado da Arte de Circuitos Multiplicadores... 20

3.2 Multiplicador Array Binário ... 23

3.2.1 Operação de Multiplicação na Base 2m em Complemento de 2... 24

3.2.2 Multiplicador Array Binário Usando CSA e Pipeline... 26

3.3 Multiplicador Híbrido... 31

3.3.1 Codificação de Operandos... 31

3.3.2 Código Híbrido... 32

3.3.3 Multiplicação Híbrida em Complemento de 2 ... 34

3.3.4 Multiplicador Array Híbrido usando CSA e Pipeline ... 35

4 RESULTADOS OBTIDOS... 37

4.1 Resultados de Área ... 37

(4)

4.3 Resultados de Potência... 40 5 CONCLUSÕES... 42 REFERÊNCIAS ... 43

(5)

LISTA DE FIGURAS

Figura 1 Metodologia para estimativa de área, atraso e potência dos circuitos... 13

Figura 2 Esquema de contribuição de glitches para dissipação de potência... 18

Figura 3 Multiplicador Array Binário de 4 bits ... 23

Figura 4 Exemplo de multiplicação de 4 bits base-4(m=2) em complemento de 2. ... 25

Figura 5 Estrutura geral para multiplicação na base 2m em compl. de 2 ... 25

Figura 6 Ex. de multiplicador array base 4 de 8 bits em compl. de 2... 26

Figura 7 Ex. de um somador Carry Save ... 27

Figura 8 Ex. de soma de números de 4 bits usando a estrutura Carry Save ... 27

Figura 9 Ex. de multiplicação de 6 bits em compl. de 2 usando CSA... 28

Figura 10 Ex. de multiplicador array de 8 bits em compl. de 2 base-4 usando CSA ... 29

Figura 11 Ex. de multiplicador array de 8 bits na base 4 em compl. de 2 com pipeline ... 30

Figura 12 Conversão entre os códigos Binário e Híbrido... 34

Figura 13 Ex. de uma mult. de 4 bits na base 4 (m=2) em compl. de 2 com cód. Híbrido 35 Figura 14 Ex. de multiplicação híbrida de 6 bits em compl. de 2 usando CSA ... 35 Figura 15 Ex. de multiplicador Híbrido de 8 bits na base 4 em compl. de 2 usando CSA 36

(6)

LISTA DE TABELAS

Tabela 1 Representação dos códigos Binário, Híbrido (m=2) e Gray em compl. de 2 .... 33

Tabela 2 Número de transições para os códigos Binário, Híbrido (m=2) e Gray ... 33

Tabela 3 Valores de área para os multiplicadores (elementos lógicos)... 38

Tabela 4 Valores de atrasos para os multiplicadores... 39

Tabela 5 Valores de consumo de potência utilizando vetores senoidais (Dinâmico) ... 40

(7)

LISTA DE ABREVIATURAS E SIGLAS

ASICs Circuito de Aplicação Específica

CMOS Complementary Metal Oxide Semiconductor CSA Carry Save Adder

DSP Digital Signal Processing FPGA Field Programmable Gate Array MAC Multiplicador Somador Acumulador

NMOS Negative Channel Metal Oxide Semiconductor PMOS Positive Channel Metal Oxide Semiconductor RCA Ripple Carry Adder

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, a técnica de codificação de operandos e a técnica de redução do caminho crítico usando pipeline. 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 na base 4 (m=2) e na base 16 (m=4), 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 em FPGA, onde circuitos multiplicadores de 16 bits são comparados em termos de parâmetros de área, atraso e consumo de potência. As diferentes arquiteturas de circuitos multiplicadores exploradas neste trabalho visam as suas aplicações em circuitos dedicados para implementação de algoritmos adaptativos usados na filtragem digital de sinais. Como parte integrante deste trabalho, apresenta-se uma revisão bibliográfica sobre o estado da arte de técnicas de redução de consumo de potência em diferentes topologias de circuitos multiplicadores.

(9)

Title: “Low-Power Array Multipliers Circuits”

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, operand encoding and critical path reduction by using pipelining approach. 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 the radix-4 (m=2) and radix-16 (m=4), leading to a reduction in the number of partial product lines, enabling higher performance and power reduction in the multipliers. Area, delay and power consumption results are presented for the multipliers using Quartus II FPGA Synthesis tool. In this work we intend to apply the dedicated multiplier architectures in the implementation of adaptive algorithms for digital signal filtering. As part of this work, it is presented a related work emphasizing the state of the art of the main low power techniques applied to different types of multiplier circuits.

(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, a ênfase crescente no projeto de circuitos integrados de baixa potência em sistemas de alto desempenho 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 com diferentes grupos de bits utilizando eficientes estruturas de circuitos somadores e a técnica de redução do caminho crítico usando pipeline. As novas arquiteturas de circuitos multiplicadores foram implementadas em FPGA (Field Programmable Gate Array) 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 nas arquiteturas de multiplicadores.

As novas arquiteturas de circuitos multiplicadores propostas serão testadas em estruturas dedicadas de filtragem adaptativa (HAYKIN, 2002). A técnica de filtragem adaptativa é aplicada atualmente em um grande número de problemas de engenharia. Por exemplo, esta técnica tem sido explorada com sucesso em diversos sistemas de comunicação, tais como adaptação de antenas, equalizadores de canais para transmissão de dados, cancelamento de eco em telefonia de longa distância, cancelamento de interferência, estimação espectral, análise e síntese de voz e, dentre as aplicações mais recentes, no cancelamento de eco acústico. Nestas mais diversas aplicações, a redução do consumo de potência é um fator importante a ser explorado. Desta forma, neste trabalho uma das maneiras de exploração da redução do consumo de potência em filtragem adaptativa é a

(11)

aplicação de novas arquiteturas de circuitos multiplicadores que possam atuar de forma eficiente neste processo de filtragem.

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 técnica de redução do caminho crítico usando pipeline.

Neste trabalho os diferentes circuitos multiplicadores são testados e validados nos níveis FPGA (PHILLIPS, 1996), a partir das ferramentas Quartus II da Altera (ALTERA, 2007).

1.2 Objetivos

O principal objetivo deste trabalho é implementar e analisar o desempenho de diferentes arquiteturas de multiplicadores digitais de 16 bits presentes na literatura. São investigados 2 diferentes tipos de multiplicadores paralelos, sendo estes chamados array Binário e array Híbrido (COSTA,2002). O uso de somadores eficientes do tipo Ripple Carry (RCA) (HARTLEY, 1995) e Carry Save (CSA) (KIM, 1998) nas linhas de produtos parciais e usando a técnica pipeline para aumento de desempenho dos multiplicadores também é 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 (m = 2 – multiplicação na base 4 e m = 4 – multiplicação na base 16).

(12)

As arquiteturas destes operadores aritméticos estão apresentadas em (COSTA, 2002) e são exploradas neste trabalho, assim como novas arquiteturas são analisadas.

Neste trabalho é explorado o aspecto da regularidade apresentado pelas novas arquiteturas de multiplicadores array. Nesta proposta trabalho este aspecto é levado em consideração a partir da implementação destas arquiteturas no nível FPGA onde os resultados são obtidos para um determinado componente da família Stratix da fabricante Altera, através da ferramenta Quartus II. Uma pesquisa bibliográfica foi realizada nos multiplicadores do estado da arte onde são analisadas as topologias utilizadas nestes circuitos para aumento de desempenho, assim como as técnicas para reduzir o consumo de potência.

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 (WEST, 1994).

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.

A descrição dos circuitos é realizada no formato VHDL (VHSIC – Very High Speed Integrated Circuits – Hardware Description Language) (RUSHTON, 1998). Com este formato é realizada a síntese e simulação dos circuitos por intermédio do programa Quartus II que utiliza componentes FPGA da fabricante Altera. Os resultados de área, atraso e potência são obtidos no próprio ambiente para o componente FPGA EP1S10B67C6 da família Stratix.

(13)

Figura 1 – Metodologia para estimativa de área, atraso e potência dos circuitos

Com esta metodologia, pode-se comparar os resultados obtidos no nível lógico em (COSTA, 2002) com os resultados obtidos no nível FPGA. Para tal, utiliza-se o mesmo conjunto de vetores de entrada dos multiplicadores para se ter uma comparação justa entre os resultados de consumo de potência obtidos. Neste trabalho foram utilizados 100 vetores senoidais e aleatórios. A principal característica explorada nos vetores senoidais é o impacto da correlação dos dados no consumo de potência. Também se explora a característica de aleatoriedade dos sinais no consumo de potência.

2. Potência e Atraso em Circuitos CMOS

Neste capítulo serão abordados os aspectos de consumo de potência e atraso de propagação em circuitos CMOS (Complementary Metal Oxide Semiconductor). Serão apresentados alguns conceitos que envolvem as principais fontes de consumo de potência e atraso 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. Aquecimento e temperatura estão diretamente relacionados com a potência média (NAJM, 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

(14)

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.

Inicialmente serão apresentados alguns conceitos que envolvem as principais fontes de consumo de potência em circuitos CMOS. Também serão abordados os principais aspectos que envolvem a análise de atraso de propagação de circuitos.

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.

Considerando as componentes acima, pode-se então especificar, de acordo com a Equação (1), o consumo de potência total em circuitos CMOS:

din static SC

TOTAL P P P

P    (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 no gate 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

(15)

isto, para sinais de entrada com tempos de subida e descida finitos, é possível que um caminho de corrente direto entre a fonte de tensão e o terra seja formado temporariamente enquanto que esteja ocorrendo uma alteração na saída.

A seguir são apresentados detalhes das 3 principais fontes de consumo de potência em circuitos CMOS.

2.1.1. 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 a 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 de 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.2. 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,

(16)

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).

DD leakage static I V P  . (2)           VT 1 V S leakage I e I (2.1)

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 é dado na equação 2.1, onde IS é a corrente de saturação reversa, V é a tensão do diodo e VT=KT/q é a

tensão termal.

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 processo de carga e descarga da capacitância de saída. A potência dinâmica aparece com um maior valor percentual contribuindo com 85% da parcela do consumo total. (STAN, 1997). 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 (3)

(CHANDRAKASAN, 1995), 2 2 2 1 2 1 DD L DD L din C AV afC V P   (3)

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

(17)

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 (4). clk DD L din C V f P 2 2 1  (4)

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 (3).

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 (RABEY, 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 atraso (PENZES, 2002). Desta maneira, um determinando nó de um circuito pode exibir múltiplas transições em um único pulso de clock 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 contribuição de glitches para a dissipação de potência em um circuito digital é mostrado na Figura 2. Podemos ver a geração de glitches na saída de uma porta e a propagação através de uma porta. (FAVALLI, 1995)

(18)

Figura 2 – 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 Análises de Atraso em Circuitos CMOS

A verificação de atraso tem por objetivo avaliar se as restrições de velocidade de operação impostas ao projeto estão sendo alcançadas. Ainda, a verificação de atraso preocupa-se com a estimação do atraso crítico dos circuitos e com a máxima freqüência de operação, no caso de circuitos temporizados (GUNTZEL, 2000). Tipicamente, a primeira tarefa de uma análise de atraso é determinar os atrasos em todos os caminhos do circuito.

O resultado desta análise é verificar o caminho crítico do projeto, ou maior atraso. De acordo com esta informação, estabelece-se a velocidade máxima na qual o circuito irá operar. Como qualquer outro tipo de verificação, a precisão do teste do atraso é completamente dependente da precisão dos modelos de circuito adotados.

2.2.1. Análise Estática de Atraso

A análise estática de atraso faz a verificação do atraso do circuito pela adição de atrasos de propagação ao longo de caminhos entre elementos sensíveis ao clock em um circuito. Nesta técnica, as somas são confrontadas com as restrições de atraso especificadas para cada caminho do circuito. Devido a sua orientação para caminhos, as ferramentas de

(19)

análise estática de atraso podem determinar e reportar estatísticas de atraso tal como o número total de caminhos, atrasos entre pinos em um caminho e os caminhos mais críticos do circuito (ALTERA, 2006). Devido ao fato da análise estática de atraso não realizar uma simulação funcional, os requerimentos para a construção de modelos são relativamente simples, sendo que apenas informações de atraso para cada parte do projeto são necessárias, tais como atrasos entre pinos e restrições de freqüência. Desta forma, vetores de teste e modelos funcionais não são necessários desde que a análise não avalia o atraso em termos de funções lógicas (ALTERA, 2006).

2.2.2 Análise de Folga Temporal

A análise de folga temporal (slack analysis) compara o atraso entre caminhos de dados que terminam em dispositivos síncronos e seus correspondentes caminhos de clock (ALTERA, 2006). Sinais de dados e de clock que se propagam ao longo destes caminhos precisam ser sincronizados, caso contrário, ocorrem violações nas restrições de atraso. Este tipo de análise verifica as restrições de atraso enquanto perfaz estes caminhos, determina se ocorrem quebras nas restrições, e calcula o máximo período de tempo pelos quais caminhos de dados podem tanto causar ou evitar violações. Se a diferença entre o período especificado nas restrições de atraso e aquele calculado pela ferramenta como necessário para o circuito resultar em um valor negativo, indica que uma violação realmente ocorreu, enquanto que um valor positivo estabelece que a violação não ocorreu.

2.2.3. Análise Dinâmica de Atraso

A análise dinâmica verifica o atraso do circuito pela aplicação de vetores de teste que são projetados para detectar violações de atraso. Esta aproximação é uma extensão da simulação e garante que o atraso do circuito é testado em um contexto funcional. Este tipo de teste apresenta como resultado, erros de atraso que funcionalmente existem no circuito e prevê erros que ocorram em caminhos não usados do circuito. Para testar o atraso do circuito utilizando condições de pior caso, as ferramentas de análise dinâmica de atraso avaliam o circuito utilizando o mínimo e máximo atraso de propagação para cada componente no projeto (ALTERA, 2006). Para disponibilizar uma análise efetiva do pior

(20)

caso, a ferramenta precisa determinar quando aplicar um atraso mínimo ou máximo baseada nas ligações e se outros tipos de restrições estão sendo avaliados.

3. Arquiteturas Dedicadas de Circuitos Multiplicadores de Baixo

Consumo

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 2m, foram recentemente 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 além das suas implementações em layout. Neste trabalho foi executada a aplicação de outras técnicas de redução de potência, como pipelining e a utilização de somadores inteligentes.

A seguir são apresentadas as principais características das arquiteturas de multiplicadores alvo deste trabalho, bem como uma revisão bibliográfica sobre o estado da arte em circuitos multiplicadores.

3.1. Estado da Arte de Circuitos Multiplicadores

Os circuitos multiplicadores para aplicações na área 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 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

(21)

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 é realizada bit 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.

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;MILLAR, 1992;

(22)

GALLAGHER, 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 2000; GOLDOVSKY, 2000). Em (YU 2000), 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 (GOLDOVSKY, 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 5 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, 2002b) busca-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 foi mostrado que as novas 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.

(23)

3.2. Multiplicador Array Binário

Na operação de um multiplicador tipo array Binário, os produtos parciais são realizados de forma paralela. A multiplicação de números binários positivos é realizada da mesma forma em que a operação é realizada com números decimais. Um multiplicador tipo array traduz estas expressões diretamente para hardware, como pode ser observado na Figura 3 para W = 4bits. Como pode ser observado na Figura 3, têm-se as W linhas de produtos parciais, cada uma composta de produtos de níveis de W bits, que pode ser arranjada em uma simples e regular estrutura do tipo array. Cada produto de bit é simplesmente uma porta lógica AND.

Figura 3 - Multiplicador Array Binário de 4 bits

Como observado na Figura 3, no multiplicador array a operação é realizada pela soma de produtos parciais em seqüência. Os produtos parciais são obtidos com portas lógicas AND a partir das operações 1xW. O bit menos significativo do produto é produzido no lado direito da estrutura array e já representa o primeiro resultado de multiplicação. Os demais resultados são obtidos a partir das somas das linhas de produtos parciais.

(24)

3.2.1. Operação de Multiplicação na Base 2

m

em Complemento de 2

Embora a estrutura do multiplicador array binário mostrada na Figura 3 apresente um bom aspecto de regularidade, esta arquitetura não leva em consideração operações de multiplicações com sinal nas quais são comuns em muitas aplicações no processamento de sinais. Além disso, esta estrutura apresenta uma grande profundidade lógica, devido ao elevado número de linhas de somas de produtos parciais presentes. Este aspecto pode comprometer o desempenho do multiplicador e o consumo de potência, devido às elevadas atividades de chaveamento e sinais espúrios (glitching) presentes.

Neste trabalho, procura-se mostrar diferentes alternativas arquiteturais de circuitos multiplicadores que podem suprir as desvantagens apresentadas no multiplicador da Figura 3. As novas arquiteturas apresentadas realizam operações em complemento de 2 e possuem a mesma regularidade do multiplicador array convencional mostrado na Figura 3. Todos os bits nos produtos parciais são tratados como bits sem sinal, exatamente como um multiplicador array normal, exceto para o último bit de todas as linhas do produto parcial e todos os bits da última linha. As operações de multiplicação são realizadas na base 2m.

Para operações de uma multiplicação na base 2m, 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 2m. Conseqüentemente, a arquitetura de multiplicação base 2m segue a operação de multiplicação básica de números representados na base 2m. A operação base 2m em representação em complemento de 2 é mostrada na equação 5.

             1 0 1 1 1 1 1 2 2 ' ' W j j W j W W m W w b a b b A B A B A (5)

A Figura 4 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 multiplicação m x W.

(25)

Fig. 4. Exemplo de multiplicação de 4 bits base-4(m=2) em complemento de 2.

Para os W – m bits menos significativos dos operandos podem ser usadas multiplicações sem sinal. Os módulos de produtos parciais à esquerda e o último abaixo do array necessitam ser diferentes para efetuar operações com sinal.

Para esta arquitetura, três tipos de módulos são necessários, como é mostrado na Figura 5.

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 é requerido para qualquer tipo de multiplicação.

Fig. 5. Estrutura geral para multiplicação na base 2m em complemento de 2.

Na Figura 6 apresentamos um exemplo concreto para uma multiplicação na base 4 (m = 2) e uma largura W = 8 bits.

(26)

Fig. 6. Exemplo de multiplicador array base 4 de 8 bits em complemento de 2.

3.2.2. Multiplicador Array Binário Usando CSA e Pipeline

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 7.

(27)

Figura 7 - Exemplo de um somador Carry Save

Como pode ser observado na Figura 7, 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 8 mostra um exemplo de adição de seis números usando o somador Carry Save.

Fig. 8. Exemplo de soma de números de 4 bits usando a estrutura Carry Save

Como é mostrado na Figura 8, 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 produz dois como saída, tal que 2CSPQR. De fato, pode-se então converter o

problema de computação PQR para 2CS sem esperar carry algum. Os módulos x2

mostrados na Figura 8 não requerem lógicas, sendo somente necessário a conexão apropriada dos blocos. A soma final M + 2N representa uma soma normal de dois números.

(28)

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, com isto aplicamos este somador nas linhas de produtos parciais dos circuitos multiplicadores para a aceleração da propagação de carry ao longo do array.

A operação de multiplicação em complemento de 2 usando o somador Carry Save para a adição dos termos de produtos parciais, para operações com W = 6 bits usando base 4 (m = 2), é mostrado na Figura 8. Para o exemplo mostrado, os termos de produtos parciais são obtidos multiplicando cada grupos de 2 bits do multiplicador pelos termos do multiplicando. Assim, cada linha de produto parcial é computada como uma multiplicação

6

2 , como descrito na Figura 9. O produto final para a multiplicação na base 4 é obtido

somando cada grupo de 2 bits dos termos de produto parcial na forma Carry Save como apresentado na Figura 9.

Como pode ser observado, somente na recombinação final do carry e da soma existe a propagação de carry. Na soma com propagação de carry, os dois bits mais significativos podem ser desprezados, pois nunca ocorre overflow na operação de soma dos bits mais significativos. Note que os dois primeiros termos de produtos parciais possuem uma extensão de sinal. Para manter a regularidade do array, a técnica de extensão de sinal é usada com bits extras nas linhas de produtos parciais.

Fig. 9. Exemplo de multiplicação de 6 bits em complemento de 2 usando CSA.

O multiplicador array Binário usando o somador Carry Save, utiliza o mesmo número de linhas de produtos parciais do multiplicador com somador Ripple Carry mostrado na Figura 5, ou seja, 3 linhas de produtos parciais para um exemplo de 8 bits. Entretanto, diferente do multiplicador com RCA, onde o carry se propaga entre os módulos

(29)

de cada linha de soma parcial, o multiplicador com CSA propaga o carry na diagonal, o que provoca um aumento de desempenho na estrutura array. Contudo, deve-se observar que mesmo com somadores CSA na sua estrutura, o multiplicador array necessita de uma linha adicional de somadores Ripple Carry para recombinação dos resultados de carry e da soma do bloco CSA anterior.

Fig. 10. Exemplo de multiplicador array de 8 bits em complemento de 2 base-4 usando CSA

Como pode ser observado na Figura 10, os termos das duas primeiras linhas de produtos parciais são agrupados em uma linha composta por seis módulos de somadores (o sexto módulo é necessário para adicionar o último módulo de soma de cada operando). A maioria destes módulos de somadores nas linhas de produtos parciais é composta de meio somadores, devido ao fato da propagação de carry se dar para a próxima linha de produto parcial.

(30)

A regularidade das arquiteturas implementadas neste trabalho permite a aplicação de outras técnicas de redução de potência. Neste trabalho, apresenta-se a implementação de uma versão pipelined das novas arquiteturas, como forma de redução do caminho crítico e redução de transições espúrias que são propagadas através do array. As linhas pontilhadas da Figura 11 mostram a versão pipelined do multiplicador array na base 4 para operandos de 8 bits.

Fig. 11. Exemplo de multiplicador array de 8 bits na base 4 em complemento de 2 usando

pipeline.

Como pode ser observado na Figura 11, o aspecto da regularidade da arquitetura permite a introdução de duas camadas de registradores distribuídas ao longo do array. Desta forma, para este exemplo, as operações são efetuadas em 3 ciclos de relógio. Para os multiplicadores array na base 2m, com W bits, são utilizadas (W/m)-2 camadas de

(31)

3.3 Multiplicador Array Híbrido

Em (COSTA, 2002) foi apresentada uma nova arquitetura de circuito multiplicador operando em um código diferente do Binário. Para este novo circuito foi dado o nome de multiplicador Híbrido. A principal característica do circuito multiplicador operando neste código é a possibilidade de redução da atividade de comutação em grupos de m bits dos operandos. A seguir apresenta-se uma revisão bibliográfica sobre a importância da codificação de operandos para a redução da atividade de chaveamento, bem como as principais características do código Híbrido. Finalmente, apresenta-se a estrutura do multiplicador array operando nesta codificação em complemento de 2 com técnicas de pipeline e utilizando somador CSA.

3.3.1. Codificação de Operandos

Em (STAN, 1997) é apresentada uma visão geral de técnicas de redução de potência para comunicação global de dados em circuitos CMOS VLSI, usando métodos de codificação, onde é mostrado que cada uma das técnicas utilizada tem por objetivo reduzir o consumo de potência em barramentos de dados, a partir da redução da atividade de chaveamento dos dados transmitidos.

Um das técnicas que tem sido proposta para reduzir a atividade de chaveamento em barramentos é a codificação One-Hot (CHANDRAKASAN, 1995). Esta técnica representa um esquema de codificação redundante com o mapeamento bit a bit das palavras de dados de n-bits a serem enviadas para as palavras de dados de m-bits a serem transmitidas. A principal desvantagem desta técnica é a quantidade de linhas de barramentos necessárias que é proporcional a 2n.

A codificação Limited-Weight (STAN, 1997a) oferece um caminho direto de controlar o fator de atividade em barramentos simplesmente pela redução do número de 1’s lógicos transmitidos nos barramentos.

No método de codificação Bus-Invert (STAN, 1995) a distância de Hamming é medida entre duas palavras consecutivas no barramento. Se a distância de Hamming entre a próxima palavra e a palavra atual é menor ou igual a n/2 (onde n representa o número de

(32)

bits), a palavra é transmitida na sua forma original. De outra forma, a palavra é invertida antes da sua transmissão.

As técnicas Transition Coding e Bit Prediction são utilizadas para a redução do número de transições observadas nos barramentos de dados e endereços (STAN, 1997a). A técnica Bit Predicition é usada em alguns barramentos que exibem padrões de bit muito regular. A principal idéia é utilizar esta técnica em barramentos de endereços que exibem uma alta taxa percentual de endereços seqüenciais.

Uma das mais promissoras técnicas de codificação que pode ser utilizada na redução da atividade de chaveamento é o código Gray (MEHTA, 1996), pois este código apresenta a mudança de apenas um bit entre palavras consecutivas. Desta forma, para sinais altamente correlacionados, a atividade de chaveamento pode ser significativamente reduzida.

Como mencionado acima, existe um grande número de técnicas que apontam para codificação de dados no sentido de reduzir a atividade de chaveamento nos barramentos. Essas técnicas têm sido aplicadas a barramentos de endereços, onde os dados são altamente seqüenciais. No nosso trabalho, aplica-se a técnica de codificação de operandos a operadores aritméticos que possam operar diretamente em uma codificação diferente da Binária. Em (COSTA 2002b; COSTA, 2002c) é apresentada uma codificação Híbrida que possui o compromisso entre a mínima dependência lógica da codificação Binária e a característica de baixo chaveamento apresentado pela codificação Gray. Em (COSTA 2002b; COSTA, 2002c) esta codificação é aplicada a circuitos multiplicadores. No nosso trabalho estaremos estendendo o estudo da aplicação desta codificação a novas arquiteturas de multiplicadores. A seguir são apresentadas as principais características do código Híbrido, bem como a estrutura do circuito multiplicador array utilizando esta codificação.

3.3.2. Código Híbrido

A idéia de manipular os operandos em grupos de m-bits e codificar cada grupo usando o código Gray pode ser usada para operandos que operem em representação de complemento de 2. A Tabela I mostra o código Híbrido em complemento de 2 para um número de 4 bits e m = 2.

(33)

Tabela 1 - Representação dos códigos Binário, Híbrido (m=2) e Gray em complemento de 2

Decimal Binário Híbrido (m=2) Gray 0 0000 0000 0000 1 0001 0001 0001 2 0010 0011 0011 3 0011 0010 0010 4 0100 0100 0110 5 0101 0101 0111 6 0110 0111 0101 7 0111 0110 0100 -8 1000 1100 1100 -7 1001 1101 1101 -6 1010 1111 1111 -5 1011 1110 1110 -4 1100 1000 1010 -3 1101 1001 1011 -2 1110 1011 1001 -1 1111 1010 1000

O código Híbrido apresenta um compromisso entre a mínima dependência das entradas de dados apresentada pelo código Binário e a característica de baixa atividade de chaveamento apresentada pelo código Gray. A Tabela 2 apresenta o número de transições dos códigos Binário, Gray e Híbrido para uma determinada seqüência de contagem.

Tabela 2 - Número de transições para os códigos Binário, Híbrido (m=2) e Gray

Número de Transições Diferenças Número de bits

Binário Gray Híbrido(m=2) Híb→Bin Hib→Gray n=4 bits (0,1,...,15,0) 30 16 20 -33,3 % +25% n=8 bits (0,1,...,255,0) 510 256 340 -33,3% +32,8% n=16 bits (0,1,...,65535,0) 131070 655326 57380 -33,3% + 33,3%

Pode ser observado na Tabela 2, o código Híbrido apresenta um valor percentual intermediário entre os códigos Binário e Gray em termos de número de transições. Desta forma, para sistemas onde a capacitância chaveada no barramento de dados é significativa e onde os dados apresentam um alto grau de correlação, a utilização do código Híbrido pode

(34)

reduzir o consumo de potência em até cerca de um terço em relação ao código Binário (COSTA, 2002). O número de transições para seqüências de contagem, como apresentadas na Tabela 2, é calculado de acordo com as equações (6), (7) e (8), para os códigos Binário, Gray e Híbrido respectivamente (COSTA, 2002).

 

2 1 2 . _ _  n o Bin trans de n (6) n o Gray tran de n _ _ .( )2 (7) 1 2 1 2 2 ) .( _ _    m mn o Hib trans de n (8)

Outra característica apresentada pelo código Híbrido m = 2 é a facilidade de mudança de representação para o código Binário, como mostra o exemplo da Figura 12. Desta forma, o processo de codificação/decodificação dos dados utiliza um hardware de reduzida complexidade com uma porta EXOR ligada a cada grupo de m = 2 bits. Neste caso, o código Híbrido também pode ser utilizado como método de codificação para os barramentos de endereços.

Figura 12 – Conversão entre os códigos Binário e Híbrido

3.3.3. Multiplicação Híbrida em Complemento de 2

A Figura 13 apresenta um exemplo de multiplicação de 4 bits em código Híbrido na base 4 (m = 2). Como pode ser observado, a operação de multiplicação nesta base consiste na aplicação direta do código Gray a cada grupo de 2 bits. Desta forma, a operação de multiplicação é realizada na base 4. Outro ponto importante a ser destacado na Figura 13 é a técnica de extensão de sinal que é representado por 10, pois caracteriza o número decimal -1 em código Gray.

(35)

Fig. 13 – Exemplo de uma multiplicação de 4 bits na base 4 (m=2) em complemento de 2 utilizando o código Híbrido

3.3.4. Multiplicador Array Híbrido usando CSA e Pipeline

A operação de multiplicação híbrida em complemento de 2 usando o somador Carry Save para adição dos termos de produtos parciais, para operadores com W = 6 bits usando base 4 (m = 2), é ilustrado na Figura 14. A etapa de utilização de somadores do tipo CSA é idêntica à anteriormente mostrada na Figura 10 para operação de multiplicação com operandos binários. Deve-se observar, entretanto, que a extensão do sinal é através do valor 10 que representa -1 no código Híbrido.

(36)

Da mesma forma como anteriormente mostrado na multiplicação com array binário, na multiplicação híbrida usando o somador Carry Save, módulos de somadores do tipo Ripple Carry são utilizados somente na soma final da soma em árvore, como pode ser visto na Figura 15 para um exemplo de W = 8 bits. Uma simples adição usando propagação é somente necessária no último passo para reduzir dois números para um simples número, produto final. Os módulos: Tipo I, II e III, efetuam multiplicações em código Híbrido. Os somadores efetuam adições em código Binário, visto que a conversão de código Híbrido para Binário e vice-versa, é facilmente realizada, como anteriormente mostrado na Figura 11.

Fig. 15. Exemplo de multiplicador array Híbrido de 8 bits na base 4 em complemento de 2 usando CSA

Os circuitos multiplicadores na forma pipeline são úteis no caso do throughput aritmético ser mais importante do que a latência. Isto devido ao fato da introdução de registradores ao longo do array reduzir a quantidade de atividade de chaveamento desnecessária. Um multiplicador utilizando pipeline pode realizar mais operações por

(37)

segundo e operar com uma taxa de relógio mais elevada do que um multiplicador que não utiliza esta técnica. Logo este tipo de multiplicador pipelined é desejável para aplicações aritméticas de alto desempenho. (ASATO, 1990)

O multiplicador array Híbrido com uso de pipeline apresenta uma estrutura semelhante à mostrada na Figura 11 para uma multiplicação binária. A diferença consiste na utilização dos códigos Híbrido nos módulos básicos. Outra diferença a ser destacada é a técnica de extensão de sinal em código Híbrido. Da mesma forma que o multiplicador array Binário, as operações são efetuadas em 3 ciclos de relógio. Para os multiplicadores array na base 2m, com W bits, são utilizadas (W/m)-2 camadas de registradores. Desta forma, as

operações são realizadas em (W/m)-1 ciclos de relógio.

A introdução de registradores ao longo do circuito aumenta a área significativamente, tendo, entretanto, reduções em valores de atraso e consumo de potência. (COSTA, 2002)

4. Resultados Obtidos

Nesta Seção, são apresentados os resultados das simulações dos circuitos multiplicadores array Binário e Híbrido de 16 bits com grupos de 2 e 4 bits apresentados na Seção anterior. São feitas comparações em área, atraso e consumo de potência dos multiplicadores utilizando somadores RCA e CSA em suas estruturas. Também são mostrados os resultados destas estruturas com o uso de pipeline. As simulações foram realizadas com a ferramenta Quartus II da Altera e sintetizados para o FPGA da família Stratix de modelo EP1S10B672C6. Os resultados de área são apresentados em termos do número de elementos lógicos do elemento FPGA. Os resultados de atraso são mostrados em relação ao caminho crítico dos circuitos. Para obtenção dos valores de consumo de potência são utilizados 100 vetores dos tipos senoidal e aleatório.

4.1 Resultados de Área

A Tabela 3 mostra os valores de área para os multiplicadores Binário e Híbrido m=2 e m=4 com somadores RCA e CSA e com o uso de pipeline.

(38)

Tabela 3. Valores de área para os multiplicadores (elementos lógicos)

Multiplicadores RCA CSA RCA e Pipeline CSA e pipeline

Binário (m=2) 782 925 852 972

Hibrído (m=2) 740 917 824 930

Binário(m=4) 1.244 1285 1.323 1385

Híbrido(m=4) 2.706 2.799 2820 2904

Como pode ser observado na Tabela 3, os multiplicadores com m=4 apresentam os maiores valores de área. Isto se deve à maior complexidade dos módulos de multiplicação na base 16. No caso do multiplicador Híbrido, este aspecto se torna mais significativo, pois os módulos de multiplicação em código Híbrido utilizam um maior número de portas lógicas para a sua implementação.

A Tabela 3 também mostra que todos os multiplicadores que utilizam somadores do tipo CSA apresentam maiores valores de área comparado com os multiplicadores que utilizam somadores RCA. De fato, deve-se observar que um somador CSA apresenta em sua última linha uma estrutura de soma do tipo RCA, que é responsável pela recombinação do resultado da soma anterior com o carry propagado ao longo da estrutura. Isto faz com que a estrutura interna do somador CSA apresente um maior número de somadores completos (full adders) e meio somadores (half adders).

A inserção de linhas de pipeline nos circuitos multiplicadores também contribui para o aumento de área, como pode ser visto na Tabela 3. Isto devido à utilização de vários circuitos registradores que formam as várias linhas de pipeline presentes nos multiplicadores.

4.2 Atraso

Para os circuitos multiplicadores analisados, sem as linhas de pipeline, os valores de atraso podem ser obtidos a partir do parâmetro (tpd) da ferramenta Quartus II, que mede o

maior atraso da entrada até a saída do circuito (ALTERA, 2006). Em relação aos circuitos com linhas de pipeline, utilizam-se registradores que habilitam os dados para as suas saídas a partir de sinal de clock. Para este caso, visto a ferramenta Quartus II não fornecer o parâmetro tpd, utiliza-se o período (T) como parâmetro para medição do desempenho dos

(39)

circuitos multiplicadores com pipeline. A Tabela 4 mostra os valores de atraso para os circuitos multiplicadores com somadores RCA e CSA e com a utilização de pipeline.

Tabela 4. Valores de atrasos para os multiplicadores

Multiplicadores RCA(ns) (tpd) CSA (ns) (tpd) RCA e Pipeline(ns) - T CSA e pipeline (ns) - T Binário(m=2) 52.623 47.317 14.853 12.541 Hibrído(m=2) 53.044 49.382 15.206 13.851 Binário(m=4) 44.802 43.009 16.216 15.945 Hibrído(m=4) 61.214 59.101 22.564 21.954

Como pode ser observado na Tabela 4, os multiplicadores com somadores CSA apresentam redução nos valores de atraso quando comparados com as suas estruturas originais que utilizam o somador RCA para m=2 e m=4. Isto ocorre devido ao fato do somador CSA ter a capacidade de realizar operações de soma em paralelo, sem depender da propagação do carry dentro dos blocos de soma. Deve-se observar na Tabela 4 que esta redução do atraso com somadores CSA também ocorre para os circuitos utilizando pipeline, o que comprova a eficiência deste tipo de somador para aumento do desempenho dos circuitos multiplicadores.

Observa-se que as arquiteturas dos multiplicadores Binário (m=2 e m=4) apresentam menores valores de atraso em relação aos multiplicadores em código Híbrido. Isto ocorre devido ao multiplicador Híbrido possuir uma maior complexidade dos blocos básicos de multiplicação, como dito anteriormente.

A Tabela 4 mostra que o multiplicador Binário (m=4) possui os menores valores de atraso com somadores RCA e CSA sem pipeline. Isto ocorre devido à menor quantidade de linhas de termos de produtos parciais apresentadas por este circuito. Desta forma, este aspecto (menor quantidade de linhas de produtos parciais) compensa a maior complexidade apresentada pelos módulos de multiplicação básicos, contribuindo para a redução do caminho crítico deste tipo de estrutura. O mesmo aspecto não se verifica para os multiplicadores Híbridos m=4 sem pipeline, onde os módulos de multiplicação são um pouco mais complexos e a redução de linhas de produtos parciais não se torna suficiente para aumentar o desempenho destas estruturas.

(40)

Observa-se pelos resultados da Tabela 4 que para os multiplicadores com pipeline, os circuitos Binário e Híbrido utilizando m=2 apresentam os menores valores de atraso. Isto mostra que o componente FPGA consegue mapear de forma mais eficiente para a sua estrutura interna os circuitos multiplicadores m=2, quando da utilização de pipeline.

4.3 Resultados de Potência

As Tabelas 5 e 6 apresentam os valores obtidos nas simulações para o consumo de potência com vetores senoidais (explorando o aspecto de correlação dos dados) e vetores randômicos. Os valores apresentados nestas tabelas mostram a parcela de potência dinâmica fornecida pela ferramenta Quartus II. Esta parcela foi selecionada para ser apresentada, pois representa a parcela que mais contribui para o consumo de potência total dos circuitos.

Tabela 5. Valores de consumo de potência utilizando vetores senoidais (Dinâmico)

Multiplicadores RCA (mW) CSA (mW) RCA e Pipeline

(mW) CSA e pipeline (mW) Binário (m=2) 390.14 317.32 155.37 151.13 Híbrido (m=2) 396.67 372.78 156.63 152.35 Binário (m=4) 266.26 263.54 187.46 185.02 Híbrido (m=4) 362.80 359.02 223.50 220.98

Tabela 6. Valores de consumo de potência utilizando vetores randômicos (Dinâmico)

Multiplicadores RCA (mW) CSA (mW) RCA e Pipeline

(mW) CSA e pipeline (mW) Binário (m=2) 503.12 410.13 205.81 201.66 Híbrido (m=2) 523.02 464.66 206.91 202.50 Binário (m=4) 321.61 319.41 230.97 228.54 Híbrido (m=4) 438.87 434.47 283.39 281.54

Uma comparação inicial entre os valores apresentados nas Tabelas 5 e 6 mostra que o aspecto da correlação dos dados nos vetores senoidais, contribui para o menor consumo de potência apresentado por todos os circuitos multiplicadores. Outro aspecto a ser destacado nas Tabelas 5 e 6 é que o uso de somadores CSA nos multiplicadores Binário e Híbrido (m=2 e m=4) contribui para a redução do consumo de potência destes circuitos.

(41)

No caso dos multiplicadores sem pipeline, observa-se que o multiplicador Binário m=4 apresenta o menor valor de potência entre os multiplicadores. Este resultado está em conformidade com o menor valor de atraso apresentado por esta estrutura e também o menor valor de sinais espúrios, devido à menor quantidade de linhas de soma de produtos parciais.

Observa-se pelos resultados apresentados nas Tabelas 5 e 6 que o uso de pipeline nas estruturas dos circuitos multiplicadores oferece uma redução significativa do consumo de potência nos circuitos multiplicadores. De fato, a introdução de registradores ao longo da estrutura array dos circuitos multiplicadores contribui para a redução da atividade de glitching (sinais espúrios), que é responsável por uma parcela significativa do consumo de potência em circuitos multiplicadores.

Observa-se pelos resultados mostrados nas Tabelas 5 e 6 que os circuitos multiplicadores m=2 com pipeline apresentam menores valores de consumo de potência. Este resultado está em conformidade com os valores de atraso apresentados na Tabela 4 e reforçam o aspecto de que o componente FPGA consegue mapear para a sua estrutura interna, de uma forma mais eficiente, os circuitos multiplicadores m=2 com pipeline.

(42)

5. Conclusões

Neste trabalho foram apresentadas novas estruturas de circuitos multiplicadores array operando nas bases 4 (m=2) e 16 (m=4). Foram utilizadas nos multiplicadores, algumas técnicas para o aumento de desempenho e redução do consumo de potência, como a utilização de somador CSA, codificação de operandos e pipeline. Através dos resultados mostrados, foi possível verificar a eficiência das novas arquiteturas de circuitos multiplicadores utilizando o somador CSA para a redução do consumo de potência e também redução do atraso dos circuitos. A utilização de pipeline também se mostrou eficiente para as reduções de atraso e consumo de potência dos circuitos multiplicadores. Entretanto, o uso de pipeline resulta no aumento da área (número de elementos lógicos) nos circuitos multiplicadores, devido à introdução de registradores em suas estruturas do tipo array.

Outro ponto abordado neste trabalho foi a possibilidade de operação dos circuitos multiplicadores em diferentes bases. Neste aspecto, observou-se que o multiplicador Binário operando na base 16 se mostrou mais eficiente em termos de atraso e consumo de potência. Isto devido ao menor número de linhas de somas de produtos parciais. Entretanto, quando do uso da técnica pipeline, observou-se que os circuitos multiplicadores operando na base 4 são mapeados de forma mais eficiente para a estrutura interna do FPGA, o que contribui para os seus menores valores de atraso e consumo de potência.

Finalmente, foi possível explorar neste trabalho a utilização da técnica de codificação de operandos nos circuitos multiplicadores, com os mesmos operando em código Híbrido. Observou-se que em termos de FPGA, estes multiplicadores não se mostraram mais eficientes do que os multiplicadores Binários. Entretanto, devido à proximidade dos resultados de potência entre os multiplicadores Binário e Híbrido, principalmente com o uso de pipeline, estimulam novas comparações de consumo de potência entre estes multiplicadores em outros níveis de abstração (nível lógico e nível de transistores).

Referências

Outline

Documentos relacionados

Essa comunidade de cortes já existe na visão de Slaughter e possui alguns princípios que a organizam, tais como: (1) uma concepção, ainda que pouco lapidada, de pesos e

 Passagem de argumentos do tipo array  Especificação do nome do array (sem colchetes). Declaração:

MODELAGEM DE UM ARRANJO (ARRAY) FOTOVOLTAICO. Como descrito anteriormente, várias células e módulos podem ser conectados para formar os chamados arrays fotovoltaicos.

Essa tarefa não tem a necessidade de interface com o usuário, tornando-se uma boa candidata ao processamento em lotes, normalmente utilizados como a divisão

Conforme demonstrado neste estudo os pontos de monitoramento são localizados próximo ao lançamento do esgoto, em distância máxima de 400 metros, entretanto a

A igreja dos seus dias havia transformado a vida de fé e amor a Deus em um relacionamento com a própria instituição religiosa que passou a determinar tudo o que deveria ser crido

Ao longo do dia houve diversas actividades comemorativas, entre elas, uma Mega Aula do Yoga para Todos – o Purusha Namaskára, apresentações de Kírtana pelo Coral Orquestra –

After the downfall of the Tunisian president Ben Ali and the rise of protests in Egypt against Mubarak leading to his ouster, Riyadh feared domino effect in the