ELECTRÓNICA DE COMPUTADORES. 6ª a 8ª Aulas Datapath: Multiplicadores e divisores de números inteiros

Documentos relacionados
Aritmética Computacional (Multiplicação e Divisão) Capítulo 4

12 de Março de Aula 5

Arquitetura de Computadores

Aritmética dos Computadores

Arquitetura de Computadores I

Circuitos Lógicos. Capítulo 9 Aritmérica Digital: Operações e Circuitos

Representação de quantidade(número)

Multiplicação Divisão

Organização e Arquitetura de Computadores I

Capítulo 6 Aritmética Digital: Operações e Circuitos

William Stallings Arquitetura e Organização de Computadores 8 a Edição

Circuitos Lógicos Aula 22

Sistemas Digitais. Circuitos Aritméticos. Monitoria SD Daniel Alexandro/Reniê Delgado/Vanessa Ogg. Editado por (DARA)

Prof. Leonardo Augusto Casillo

Capítulo 2. Representação de dados em sistemas computacionais

Aritmética em Bases Não Decimais

Projecto de Sistemas Digitais. Introdução

Projecto de Sistemas Digitais

SISTEMAS DIGITAIS (SD)

Arquitetura e Organização de Computadores

SISTEMAS DIGITAIS (SD)

Projecto de Sistemas Digitais

Universidade Federal de Uberlândia Faculdade de Computação. Representação e aritmética binária

ARQUITECTURA DE COMPUTADORES

Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Engenharia Lógica Computacional Aplicada. Prof. Dr. Fabian Vargas.

Notas de Aula Guilherme Sipahi Arquitetura de Computadores. Aritmética de Inteiros

Operações Aritméticas Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 2h/60h

Sistemas Digitais (SD) Unidade Lógica e Aritmética

Representação de quantidade(número) Expressão de significância posicional

Aritmética de Ponto Fixo

Operações com números binários

Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Ciências da Computação & Engenharia Eletrônica

ARITMÉTICA BINÁRIA. Adão de Melo Neto

SSC512 Elementos de Lógica Digital. Circuitos Aritméticos. GE4 Bio

ARITMÉTICA BINÁRIA. São duas as operações executadas pelo computador:

Aritmética Binária e Complemento a Base. Introdução ao Computador 2010/1 Renan Manola

Sistemas Digitais (SD) Unidade Lógica e Aritmética

Circuitos Digitais. Conteúdo. Soma de Números Binários. Soma de Números Binários. Exemplos. Exemplos. Aritmética Binária

Capítulo 3. Aritmética de Computadores

Sistemas de Computação

Aritmética Binária. Adição. Subtração. Aqui tudo nasce do cálculo.

MULTIPLEXADOR E DEMULTIPLEXADOR (Unidade 4)

Capítulo 6 Aritmética Digital: Operações e Circuitos

Cursos: Análise, Ciência da Computação e Sistemas de Informação Laboratório I - Prof. Aníbal Notas de aula 2 SISTEMAS NUMÉRICOS

PCS 3115 (PCS2215) Sistemas Digitais I. Módulo 02 Sistemas de Numeração. Prof. Dr. Marcos A. Simplicio Jr. versão: 3.0 (Jan/2016) Conteúdo

Sistemas Digitais Circuitos Aritméticos e Unidades Aritméticas e Lógicas (ALUs)

Computação e Programação

Sistemas de Numeração

Curso de Licenciatura em Engenharia Informática. Curso de Licenciatura em Informática de Gestão

Aula 6: Aritmética em Bases Não Decimais

Binários: Operações matemáticas

Microprocessadores MICROPROCESSADORES. Unidade de Processamento. Sumário

Exercícios resolvidos (aula de 4 de Maio) Resolução:

ELT502 Eletrônica Digital I Graduação em Engenharia Eletrônica

Sistemas de Numeração. Exemplos de Sistemas de Numeração (1) Exemplos de Sistemas de Numeração (2) Sistemas de Numeração

1. Notação em Complemento de 2

Sistemas Digitais Transferências entre Registradores

Introdução à Computação

