Multiplicador Booth para o FemtoJava

Slides:



Advertisements
Apresentações semelhantes
Parte 1: Organização de Computadores
Advertisements

Eletrônica Digital Flip-Flops e Registradores de Deslocamento
Aritmética Computacional
Arquitetura de Computadores
Circuitos Lógicos e Organização de Computadores Capítulo 6 – Blocos com Circuitos Combinacionais Ricardo Pannain
Algoritmos Genéticos Problema das 8 Rainhas Algoritmo Genético
Lógica Booleana A álgebra booleana é baseada totalmente na lógica. Desta forma, os circuitos lógicos executam expressões booleanas. As expressões booleanas.
Excel - Parte 2 Fórmulas e Funções
Processador Fluxo de Dados e Controle
Aula 03 Aritmética.
Indice estruturado por Hash
Revisão Prova 2 Métodos de Acesso: BTree e Hash AULA 20 Profa. Sandra de Amo GBC053 – BCC
Hashing Extensível o espaço de endereços disponíveis não é fixo
MC542 Organização de Computadores Teoria e Prática
ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM
MC542 Organização de Computadores Teoria e Prática
Soma de Produtos Soma de produtos é uma forma padrão de representação de funções Booleanas constituida pela aplicação da operação lógica OU sobre um conjunto.
Construção sequencial CASE WHEN
Decodificador 2 para 4 (2 : 4)
Técnicas e Projeto de Sistemas
SISTEMA BINÁRIO Hardware de Computadores. SISTEMA BINÁRIO Hardware de Computadores.
Técnicas e Projeto de Sistemas
Prof. Dr. Helder Anibal Hermini
Arquiteturas de 4, 3, 2, 1 e 0 endereços.
Multiplicação em binário
1. Equivalência entre portas 2. Derivação de expressões booleanas 3
Agrupando flip-flops e portas para criar registradores
Operações de Ponto Flutuante para o FemtoJava
Criptografia Quântica : Um Estudo
Análise e Solução de Problemas
Gustavo Vieira Pereira
Twofish Leonardo H. Furlan.
Compressão por Hardware
One-cell Pipeline for Floating-Point Multiplier in FPGAs Alex Panato Sandro Silva
MARS The IBM Candidate Cipher for AES
Registro de Carta Topográfica
Mais sobre classes Baseada no Livro: Deitel&Deitel - C++ How To program Cap. 7 Prentice Hall 1994 SCE 213 Programação Orientada a Objetos, ICMC - USP 2.
Geração de Código Algoritmo de Escalonamento de instruções – List Scheduling.
Banco de Dados I Profa. Jiani Cardoso 2/2005
Anderson Moreira TI 2 de Março de 2010 Anderson L. S. Moreira Instituto Federal de Pernambuco Recife - PE Arquitetura.
2ª Aula Teórica Prof. Cesar Costa
CT-300 – Seminário de Tese 1/25 Um Framework Padrão para Simulação de Modelos de Robôs Móveis de Robôs Móveis Juliano A. Pereira Prof. Carlos H. C. Ribeiro.
1 Definição de Dicionário Dicionário é um sistema de informações: Equivalente a um conjunto de elementos não repetidos Equivalente a um conjunto de elementos.
Capítulo I – Conceitos Primários 1.1 – Estrutura de um computador 1.2 – Informações manipuladas por um computador 1.3 – Evolução das linguagens de programação.
A visão da Academia sobre a Política de Saúde Mental Vigente no País Prof. Dr. Ronaldo Laranjeira – Departamento de Psiquiatria da UNIFESP.
ARQUITETURA DE COMPUTADORES ANEXO-1: INSTRUÇÕES (LOGICAS) AND DE DADOS ENTRE REGISTRADORES REG 0 :AH,AL,AX,BH,BL,BX,CH,CL,CX,DH,DL,DX,SI,DI,SP,BP,CS, DS,ES,SS.
OTIMIZAÇÃO DE DESEMPENHO
TÉCNICAS DE CODIFICAÇÃO DE SINAIS
TÉCNICAS DE CODIFICAÇÃO DE SINAIS
TÉCNICAS DE CODIFICAÇÃO DE SINAIS COMPRESSÃO SEM PERDAS Evelio M. G. Fernández
Representações na base decimal e binária
Recursividade Estrutura de Dados.
Comandos básicos do MS-DOS
Prof: Graciano Notação Científica.
PRODUTOS E FATORES: UMA QUESTÃO NOTÁVEL Professor: Graciano Pianezzer Beletti.
LINGUAGENS DE PROGRAMAÇÃO
SUPERVISÃO E CONTROLE OPERACIONAL DE SISTEMAS
Introdução Ciência da Computação estudo de algoritmos –ÊNFASE ao estudo de DADOS armazenamento manipulação refinamento (a partir de dados cru) estrutura.
Sistemas de Numeração Sistemas Numéricos de Interesse
Instanciação em VHDL.
Conceitos de Lógica Digital
Multiplexadores e Demultiplexadores
Projeto de Circuitos Combinacionais Aritméticos
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Projeto de Somador com e sem Sinal Descrição.
Circuitos Combinacionais 01/08/2013.
Revisão Prova 2 Métodos de Acesso – Parte 2 AULA 21 Profa. Sandra de Amo GBC053 – BCC.
Tópicos em Arquitetura de Computadores João Angelo Martini Universidade Estadual de Maringá Departamento de Informática Mestrado em Ciência.
Infra-estrutura de Hardware
Campus de Caraguatatuba Aula 8: Noções Básicas sobre Erros (2)
ELETRÔNICA DIGITAL Circuitos Aritméticos
Transcrição da apresentação:

Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

