Post on 20-Nov-2018
UNIVERSIDADE CATÓLICA DE PELOTASESCOLA DE INFORMÁTICA
PROGRAMA DE PÓS-GRADUACÃO EM INFORMÁTICA
Circuitos Multiplicadores Array de Baixo Consumo
porLeandro Zafalon Pieper
Trabalho Individual ITI-2007-1-01
Orientador: Prof. Dr. Eduardo Antônio César da CostaCo-orientador: Prof. Dr. Sérgio José Melo de Almeida
Pelotas, julho de 2007
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 .................................................................................................................. 111.2 Objetivos.................................................................................................................... 111.3 Metodologia............................................................................................................... 12
2 POTÊNCIA E ATRASO EM CIRCUITOS CMOS................................................. 13
2.1 Fontes de Consumo de Potência em Circuitos CMOS .......................................... 142.1.1 Consumo de Potência de Curto-Circuito ................................................................. 152.1.2 Consumo de Potência Estática................................................................................. 152.1.3 Consumo de Potência Dinâmica.............................................................................. 162.1.4 Consumo de Potência pela Atividade de Glitching................................................. 172.2 Análises de Atraso em Circuitos CMOS................................................................. 182.2.1 Análise Estática de Atraso....................................................................................... 182.2.2 Análise de Folga Temporal...................................................................................... 192.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......................................................... 203.2 Multiplicador Array Binário ................................................................................... 233.2.1 Operação de Multiplicação na Base 2m em Complemento de 2............................. 243.2.2 Multiplicador Array Binário Usando CSA e Pipeline ............................................. 263.3 Multiplicador Híbrido.............................................................................................. 313.3.1 Codificação de Operandos....................................................................................... 313.3.2 Código Híbrido........................................................................................................ 323.3.3 Multiplicação Híbrida em Complemento de 2 ........................................................ 343.3.4 Multiplicador Array Híbrido usando CSA e Pipeline ............................................. 35
4 RESULTADOS OBTIDOS......................................................................................... 37
4.1 Resultados de Área ................................................................................................... 374.2 Atraso......................................................................................................................... 38
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............... 13Figura 2 Esquema de contribuição de glitches para dissipação de potência.................... 18Figura 3 Multiplicador Array Binário de 4 bits ............................................................... 23Figura 4 Exemplo de multiplicação de 4 bits base-4(m=2) em complemento de 2. ....... 25Figura 5 Estrutura geral para multiplicação na base 2m em compl. de 2 ......................... 25Figura 6 Ex. de multiplicador array base 4 de 8 bits em compl. de 2.............................. 26Figura 7 Ex. de um somador Carry Save ......................................................................... 27Figura 8 Ex. de soma de números de 4 bits usando a estrutura Carry Save .................... 27Figura 9 Ex. de multiplicação de 6 bits em compl. de 2 usando CSA............................. 28Figura 10 Ex. de multiplicador array de 8 bits em compl. de 2 base-4 usando CSA ........ 29Figura 11 Ex. de multiplicador array de 8 bits na base 4 em compl. de 2 com pipeline ... 30Figura 12 Conversão entre os códigos Binário e Híbrido................................................. 34Figura 13 Ex. de uma mult. de 4 bits na base 4 (m=2) em compl. de 2 com cód. Híbrido 35Figura 14 Ex. de multiplicação híbrida de 6 bits em compl. de 2 usando CSA ................ 35Figura 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 .... 33Tabela 2 Número de transições para os códigos Binário, Híbrido (m=2) e Gray ............ 33Tabela 3 Valores de área para os multiplicadores (elementos lógicos)............................ 38Tabela 4 Valores de atrasos para os multiplicadores........................................................ 39Tabela 5 Valores de consumo de potência utilizando vetores senoidais (Dinâmico) ...... 40Tabela 6 Valores de consumo de potência utilizando vetores randômicos (Dinâmico)... 40
7
LISTA DE ABREVIATURAS E SIGLAS
ASICs Circuito de Aplicação EspecíficaCMOS Complementary Metal Oxide SemiconductorCSA Carry Save AdderDSP Digital Signal ProcessingFPGA Field Programmable Gate ArrayMAC Multiplicador Somador AcumuladorNMOS Negative Channel Metal Oxide SemiconductorPMOS Positive Channel Metal Oxide SemiconductorRCA Ripple Carry AdderVHDL VHSIC Hardware Description LanguageVHSIC Very High Speed Integrated CircuitsVLSI 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.
Palavras-Chave: multiplicadores array, FPGA, codificação de operandos, baixa potência
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.
Keywords: array multipliers, FPGA, operand encoding, 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, 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:
dinstaticSCTOTAL PPPP (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).
DDleakagestatic VIP . (2)
1TV
V
Sleakage eII(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 (Pdin
) em uma transição na saída de uma
porta carregada por um capacitor CL
é dada de acordo com a equação (3)
(CHANDRAKASAN, 1995),
22
2
1
2
1DDLDDLdin VafCAVCP
(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 fclk
, então a potência é dada
pela equação (4).
clkDDLdin fVCP 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 2m 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 2
m
em representação em complemento de 2 é mostrada na equação 5.
1
0
11
1
11 22''
W
j
jWjW
W
m
Ww babbABABA(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 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 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
62 , 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
registradores. Assim, as operações são realizadas em (W/m)-1 ciclos de relógio.
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 2Decimal Binário Híbrido
(m=2)Gray
0 0000 0000 00001 0001 0001 00012 0010 0011 00113 0011 0010 00104 0100 0100 01105 0101 0101 01116 0110 0111 01017 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 GrayNúmero de Transições DiferençasNúmero de bits
Binário Gray Híbrido(m=2) Híb→Bin Hib→Grayn=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).
212.__ no Bintransden (6)
no Graytranden 2).(__ (7)
12
122).(__
m
nmo Hibtransden
(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.
Fig. 14. Exemplo de multiplicação híbrida de 6 bits em complemento de 2 usando CSA
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 pipelineBinário (m=2) 782 925 852 972Hibrído (m=2) 740 917 824 930Binário(m=4) 1.244 1285 1.323 1385Hí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.541Hibrído(m=2) 53.044 49.382 15.206 13.851Binário(m=4) 44.802 43.009 16.216 15.945Hibrí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.13Híbrido (m=2) 396.67 372.78 156.63 152.35Binário (m=4) 266.26 263.54 187.46 185.02Hí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.66Híbrido (m=2) 523.02 464.66 206.91 202.50Binário (m=4) 321.61 319.41 230.97 228.54Hí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).
43
REFERÊNCIAS
ALTERA, Corporation at http://www.altera.com/ . 2007
ALTERA, Corporation. Programmable Logic Device Family. Data Sheet, 2002
ALTERA. Quartus II Version 6.0 Handbook. [S.l.]: Altera Inc., 2006. v.I.
ASATO, C.; DITZEN, C.; DHOLAKIA, S. A Data-Path Multiplier with Automatic Insertion of Pipeline Stages. IEEE Journal of Solid-State Circuit. New York., v.25, p. 383-387, 1990.
BAUGH, C. R.; WOOLEY, B. A.; A two’s complement Parallel Array Multiplications Algorithm. IEEE Trans. Computers, vol. C-22, No. 1-2. December 1973, p. 1045-1047.
BENINI, L. et al. System-Level Power Optimization of Special Purpose Applications: the beach solution. In: INTERNATIONAL SYMPOSIUM ON LOW POWER AND ELETRONIC DESIGN, ISLPED, 1997, Monterey. Proceedings… New Youk: ACM, 1997. p. 24-29
BHAVNAGARWALA, A. el tal. Minimum Total Power Methodology for Projecting Limits on CMOS GSI. IEEE Transactions on Very Large Scale Integration (VLSI) Systems, New York, v.8, p. 235-251, June 2000.
BOOTH, A. A Signed Binary Multiplication Technique. Journal of Mechanics and Aplied Mathematics, [S.l.], n.4, p.236-240, June 1951.
CHANDRAKASAN, A.; BRODERSEN, R. Low Power Digital CMOS Design. Kluwer Academic Publishers, 1995.
CHERKAUER, B.; FRIEDMAN, E. A Hybrid Radix-4/Radix-8 Low Power, High Speed Multiplier Architecture for Wide Bit Widths. In: IEEE INTERNATIONAL SYMPOSIUM ON CIRCUITS AND SYSTEMS, ISCAS, 1996. Papers. Piscataway: IEEE, 1996. v.4, p.53-56.
COSTA, E. A. C. da. Operadores Aritméticos de Baixo Consumo para Arquiteturas de Circuitos DSP. 2002. Tese (Doutorado em Ciência da Computação) — Programa de Pós-Graduação em Computação - UFRGS, Porto Alegre, RS.
COSTA, J. Monteiro, and S. Bampi. A New Architecture for Signed Radix-2m Pure Array Multipliers. In IEEE International Conference on Computer Design, pages 112-117, 2002b.
44
COSTA, E.; MONTEIRO, J.; BAMPI, S. A New Architecture for 2’s Complement Gray Enconded Array Multiplier. In: SYMPOSIUM ON INTEGRATED CIRCUITS AND SYSTEMS DESIGN, SBCCI, 15.,Sept. 2002c. Proceedings.. Artigo aceito.
COSTA, E.; MONTEIRO,. J.; BAMPI, S. Power Optimization Using Coding Methods on Arithmetic Operators. In: IEEE INTERNATIONAL SYMPOSIUM ON SIGNALS CIRCUITS AND SYSTEMS, SCS, 2001. Iasi. Proceedings… Piscataway: IEEE CAS Society, 2001. p. 505-508c.
FAVALLI, M.; Analysis of Glitch Power Dissipation in CMOS ICs. In: INTERNATIONAL SYMPOSIUM ON LOW POWER ELECTRONICS AND DESIGN, ISLPED, 1995, Dana Point. Proceedings… New York: ACM, 1995. p. 123-128.
GALLAGHER, W. L.; SWARTZLANDER, E. E. Jr., High Radix Booth Multipliers Using Reduced Area Adder, In. Signals, Systems and Computes Conference, 1994.
GOLDOVSKY, A. et al. Design and Implementation of a 16 by 16 Low-Power Two’s Complement Multiplier. In: IEEE INTERNATIONAL SYMPOSIUM ON CIRCUITS AND SYSTEMS, ISCAS, 2000. Papers. Piscataway: IEEE, 2000. v.5, p.345-348.
GOWAN, M. K.; Biro, L. L.; Jackson, D. B. Power Considerations in the Design of the Alpha 21264 Microprocessor, Design Automation Conference, p. 726 – 731, Jun. 1998.
GÜNTZEL, J. A. Functional Timing Analysis of VLSI Circuits Containing Complex Gates. 2000. 182f. Tese (Doutorado em Ciência da Computação) – Universidade Federal do Rio Grande do Sul, Porto Alegre, 2000.
HARTLEY, R.; PARHI, K. Digit-Serial Computation. Dordrecht: Kluwer Academic, 1995.
HAYKIN, S. Adaptive Filter Theory, 4. ed. Englewood Cliffs, NJ: Prentice-Hall, 2002.
HWANG, K. Computer Arithmetic: Principles, Architecture and Design. New York: John Wiley and Sons, 1979.
KHATER, I.; BELLAOUAR, A.; ELMASRY, M. Circuit Techniques for CMOS Low-Power High-Performace Multipliers. IEEE Journal of Solid-State Circuits, New York, v. 31, n.10, p.1535-1546, Oct. 1996.
KIM T., W. Jao and S Tjiang. Arithmetic Optimization using Carry-Save adders. In 35th Design Automation Conference, pages 433-438,1998.
KIM, C.H.; ROY, K. Dynamic VTH Scaling Scheme for Active Leakage Power Reduction, Design, Automation and Test in Europe Conference and Exhibition, Proceedings, Paris – France p. 163 – 167, Mar. 2002.
45
KIM, N. S.; Blaauw, D.; Mudge, T. Leakage Power Optimization Techniques for Ultra Deep Sub-Micron Multi-Level Caches, International Conference on Computer Aided Design ICCAD-2003. p. 627 – 632, Nov. 2003.
LU, MI; Arithmetic and Logic in Computer Systems. 2004. John Wiley & Sons, Inc. New Jersey. USA
MARTIN, Kenneth W. Digital Integrated Circuit Design, New York, New York – USA: Oxford University Press, 2000.
MEHTA, H.; OWENS, R.; IRWIN, M. Some Issues in Gray Code Addressing. In: GREAT LAKES SYMPOSIUM ON VERY LARGE SCALE INTEGRATION, 1996, Ames. Proceedings… New York: ACM, 1996. p. 178-181.
MILLAR, B.; MADRID, P.; SWARTZLANDER, E. A Fast Hybrid Multiplier Combining Booth and Wallace/DADDA Algorithms. In: MIDWEST SIMPOSIUM ON CIRCUITS AND SYSTEMS, 35., 1992, Washington. Proceedings… Piscataway: IEEE CAS Society, 1992. v.1, p.158-165.
NAJM, F.N. A Survey of Power Estimation Techniques in VLSI Circuits, IEEE Transactions on Large Scale Integration (VLSI) Systems, Urbana – IL, USA, p. 446 – 455, Dec. 1994.
NAKAMURA, S. Algorithm for Iterative Array Multiplication. IEEE Transactions on Computers, Washington, v.35, n.8, p. 713-719, Aug. 1986.
OLIVEIRA, L. L.; Prototipação e Análise de Circuitos Multiplicadores Array de Baixo Consumo. Dissertação de Mestrado. PPGEE. UFSM, RS. 2005
PEKMESTZI, K. Multiplexer-Base Array Multipliers. IEEE Transactions on Computes, New York, v. 48, n.1, p.15-23, Jan 1999.
PENZES, P. L.; Martin, A. J. An energy Estimation Method for Asynchronous Circuits with Application to an Asynchronous Microprocessor, Design, Automation and Test in Europe Conference and Exhibition, Paris, France, p. 640 – 647, March 2002.
PHILLIPS, C. and K. Hodor. Breaking the 10K FPGA Barrier Calls for an ASIC-Like Design DStyle. In Integrated System Design, 1996.
POPPEN, F. Low Power Design Guide. Oldenburg: Oldenburger Forschungs-Und Entwicklungsinstitut Fur Informatik-Werkzeuge Und-Systeme-OFFIS, 2000.
RABAEY, Jan M. Digital Integrated Circuits – A Design Perspective, USA, Prentice Hall, 1996.
RUSHTON, Andrew, VHDL for Logic Synthesis – Second Edition, John Wiley & Sons, England, 1998.
46
SAM, H.; GUPTA, A. A Generalized Multbit Recoding of Two’s Complement Binary Numbers and Its Proof with Application in Multiplier Implementations. IEEE Transactions on Computers, New York, v.39, n.8, p.1006-1015, July 1990.
SEIDEL, P.; MCFEARIN, L.; MATULA, D. Binary Multiplication Radix-32 and Radix-256. In: SIMPOSIUM ON COMPUTER ARITHMETIC, 15., 2001. Proceedings… Los Alamitos: IEEE Computer Society, 2001. p.23-32.
SHAH, S.; Al-Khalili, A.J.; Al-Khalili, D. Comparison of 32-bit Multipliers for Various Performance Measures, The 12th International Conference on Microelectronics, November 2000.
SHEN, A.; Ghosh, A.; Devadas, S.; Keutzer, K. On Average Power Dissipation and Random Pattern Testability of CMOS Combinational Logic Networks, International Conference on Computer-Aided Design ICCAD-92, Santa Clara, CA – USA, p. 402 – 407, Nov. 1992.
STAN, M.; BERLESON, W. Bus-Invert Coding for Low-Power I/O. IEEE Transactions on Very Large Scale Integration (VLSI) Systems, New York, v.3, n.1, p. 49-58, Mar. 1995.
STAN, M.; BURLESON, W. Low-Power Encodings for Global Communication in CMOS VLSI. IEEE Transactions on VLSI Systems, Mar. 1997.
STAN, M.; BURLESON, W. Limited-weight Codes for Low-Power I/O. IEEE International Workshop on Low Power Design, Abril, 1997a.
VEENDRICK, H. Short-Circuit Dissipation of Static CMOS Circuits and Its Impact on the Design of Buffer Circuits, IEEE Journal of Solid-State Circuits, New York –USA, v. 19, p. 468 – 473, Aug. 1984
WALLACE, C. A Sugestion for Fast Multiplier. IEEE Transactions on Eletronic Computes, [S.l.], v.13, p. 14-17, Feb. 1964.
WANG, Y. JIANG, Y.; SHA, E. On Area-Efficient Low Power Array Multipliers. In: IEEE International Conference on Eletronics, Circuits and Systems, ICECS, 8., 2001, Malta. Preoceedings… Piscataway: IEEE CAS Society, 2001. p. 1429-1432
WEST, N. H. E.; ESHRAGHIAN, K. Principles of CMOS VLSI Design – A Systems Perspective. Santa Clara, CA – USA: AT&T, 1994.
WILLIAMS, T.W. DENNARD, R.H. KAPUR, R. MERCER, M.R. MALY, M. Iddq test: sensitivity analysis of scaling, Test Conference, Washington, DC – USA, p. 786 – 792, Oct. 1996.
YU, Z.; WASSERMAN, L.; WILSON, A. A Painless Way to Reduce Power by Over 18% in Booth-Enconded Carry-Save Array Multipliers for DSP. In: WORKSHOP ON