Projecto Low-Power. Onde se consome energia?

Arquitectura de Computadores LEEC/MEEC (2006/07 2º Sem.)

ELT601 Eletrônica Digital II Graduação em Engenharia Eletrônica

CARRREGA MULTIPLICANDO/MULTIPLICADOR NOS REGISTRADORES. = 0 DESLOQUE REG. PRODUTO 1 BIT A DIR DESLOQUE REG. MULT_ADOR. 1 BIT A DIR.

Aula 9. Aritmética Binária. SEL Sistemas Digitais. Prof. Dr. Marcelo Andrade da Costa Vieira

Aula 3 - Representação de Dados

Arquitetura de Computadores

Sistemas Digitais (SD)

Introdução aos processos de operação aritmética - Subtração

Aula 7: Portas Lógicas: AND, OR, NOT, XOR, NAND e NOR

Aula 10. Circuitos Aritméticos. SEL Sistemas Digitais. Prof. Dr. Marcelo Andrade da Costa Vieira

PCS 3115 (PCS2215) Sistemas Digitais I. Módulo 03a Aritmética Binária. Prof. Dr. Marcos A. Simplicio Jr. versão: 3.0 (Jan/2016) Conteúdo

Fundamentos de Programação

Sistemas de Numeração

OPERAÇÕES COM NÚMEROS INTEIROS

Complexidade de Algoritmos

CIRCUITOS ARITMÉTICOS (Unidade 4)

Sistemas de Computação. Operações Aritméticas com Inteiros

Sistemas Digitais (SD)

Introdução à Computação

Introdução à Informática

ELETRÔNICA DIGITAL I

SISTEMAS DIGITAIS (SD)

Aula de hoje. Códigos numéricos. Códigos binários. Armazenamento de dados. Armazenamento de dados. Armazenamento de dados

Prof. Leonardo Augusto Casillo

Arquitetura e Organização de Computadores. Professor: Lucas Cambuim Aula: Conversão de Bases e Aritmética Computacional

Capítulo 2. Representação de números em vírgula flutuante

Arquitectura de Computadores Unidade de Processamento

Representação de Números em Ponto Flutuante

Organização de Computadores

Análise Numérica (1) Introdução e Sistemas de Numeração V1.0, Victor Lobo, Análise Numérica. Doutor Victor Sousa Lobo.

3 Circuitos Combinacionais

TEMPO DE CÁLCULO. 3º Ano. Maria José Porto Louza Silva Ferreira. Escola EB1 António Nobre (Lisboa)

SOMADORES E SUBTRATORES

Capacidade de Armazenamento. Bit. Binário para Decimal. Decimal para Binário. Operações Aritméticas no Sistema binário.

Cálculo Numérico Conceitos Básicos

Organização de computadores. Aula 05

EELi02 Circuitos Lógicos

Sistemas Processadores e Periféricos Aula 2 - Revisão

Organização de Computadores I

Aula Teórica: Potenciação e Potência de dez

Transcrição:

ELTRÓNICA DE COMPUTADORES 6ª a 8ª Aulas Datapath: Multiplicadores e divisores de números inteiros A 3 A 2 A A S h S h S h 2 S h 3 B u ff er 5,6. Sumário Multiplicação com e sem sinal Multiplicadores série e paralelo Algoritmo de Booth Divisores 5,6.2

Multiplicação binária sem sinal + x Multiplicand Multiplier Partial products Result 5,6.3 Multiplicação binária com sinal x Multiplicand Multiplier -22 x -5 + Partial products Result Alterações: extensão do bit de sinal Último produto parcial tem que ser subtraído -5 5,6.4 2

Arquitecturas matriciais para multiplicação X 3 X 2 X X Y X 3 X 2 X X Y Z HA HA X3 X 2 X X Y 2 Z HA X3 X 2 X X Y 3 Z 2 HA Z 7 Z 6 Z 5 Z 4 Z 3 5,6.5 Arquitecturas matriciais para multiplicação HA HA HA Critical Path Critical Path 2 HA Critical Path & 2 5,6.6 3