Tópicos Algoritmo de Booth Modificado Hardware do Booth Modificado Requisitos para o FemtoJava Projeto desenvolvido Conclusões

Algoritmo de Booth Modificado Algoritmo de booth original projetado para multiplicações de inteiros em complemento de 2 Booth modificado: Capaz de operar 2 ou mais bits do multiplicador por vez Ótimo compromisso entre desempenho e complexidade do hardware

Algoritmo de Booth Modificado Funcionamento (base 4) Multiplicador é dividido em grupos de 3 bits O MSB de um grupo é compartilhado com o LSB de outro A partir de uma tabela de recodificação, podemos ter: Soma/Subtrai MD Soma/Subtrai 2*MD Não faz operação aritmética Operações sem sinal podem ser obtidas através do acréscimo de um codificador adicional no MSB do multiplicador

Algoritmo de Booth Modificado Exemplo 1 Multiplicador = 1010 (1010 sem sinal) Grupo Operação 000 - 001 +MD 010 011 +2MD 100 -2MD 101 -MD 110 111 1: 1 * -2MD 2: 4 * -MD 3: 16 * MD ------------ P = 10 * MD 0010100 1: -2MD 2: -MD 3: +MD

Algoritmo de Booth Modificado Exemplo 2 Multiplicador = 1010 (-610 com sinal) Grupo Operação 000 - 001 +MD 010 011 +2MD 100 -2MD 101 -MD 110 111 1: 1 * -2MD 2: 4 * -MD ------------ P = -6 * MD 10100 1: -2MD 2: -MD

Hardware do Booth Modificado Visão top-level Multiplicador (MD) Multiplicando (MR) MD{-1,0,1} P{0,1} Operando1 MD{1,2,3} P{2,3} Operando2 P{14,15} MD{13,14,15} Operando8 P[31..16] Produto (32 bits)

Hardware do Booth Modificado Operandos Produto Parcial Do Estágio Anterior MR{2n-1, 2n, 2n+1} Codificador Booth Multiplexador (Inverte/desloca/zera MR) 3 16 MD Somador MR Produto Parcial Para o Próximo Estágio P{2n, 2n+1}

Hardware do Booth Modificado Codificador Booth MRn-1 PassaMDn MRn MRn+1 DeslocaMDn InverteMDn

Hardware do Booth Modificado Multiplexer InverteMDn PassaMDn Para Mux a Esq. Do Mux a Dir. DeslocaMDn

Hardware do Booth Modificado Somador A16 B16 A2 B2 A1 B1 A0 B0 Var (inv) Cout S16 S2 S1 S0 Somador Ripple Carry

Requisitos para o FemtoJava Multiplicação com e sem sinal Possível através de pequenas adaptações na lógica do multiplicador e colocação de um sinal de controle Multiplicação de 8 ou 16 bits Versão de 16 bits: implementada Versao de 8 bits (com multiplicador de 16 bits): possível através da extensão do sinal do multiplicando e do multiplicador

Projeto desenvolvido Implementação em VHDL de um multiplicador booth para números com e sem sinal Operandos de 17 bits Lógica de tratamento de sinal Extender os operandos para 17 bits (com ou sem sinal) para o multiplicador poder tratar indistintamente números com e sem sinal Teste de funcionamento

Projeto desenvolvido Para números com sinal (complemento de 2) Faz a extensão de sinal dos operandos durante a conversão de 16 para 17 bits Ignora os 2 bits mais significativos do produto Para números sem sinal Zera o bit mais significativo dos operandos

Projeto desenvolvido 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';

Projeto desenvolvido Somas 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;

Projeto desenvolvido Geração do produto a0: 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);

Projeto desenvolvido Seleçã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

Projeto desenvolvido Simulações Verificação de funcionamento Vetores de teste que examinam possíveis falhas na implementação Não exaustivo Medição do atraso Atraso analítico caminho mais longo no datapath Pode ser um falso caminho Atraso máximo experimental: Atraso mais realista Pode não ser o maior atraso absoluto

Projeto desenvolvido Simulações Multiplicação com sinal Multiplicando (b) positivo Multiplicador (a) positivo e negativo

Projeto desenvolvido Simulações Multiplicação com sinal Multiplicando (b) negativo Multiplicador (a) positivo e negativo

Multiplicação com sinal Projeto desenvolvido Simulações Multiplicação com sinal Teste dos limites

Multiplicação com sinal Projeto desenvolvido Simulações Multiplicação com sinal Teste dos limites

Multiplicação sem sinal Projeto desenvolvido Simulações Multiplicação sem sinal

Multiplicação sem sinal Projeto desenvolvido Simulações Multiplicação sem sinal

Multiplicação sem sinal Projeto desenvolvido Simulações Multiplicação sem sinal Teste dos limites

Multiplicação sem sinal Projeto desenvolvido Simulações Multiplicação sem sinal Teste dos limites

Projeto desenvolvido Maior atraso Calculado pelo Quartus II: 68ns Medido: ~50ns Não foram testadas todas as combinações de multiplicando e multiplicador

Projeto desenvolvido Inserção no FemtoJava Substituição arquivo mul.vhd Criação de uma instrução de multiplicação com sinal Criação de lógica de controle de sinal

Conclusões Arquitetura relativamente regular, mas com características que tiveram que ser observadas para a obtenção do resultado correto Para suportar operações de 16 bits com e sem sinal, um multiplicador de 17 bits teve que ser implementado Pipelines podem ser facilmente inseridos, se necessário