multiplicador booth para o femtojava vagner santos da rosa

30
Multiplicador Booth Multiplicador Booth para o FemtoJava para o FemtoJava Vagner Santos da Rosa Vagner Santos da Rosa

Upload: internet

Post on 17-Apr-2015

107 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Multiplicador Booth para Multiplicador Booth para o FemtoJavao FemtoJava

Vagner Santos da RosaVagner Santos da Rosa

Page 2: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

TópicosTópicos

Algoritmo de Booth ModificadoAlgoritmo de Booth Modificado Hardware do Booth ModificadoHardware do Booth Modificado Requisitos para o FemtoJavaRequisitos para o FemtoJava Projeto desenvolvidoProjeto desenvolvido ConclusõesConclusões

Page 3: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Algoritmo de Booth Algoritmo de Booth ModificadoModificado

Algoritmo de booth original projetado Algoritmo de booth original projetado para multiplicações de inteiros em para multiplicações de inteiros em complemento de 2complemento de 2

Booth modificado: Capaz de operar 2 Booth modificado: Capaz de operar 2 ou mais bits do multiplicador por vezou mais bits do multiplicador por vez

Ótimo compromisso entre desempenho Ótimo compromisso entre desempenho e complexidade do hardwaree complexidade do hardware

Page 4: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Algoritmo de Booth Algoritmo de Booth ModificadoModificado

Funcionamento (base 4)Funcionamento (base 4) Multiplicador é dividido em grupos de 3 bitsMultiplicador é dividido em grupos de 3 bits

O MSB de um grupo é compartilhado com o LSB O MSB de um grupo é compartilhado com o LSB de outrode outro

A partir de uma tabela de recodificação, A partir de uma tabela de recodificação, podemos ter:podemos ter: Soma/Subtrai MDSoma/Subtrai MD Soma/Subtrai 2*MDSoma/Subtrai 2*MD Não faz operação aritméticaNão faz operação aritmética

Operações sem sinal podem ser obtidas Operações sem sinal podem ser obtidas através do acréscimo de um codificador através do acréscimo de um codificador adicional no MSB do multiplicadoradicional no MSB do multiplicador

Page 5: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Algoritmo de Booth Algoritmo de Booth ModificadoModificado

Exemplo 1Exemplo 1 Multiplicador = 1010 (10Multiplicador = 1010 (1010 10 sem sinal) sem sinal)

00101001: -2MD

2: -MD

3: +MD

GrupoGrupo OperaçOperaçãoão

000000 --

001001 +MD+MD

010010 +MD+MD

011011 +2MD+2MD

100100 -2MD-2MD

101101 -MD-MD

110110 -MD-MD

111111 --

1: 1 * -2MD

2: 4 * -MD

3: 16 * MD

------------

P = 10 * MD

Page 6: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Algoritmo de Booth Algoritmo de Booth ModificadoModificado

Exemplo 2Exemplo 2 Multiplicador = 1010 (-6Multiplicador = 1010 (-610 10 com sinal) com sinal)

101001: -2MD

2: -MD

GrupoGrupo OperaçOperaçãoão

000000 --

001001 +MD+MD

010010 +MD+MD

011011 +2MD+2MD

100100 -2MD-2MD

101101 -MD-MD

110110 -MD-MD

111111 --

1: 1 * -2MD

2: 4 * -MD

------------

P = -6 * MD

Page 7: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Hardware do Booth Hardware do Booth ModificadoModificado

Visão top-levelVisão top-level

Multiplicador (MD) Multiplicando (MR)

Operando1

Operando2

Operando8

Produto (32 bits)

MD{13,14,15}

MD{1,2,3}

MD{-1,0,1} P{0,1}

P{2,3}

P{14,15}

P[31..16]

Page 8: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Hardware do Booth Hardware do Booth ModificadoModificado

OperandosOperandos

CodificadorBooth

Multiplexador(Inverte/desloca/zera MR)

SomadorMD

Produto ParcialDo Estágio Anterior

Produto ParcialPara o Próximo Estágio

3

16

MR

P{2n, 2n+1}

MR{2n-1, 2n, 2n+1}