Arquitecturas em árvore (Wallace tree) Logarítmico versus linear Partial products First stage 6 5 4 3 2 6 5 4 3 2 Bit position (a) (b) Second stage Final adder 6 5 4 3 2 6 5 4 3 2 (c) HA (d) 5,6.7 Arquitecturas em árvore (Wallace tree) Logarítmico versus linear Partial products x 3 y 3 x 3 y 2 x 2 y 2 x 3 y x y 2 x 3 y x y x 2 y x y x 2 y 3 x y 3 x y 3 x 2 y x y 2 x y x y First stage HA HA Second stage Final adder z 7 z 6 z 5 z 4 z 3 z 2 z z 5,6.8 4

Arquitecturas matriciais Carry-Save (CS) Repesentam resultados parciais por 2 vectores de bits- Carry e Save HA HA HA HA HA HA HA HA Vector Merging Adder 5,6.9 Arquitecturas Wallace tree (CS) Linear versus Logarítmico y y y2 C i- y y y 2 y 3 y 4 y 5 y 3 C i C i- C i C i C i- C i- y 4 C i C i- C i C i- y 5 C i C S C S 5,6. 5

Arquitecturas série Trata-se de um processador dedicado para o algoritmo de multiplicação Início SEM SINAL: Multiplicador_ =. Testa Multiplic_ Multiplicador_ = a. Adiciona multiplicando ao produto e coloca resultado no registo produto Produto Multiplicador Multiplicando 3. Desloca registo multiplicador para a direita N-ésima Não repetição? Sim Final 2. Desloca registo multiplicando para a esquerda 5,6. Arquitecturas série Multiplicador = datapath + controlo Multiplicando 64 bits Desl. Esquerda 64-bit ALU Multiplicador 32 bits Desl. Direita Produto 64 bits Esctrita Controlo MUITO INEFICIENTE: Sub-utilização dos registos Sub-utilização da capacidade da ALU 5,6.2 6

Arquitecturas série Optimização ao nível do algoritmo Início Multiplicador_ =. Testa Multiplic_ Multiplicador_ = a. Adiciona multiplicando na metade MS do produto e guarda resultado Produto Multiplicando 3. Desloca registo multiplicador para a direita N-ésima repetição? Sim Final Não 5,6.3 Arquitecturas série Multiplicador = datapath + controlo Multiplicando 32 bits 32-bit ALU Produto Desl. Direita (Multiplicador) 64 bits Escrita Controlo Para a multiplicação em complemento para dois: - extensão do bit de sinal - alteração do controlo para subtrair o último produto parcial 5,6.4 7

Algoritmo de Booth O algoritmo de Booth permite multiplicar números com sinal de uma forma elegante e reduzindo o número de ciclos para o cálculo 5,6.5 Algoritmo de Booth Exemplo 2 x 6 = x : x + desl. ( no multiplicador) + soma ( no multiplicador) + soma ( no multiplicador) + desl. ( no multiplicador) ALU com soma ou subtracção pode ober o resultado de várias maneiras: 6 = 2 + 8 = + Por exemplo x desl.( no multiplicador) sub. (início seq. de s) desl. (meio seq. de s) + soma (final seq. de s) 8

Algoritmo de Booth Final da sequência Meio da sequência Início da sequência Bit actual Bit à direita Situação Example Op Início de s sub Meio de s nenh. Final de s adic Meio de s nenh. Originalmente para acelerar: deslocamentos mais rápidos do que adições + 5,6.7 Aplicação do algoritmo de Booth (2 x -3) Operação Reg. multiplicando Reg. produto próximo?. valor inicial -> sub a. P = P - m + desl. P (sign ext) b. -> ad + 2a. desloca P 2b. -> sub + 3a. desl 3b. -> nop 4a desloca 4b. final 9

Prova que Booth fuciona em comp. para 2 b 32 bit ( a ( a ( a... ( a ( a + + 29 + 3 a b ( a a ) 2 a + a 3 32 bit ) 2 + 2 a a ) 2 + 3 + 3 2 ) 2 ) 2 3 b + b + 2 b + + 3 3 b b 3 i= (2 a i i a ) 2 ) = b ( a i 3 2 3 + 3 i= i a 2 ) i Equação da multiplicação (axb) em complemento para dois! 5,6.9 Algoritmo Booth Radix-4 Os algoritmos com radix superior a 2 são também designados por algoritmos de Booth modificados: id 2 3 4 5 6 7 analisam um número de bits b=log(radix)+ e deslocam o multiplicador log(radix) bits para a direita em cada iteração as tabelas a usar são compostas; e.g tabela para radix-4: a i+ a i a i- Operação +B +B +2B -2B -B -B Comentários Não sequência de s Final de sequência de s Isolado Final de sequência de s Início de sequência de s Final de sequência de s e início doutra Início de uma sequência de s Sequência de s 5,6.2

Aplicação do algoritmo de Booth radix-4 (5 x -6) Operação Reg. multiplicando Reg. produto próximo?. valor inicial -> sub 2x a. P = P 2xm + desl. P (sign ext) b. -> sub P = P m + 2a. desloca P 2b. final Comparando com o algoritmo de Booth radix-2: número de iterações reduzido para metade; no caso geral de números com n bits e o algoritmo radix-m, são necessárias n iterações log 2 no entanto: a dimensão das tabelas é 2xm, ou seja duplica por cada bit adicional a analisar! no entanto: maior número de operações diferentes! m Circuitos de deslocamento Circuito de deslocamento lógico de apenas bit "" MSB LSB "" Circuito de deslocamento aritmético de apenas bit MSB LSB "" Deslocar um número variável de bits num tempo constante faz-se com deslocadores combinatórios 5,6.22

Circuitos combinatórios de deslocamento Bloco básico: MUX sel MUX 2: D Circuito de deslocamento para a direita de 8 bits: A 7 A 6 A 5 A 4 A 3 A 2 A A S 2 S S R 7 R 6 R 5 R 4 R 3 R 2 R R 5,6.23 Barrel Shifter A 3 B 3 Sh A 2 B 2 Sh2 : Data Wire A B : Control Wire Sh3 A B Sh Sh Sh2 Sh3 Área definida fundamentalmente pelas ligações 5,6.24 2

4x4 Barrel Shifter A 3 A 2 A A S h S h S h 2 S h 3 B u ff er 5,6.25 Divisão: arquitectura série Dividendo Divisor Quociente Resto 5,6.26 3

Divisão: arquitectura série Início: Colocar dividendo no R[Resto]. R[Resto] = R[Resto] - R[Divisor] R[Resto] Testa R[Resto] R[Resto] < 2a. Deslocar R[quociente] para a esquerda e colocar o novo LSB a 2b. Repôr o valor original: R[Resto] = R[Resto] + R[Divisor] Deslocar R[quociente] para a esquerda e colocar o novo LSB a 3. Deslocar R[Divisor] para a direita bit. n+ repetição? Não: < n+ repetições Final Sim: n+ repetições 5,6.27 Divisão: arquitectura série Divisor 64 bits Shift Right 64-bit ALU Quotient 32 bits Shift Left Remainder 64 bits Write Control 5,6.28 4

Divisão: arquitectura série Início: Colocar dividendo no R[Resto]. Deslocar R[Resto] para a esquerda 2. R[Resto] MSB = R[Resto] MSB R[Divisor] R[Resto] Testa R[Resto] R[Resto] < 3a. Deslocar R[Resto] para a esquerda e colocar o novo LSB a 3b. Repôr o valor original: R[Resto] MSB = R[Resto] MSB + R[Divisor] Deslocar R[Resto] para a esquerda e colocar o novo LSB a n repetição? Não: < n repetições Sim: n repetições 3. Deslocar R MSB [Resto] para a direita bit. Final 5,6.29 Arquitectura série Divisor 32 bits 32-bit ALU HI LO Remainder (Quotient) 64 bits Shift Left Write Control 5,6.3 5