Page 9: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Hardware do Booth Hardware do Booth ModificadoModificado

Codificador BoothCodificador Booth

MRn-

1MRn

MRn+

1

PassaMDn

DeslocaMDn

InverteMDn

Page 10: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Hardware do Booth Hardware do Booth ModificadoModificado

MultiplexerMultiplexer

PassaMDn

DeslocaMDn

InverteMDn

Do Mux a Dir.

Para Mux a Esq.

Page 11: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Hardware do Booth Hardware do Booth ModificadoModificado

SomadorSomador

Var (inv)A0 B0A1 B1A2 B2A16 B16

Cout S16 S2 S1 S0

Somador Ripple CarrySomador Ripple Carry

Page 12: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Requisitos para o Requisitos para o FemtoJavaFemtoJava

Multiplicação com e sem sinalMultiplicação com e sem sinal Possível através de pequenas adaptações Possível através de pequenas adaptações

na lógica do multiplicador e colocação de na lógica do multiplicador e colocação de um sinal de controleum sinal de controle

Multiplicação de 8 ou 16 bitsMultiplicação de 8 ou 16 bits Versão de 16 bits: implementadaVersão de 16 bits: implementada Versao de 8 bits (com multiplicador de 16 Versao de 8 bits (com multiplicador de 16

bits): possível através da extensão do bits): possível através da extensão do sinal do multiplicando e do multiplicadorsinal do multiplicando e do multiplicador

Page 13: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Projeto desenvolvidoProjeto desenvolvido

Implementação em VHDL de um Implementação em VHDL de um multiplicador booth para números com multiplicador booth para números com e sem sinale sem sinal Operandos de 17 bitsOperandos de 17 bits

Lógica de tratamento de sinalLógica de tratamento de sinal Extender os operandos para 17 bits (com Extender os operandos para 17 bits (com

ou sem sinal) para o multiplicador poder ou sem sinal) para o multiplicador poder tratar indistintamente números com e sem tratar indistintamente números com e sem sinalsinal

Teste de funcionamentoTeste de funcionamento

Page 14: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Projeto desenvolvidoProjeto desenvolvido

Para números com sinal (complemento Para números com sinal (complemento de 2)de 2) Faz a extensão de sinal dos operandos Faz a extensão de sinal dos operandos

durante a conversão de 16 para 17 bitsdurante a conversão de 16 para 17 bits Ignora os 2 bits mais significativos do Ignora os 2 bits mais significativos do

produtoproduto Para números sem sinalPara números sem sinal

Zera o bit mais significativo dos operandosZera o bit mais significativo dos operandos Ignora os 2 bits mais significativos do Ignora os 2 bits mais significativos do

produtoproduto

Page 15: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Projeto desenvolvidoProjeto desenvolvido

Recodificação do multiplicando:Recodificação do multiplicando: two_b <= b(15 downto 0) & '0'; -- 2*MD

b_bar <= not b; -- -MD

two_b_bar <= b_bar(15 downto 0) & '1'; -- -2*MD

bb <= b when a="001" or a="010"

else two_b when a="011"

else two_b_bar when a="100"

else b_bar when a="101" or a="110"

else x"0000" & '0';

Page 16: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Projeto desenvolvidoProjeto desenvolvido

Somas parciaisSomas parciais soma: for i in 0 to 16 generate -- 17 somadores

su: entity WORK.fadd port map(

sum_in(i), -- Produto parcial anterior

bb(i), -- Multiplicando recodificado

ctemp(i), -- carry (FA anterior)

psum(i), -- Produto parcial atual

ctemp(i+1)); -- carry (proximo FA)

end generate;

Page 17: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Projeto desenvolvidoProjeto desenvolvido

Geração do produtoGeração do produtoa0: entity WORK.badd port map(mul0, be, zer, s(0),

p( 1 downto 0));

a1: entity WORK.badd port map(a(3 downto 1), be, s(0), s(1),

p( 3 downto 2));

(...)

a8: entity WORK.badd port map(“00” & msb_mr, be,s(7),s(8),

p(17 downto 16));

p(31 downto 18) <= s(8)(13 downto 0);