Algoritmo SRT para a divisão SRT- o algoritmo para divisão mais conhecido: Sweeney, Robertson, and Tocher Usa a divisão do tipo nonrestoring (n adições/subtracções): bit de quociente pode ser, e -: 5,6.3 Algoritmo SRT para a divisão Divisão Nonrestoring Modificada Problema: comparação de 2ri- com D ou -D Solução: limitando D à fracção normalizada /2 D < Região de 2ri- para o qual qi= reduzido a 5,6.32 6

Algoritmo SRT para a divisão Vantagem: Comparar resultado parcial 2ri- com /2 ou -/2, e não D ou -D Fracção binária representada em complemento para 2 /2 iff os MSBs valem. -/2 iff os MSBs valem. Apenas 2 bits de 2ri- são examinados não há comparação completa entre 2ri- e D Seleccionando o dígito de quociente: 5,6.33 Algoritmo SRT para a divisão Dígitos do quociente seleccionados para que ri D resto final < D O processo inicia-se com o divisor normalizado o resto parcial é normalizado: desloca-se para a esquerda sobre 's/ s se positivo/negativo Exemplo: 2ri-=.xxxx (x - /); 2ri-</2 - qi=, 2ri=.xxxx 2ri-=.xxxx; 2ri->-/2 - qi=, 2ri=.xxxx SRT é divisão nonrestoring com o divisor e o resto normalizados 5,6.34 7

Algoritmo SRT para a divisão. Amostrar bits + significativos do divisor e dividendo 2. Usar bits para indexar tabela que fornece bits de estimativa do quociente 3. Dividendo - Divisor * estimativa 4. Guardar dígitos 5. Deslocar registos de m bits 6. Go to 5,6.35 Algoritmo SRT para a divisão Algoritmo radix 2 (Para a explicação considerar um ponto decimal à esquerda do bit mais significativo). Se R[Divisor] tem k MSB a deslocar registos para a esquerda k posições (R[divisor] >= ½) 2. For (i=; i<n; i++). 3 bits R MSB [Resto] iguais (-¼<=R[Resto]<¼): desloca bit para a equerda R[Resto] e q i = 2. 3 bits diferentes e R[Resto] negativo (R[Resto]<-¼): desloca bit para a esquerda, soma divisor ao resto e q i =- 3. 3 bits diferentes e R[Resto] positivo (R[Resto]>=¼): desloca bit para a esquerda, subtrai divisor ao resto e q i = 3. Se R[Resto] for negativo, corrigir o Resto adicionando o Divisor e o quociente subtraindo. O R[Resto] é deslocado para a direita k posições para compensar o passo. 5,6.36 8

Algoritmo SRT para a divisão Deslocar para esquerda 2 pos. 3 bits = e (desl q=) 3 bits = e (desl. q=) 3 bits e - (desl. e subtrai q=) - 3 bits = (desl. e q=) positivo, certo; deslocar para direita 2 pos R[quociente] = (2) R[Resto] = () 5,6.37 Algoritmo SRT para a divisão P = P q d Pj + = rpj q j+ d Para convergir: Valor máximo 2 r Pj = + q j+ d 3 Valor mínimo 2 r Pj = + q j+ d 3 q j+ = 2,,, +, + 2 x Pj + Pj Pj + d r 2 r = 4 Pj + d 3 5,6.38 9

Algoritmo SRT para a divisão P j+ q j =-2 q j =- q j = q j =+ q j =+2-2/3d +2/3d P j q j = d/6 d/3 q j =2-2/3d d/2 q j = 5d/2 +2/3d P j e.g. 4*5/2d-xd = 2/3d P j <5/2d escolhe q= 4*/2d-xd = -2/3d /2d< Pj escolhe q= 5,6.39 Conclusões A multiplicação sem sinal e em complemento para dois têm algoritmos diferentes (ao contrário da adição!) As arquitecturas paralelas para multiplicação rápida têm estruturas em árvore de operadores do tipo CSA Para a multiplicação do tipo série com sinal deve utilizar-se o algoritmo de Booth Os circuitos lógicos para deslocamento de um número variável de bits são circuitos combinatórios Algoritmo de divisão do tipo série: SRT 5,6.4 2