Page 18: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Projeto desenvolvidoProjeto desenvolvido

Seleção de operação com ou sem sinalSeleção de operação com ou sem sinal

topbit <= b(15) when sign = '1'

else '0'; -- calcula extensao do multiplicando

msb_mr <= a(15) when sign = '0'

else '0'; -- calcula extensao do multiplicador

be <= topbit & b ; -- multiplicando de 17 bits

Page 19: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Projeto desenvolvidoProjeto desenvolvido

SimulaçõesSimulações Verificação de funcionamentoVerificação de funcionamento

Vetores de teste que examinam possíveis Vetores de teste que examinam possíveis falhas na implementaçãofalhas na implementação

Não exaustivoNão exaustivo Medição do atrasoMedição do atraso

Atraso analíticoAtraso analítico caminho mais longo no datapathcaminho mais longo no datapath Pode ser um falso caminhoPode ser um falso caminho

Atraso máximo experimental:Atraso máximo experimental: Atraso mais realistaAtraso mais realista Pode não ser o maior atraso absolutoPode não ser o maior atraso absoluto

Page 20: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Projeto desenvolvidoProjeto desenvolvido

SimulaçõesSimulações

Multiplicação com sinalMultiplicação com sinal

Multiplicando (b) positivoMultiplicando (b) positivo

Multiplicador (a) positivo e negativoMultiplicador (a) positivo e negativo

Page 21: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Projeto desenvolvidoProjeto desenvolvido

SimulaçõesSimulações

Multiplicação com sinalMultiplicação com sinal

Multiplicando (b) negativoMultiplicando (b) negativo

Multiplicador (a) positivo e negativoMultiplicador (a) positivo e negativo

Page 22: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Projeto desenvolvidoProjeto desenvolvido

SimulaçõesSimulações

Multiplicação com sinalMultiplicação com sinal

Teste dos limitesTeste dos limites

Page 23: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Projeto desenvolvidoProjeto desenvolvido

SimulaçõesSimulações

Multiplicação com sinalMultiplicação com sinal

Teste dos limitesTeste dos limites

Page 24: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Projeto desenvolvidoProjeto desenvolvido

SimulaçõesSimulações

Multiplicação sem sinalMultiplicação sem sinal

Page 25: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Projeto desenvolvidoProjeto desenvolvido

SimulaçõesSimulações

Multiplicação sem sinalMultiplicação sem sinal

Page 26: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Projeto desenvolvidoProjeto desenvolvido

SimulaçõesSimulações

Multiplicação sem sinalMultiplicação sem sinal

Teste dos limitesTeste dos limites

Page 27: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Projeto desenvolvidoProjeto desenvolvido

SimulaçõesSimulações

Multiplicação sem sinalMultiplicação sem sinal

Teste dos limitesTeste dos limites

Page 28: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Projeto desenvolvidoProjeto desenvolvido

Maior atrasoMaior atraso Calculado pelo Quartus II: 68nsCalculado pelo Quartus II: 68ns Medido: ~50nsMedido: ~50ns

Não foram testadas todas as combinações de Não foram testadas todas as combinações de multiplicando e multiplicadormultiplicando e multiplicador

Page 29: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Projeto desenvolvidoProjeto desenvolvido

Inserção no FemtoJavaInserção no FemtoJava Substituição arquivo mul.vhdSubstituição arquivo mul.vhd Criação de uma instrução de Criação de uma instrução de

multiplicação com sinalmultiplicação com sinal Criação de lógica de controle de sinalCriação de lógica de controle de sinal

Page 30: Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

ConclusõesConclusões

Arquitetura relativamente regular, Arquitetura relativamente regular, mas com características que tiveram mas com características que tiveram que ser observadas para a obtenção que ser observadas para a obtenção do resultado corretodo resultado correto

Para suportar operações de 16 bits Para suportar operações de 16 bits com e sem sinal, um multiplicador de com e sem sinal, um multiplicador de 17 bits teve que ser implementado17 bits teve que ser implementado

Pipelines podem ser facilmente Pipelines podem ser facilmente inseridos, se necessárioinseridos, se necessário