Capítulo 4. This material may not be copied or distributed for commercial purposes without express written permission of the copyright holder.

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

Aritmética Binária e Caminho de Dados. Aritmética Binária Caminho de Dados

Arquitetura de Computadores I

Aritmética Computacional (Ponto Flutuante) Capítulo 4

Aritmética Computacional Aula 01. Professor: André Luis Meneses Silva orgearq20091.wordpress.com

Arquitetura e Organização de Computadores

Arquitetura de Computadores

Aritmética. E agora: Implementação da Arquitetura

Sistemas Digitais INE 5406

Arquitetura e Organização de Computadores

Capítulo 3. This material may not be copied or distributed for commercial purposes without express written permission of the copyright holder.

Capítulo 3. Instruções: Aritmética MIPS

Aritmética dos Computadores

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

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

Organização e Arquitetura de Computadores I

Aula 3 - Representação de Dados

Infraestrutura de Hardware. Implementação Monociclo de um Processador Simples

ARQUITECTURA DE COMPUTADORES

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

12 de Março de Aula 5

Aula 9: Estouro e Representação em Ponto Flutuante

Organização e Arquitetura de computadores

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

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

Arquitetura de Computadores. Tiago Alves de Oliveira

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

Arquiteturas de Computadores

Projeto de Somador com e sem Sinal. Qualificadores

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

Arquitetura de Sistemas Digitais

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I. Qualificadores. prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno

Aula 9: Estouro e Representação em Ponto Flutuante

Estouro e Representação em Ponto Flutuante

MIPS Implementação. sw) or, slt. Vamos examinar uma implementação que inclui um subconjunto de instruções do MIPS

SSC0114 Arquitetura de Computadores

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

Sistemas Digitais (SD) Circuitos combinatórios: somadores, subtractores e comparadores

1. Notação em Complemento de 2

Unidade 3 Aritmética Computacional Uma breve introdução

CAPÍTULO 4 CAMINHO DE DADOS E CONTROLE

Aula 16: UCP: Conceitos Básicos e Componentes

4. Modelo de Programação do DLX Introdução

Introdução à Computação

Arquitectura de Computadores I

Organização e Arquitetura de Computadores I

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

Cálculo Numérico Conceitos Básicos

Arquitetura e Organização de Computadores

PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

Modelagem e Implementação em VHDL de Soma e Multiplicação em Ponto Flutuante de 32 Bits Segundo o Padrão IEEE-754

Arquitetura e Organização de Computadores

Operações Aritméticas e Lógicas e Avaliação de Condições

Prof. Leonardo Augusto Casillo

Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação

Relembrando desempenho...

UCP: Construindo um Caminho de Dados (Parte I)

O Processador: Via de Dados e Controle

Circuitos Aritméticos. Circuitos Aritméticos. Circuitos Aritméticos. Circuitos Aritméticos. Circuitos Aritméticos. Circuitos Aritméticos

CIRCUITOS ARITMÉTICOS (Unidade 4)

Sistemas de Numeração. Sistemas de Numeração. Sistemas de Numeração. RUIDO em Sistemas Computacionais. Arquiteturas de Computadores

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

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I

Aula 17: UCP: Construindo um Caminho de Dados (Parte I)

Disciplina de. Organização de Computadores Digitais

Disciplina de. Organização de Computadores Digitais

Processador: Conceitos Básicos e Componentes

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

Guia Mangá. Microprocessadores. Michio Shibuya, Takashi Tonagi e Office Sawa. Novatec

Organização de Sistemas de Computadores

Arquiteturas de Computadores

Relembrando desempenho...

SISTEMAS DIGITAIS CIRCUITOS COMBINATÓRIOS TÍPICOS

*********************

REPRESENTAÇÃO DE NÚMEROS EM BINÁRIO E HEXADECIMAL

Operações com números binários

lw, sw add, sub, and, or, slt beq, j

Índice. 1.2 Sistemas Numéricos em uma Base B Qualquer

Métodos Numéricos - Notas de Aula

Projecto de Sistemas Digitais. Introdução

PARTE I I: ARITMÉTICA COMPUTACIONAL ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

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

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

CONJUNTO DE INSTRUÇÕES

SISTEMAS DIGITAIS (SD)

Cálculo Numérico - Mat 215. Prof. Dirceu Melo. Prof. Dirceu Melo - MAT215

Organização de Computadores

Arquitetura e organização de computadores Uma visão geral

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

Representação de Números em Ponto Flutuante

Projetos de Circuitos Digitais em VHDL e FPGA

Organização de Computadores

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

Introdução à Computação

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

Projecto de Sistemas Digitais

Circuitos Integrados. Nível da Lógica Digital (Aula 7) Circuitos Combinacionais. Circuitos Lógicos Digitais Básicos. Multiplexadores (1)

Aula 14 Funcionamento de Processadores (Visão específica)

Transcrição:

Capítulo 4 Permission is granted to copy and distribute this material for educational purposes only, provided that the complete bibliographic citation and following credit line is included: "Copyright 998 Morgan Kaufmann Publishers." Permission is granted to alter and distribute this material provided that the following credit line is included: "Adapted from Computer Organization and Design: The Hardware/Software Interface, 2nd Edition David A. Patterson, John L. Hennessy Morgan Kaufmann, 2nd ed., 997, ISBN 55864286 Copyright 998 Morgan Kaufmann Publishers." Lecture slides created by Michael Wahl in English Tradução: Christian Lyra Gomes Revisão: Wagner M. N. Zola This material may not be copied or distributed for commercial purposes without express written permission of the copyright holder. Aritmética Por onde já passamos: Desempenho (segundos, ciclos, instruções) Abstrações: Arquitetura de Conjunto de Instruções Linguagem Assembly e Linguagem de Máquina O que está a frente: Implementar a Arquitetura operação a b 32 32 ULA 32 resultado 2

Números Bits são apenas bits (não tem um significado inerente) convenções definem a relação entre bits e números Números binários (base 2)... decimal:...2 n - Claro que isso fica mais complicado: números são finitos (overflow) frações e números reais números negativos ex., não existe instrução subi no MIPS; addi pode adicionar um número negativo Como nós podemos representar números negativos? Qual padrão de bits irá representar que número? 3 Representações possíveis Sinal de Magnitude: Complemento de Complemento de 2 = + = + = + = + = + = + = +2 = +2 = +2 = +3 = +3 = +3 = - = -3 = -4 = - = -2 = -3 = -2 = - = -2 = -3 = - = - Pontos: balanço, número de zeros, facilidade de operações Qual deles é melhor? Por que? 4

MIPS Números de 32 bits com sinal: two = ten two = + ten two = + 2 ten... two = + 2,47,483,646 ten two = + 2,47,483,647 ten two = 2,47,483,648 ten two = 2,47,483,647 ten two = 2,47,483,646 ten... two = 3 ten two = 2 ten two = ten maxint minint 5 Operações com Complemento de Dois Negar um número em complemento de dois: inverter todos e bits e adicionar lembre-se: negar e inverter são bem diferentes! Convertendo números com n bits em números com mais de n bits: imediatos de 6 bits do MIPS 6 bit são convertidos em 32 bits para as operações aritméticas copie o bit mais significante (o bit do sinal) nos outros bits -> -> extensão de sinal" (lbu vs. lb) 6

Adição & Subtração Como na escola primária (vai/empresta s) + - - Operações em complemento de dois fácil subtração usando adição de números negativos + Overflow (resultado muito grande para uma palavra de computador finita): ex., adicionando 2 números de n bits não resulta em outro número de n bits + note que o termo overflow pode ser enganoso, ele não significa um carry (vai-um) overflowed 7 Detectando Overflow Não há overflow quando se adiciona um número positivo e um negativo Não há overflow quando os sinais são iguais na subtração Overflow ocorre quando o valor afeta o sinal: overflow quando adicionando dois positivos resulta num negativo ou, adicionando dois negativos resulta num positivo ou, subtraindo um negativo de um positivo resulta num negativo ou, subtraindo um positivo de um negativo e o resultado é positivo Considere as operações A + B, and A B Pode ocorrer overflow se B for? Pode ocorrer overflow se A for? 8

Efeitos do Overflow Uma exceção ocorre (interrupção) controle salta para um endereço de exceção pré-definido Endereço onde foi interrompido é armazenado para uma possível reinicio Detalhes baseados no sistema de software/linguagem exemplo: controle de vôo vs lição de casa Nem sempre se quer detectar overflow novas instruções MIPS: addu, addiu, subu nota: addiu continua estendendo o sinal! nota: sltu, sltiu para comparações sem sinal 9 Revisão: Álgebra Booleana & portas lógicas (Gates) Problema: Considere uma função lógica com 3 entradas: A, B, e C. Saída D é verdadeira se pelo menos uma entrada for verdadeira Saída E é verdadeira se exatamente duas entradas forem verdadeiras Saída F é verdadeira somente se as 3 entradas forem verdadeiras Mostre a tabela verdade para essas 3 funções. Mostre as equações Booleanas para essas 3 funções. Mostre uma implementação usando apenas inversores, portas E e portas OU.

Uma ULA (Unidade Lógica Aritmética) Vamos construir uma ULA que suporte as instruçõesandi e ori nós iremos construir apenas uma ULA de bit e usar 32 delas operação op a b res a b resultado Possível implementação (soma-dos-produtos): Revisão: O Multiplexador Seleciona uma das entras para ser a saída, baseado numa entrada de controle S A B C nota: Nós chamamos isso de um mux de 2 entradas mesmo que ele tenha 3 entradas! Vamos construir nossa ULA usando um MUX: 2

Diferente Implementações Não é fácil decidir qual é a melhor maneira de se construir alguma coisa Não se deseja muitas entradas para um única porta Não se deseja ter que atravessar muitos portas para nossos propósitos, facilidade de compreensão é importante Vamos olhar a ULA de bit para adição: CarryIn a b S um c out = a b + a c in + b c in sum = a xor b xor c in CarryOut Como nós podemos construir uma ULA de bit para adição, E e OU? Como nós podemos construir uma ULA de 32 bits? 3 Construindo uma ULA de 32 bits Operat ion Operat ion a b A LU CarryO ut Result CarryIn a a b A LU CarryO ut Result Result b 2 a2 b2 A LU2 CarryO ut Result2 CarryOut a3 b3 ALU3 Result3 4

E a subtração (a b)? Abordagem Complemento de 2: apenas negamos b e adicionamos. Como nós negamos? Uma solução muito inteligente: Binvert Operation a Result b 2 CarryOut 5 Ajustando a ULA ao MIPS Precisa suportar a instrução atribui-se-menor-que (set-on-less-than - slt) lembre-se: slt é uma instrução aritmética produz se rs < rt, e caso contrário usa subtração: (a-b) < implica que a < b Precisa suporta o teste de igualdade (beq $t5, $t6, $t7) usa subtração: (a-b) = implica que a = b 6

Suportando slt Bi nvert CarryIn Operati on Podemos descobrir a idéia? a b 2 Result 3 a. CarryO ut Binvert Operat ion a b 2 Result 3 Set b. Overf low detecti on O verflow Bi nvert Operation a b ALU Result CarryOut a b ALU CarryOut Result a2 b2 ALU2 CarryOut Result 2 CarryIn a3 b3 ALU3 Set Result 3 Overf low 8

Teste de igualdade Observe as linhas de controle: Bnegat e Opera tion = and = or = add = subtract = slt a b a b ALU CarryO ut ALU CarryO ut Result Result Zero Nota: zero retorna quando o resultado é zero! a2 b2 ALU2 CarryO ut Result2 a3 b3 ALU3 Result 3 Set Overf low 9 Conclusão Nós podemos construir uma ULA para suportar o conjunto de instruções do MIPS idéia chave: usar o multiplexador para selecionar a saída que nós queremos nós podemos executar a subtração de maneira eficiente com o complemento de 2 nós podemos replicar a ULA de bit para produzir a ULA de 32 bits Pontos importantes sobre o hardware todas as portas lógicas estão sempre funcionando a velocidade de uma porta é afetada pelo número de entradas a velocidade de um circuito é afetada pelo número de portas em série (no caminho crítico ou o nível de lógica mais profundo ) Nosso foco primário: compreensão, no entanto, Mudanças inteligentes na organização podem melhorar o desempenho (similar a usar melhores algoritmos no software) Nós iremos olhar dois exemplos de adição e multiplicação 2

Problema: somador com propagação de vai-* é lento Uma ULA de 32 bits é rápida como uma ULA de bit? Existe mais de uma maneira de se fazer a adição? dois extremos: propagação de vai- e soma de produtos Você pode ver a propagação? Como você pode se livrar dela? c = b c + a c + a b c 2 = b c + a c + a b c 2 = c 3 = b 2 c 2 + a 2 c 2 + a 2 b 2 c 3 = c 4 = b 3 c 3 + a 3 c 3 + a 3 b 3 c 4 = Não é praticável! Por que? *N.T.: ripple carry adder 2 Somador com antecipação do vai-* Uma aproximação no meio dos nossos dois extremos Motivação: Se nós não sabemos o valor do vem-, o que podemos fazer? Quando nós podemos sempre gerar o vai-? g i = a i b i Quando nós podemos propagar o vai-? p i = a i + b i Nós nos livramos da propagação? c = g + p c c 2 = g + p c c 2 = c 3 = g 2 + p 2 c 2 c 3 = c 4 = g 3 + p 3 c 3 c 4 = Praticável! Por que? *N.T.: Carry-lookahead adder 22

Use o princípio para construir somadores maiores a b a b a2 b2 a3 b3 ALU P G C pi gi ci + Result--3 Carry-lookahead unit a4 b4 a5 b5 a6 b6 a7 b7 a8 b8 a9 b9 a b a b ALU P G ALU2 P2 G2 C2 C3 pi + gi + ci + 2 pi + 2 gi + 2 ci + 3 Result4--7 Result8-- Não podemos construir somadores com 6 bits desse jeito... (muito grande) Podemos usar o somadores com propagação de vai- com somadores com antecipação de vai- de 4 bits Melhor: use o princípio AV - de novo! a2 b2 a3 b3 a4 b4 a5 b5 ALU3 P3 G3 C4 pi + 3 gi + 3 ci + 4 Result 2--5 CarryO ut 23 Multiplicação Mais complicado do que a adição Conseguida através de deslocamento e adição Mais tempo e mais área Vamos olhar 3 versões baseadas no algoritmo da escola primária (multiplicando) x_ (multiplicador) Números negativos: converter e multiplicar existem técnicas melhores, mas nós não veremos elas 24

Multiplicação: Implementação St art Mult iplier =. Te st M ultipl ier M ultipl ier = Mul tipli cand 64 bit s Shift lef t a. A dd m ul tipli cand to product and place the result in Product register 64-bit ALU Multiplier Shi ft right 32 bits 2. Shift the M ultip lican d regi ster left bit Product 64 bits Wri te Control test 3. Shift the M ultipl ier register right bi t 32nd repet iti on? No: < 32 repet itions Y es: 32 repeti tions Done 25 Segunda Versão St art M ulti plier =. Test Mult iplier Mult iplier = M ulti pl icand 32 bit s a. Add m ulti pl icand to the l eft half of the product and place the result in the left half of the Product register 32-bi t A LU Multiplier Shi ft right 32 bits 2. Shi ft the Product register righ t bit P roduct Shi ft right Wri te Control test 64 bits 3. Shi ft the Mult iplier register ri ght bit 32nd repetit ion? No: < 32 repet iti ons Yes: 32 repet itions Done 26

Versão Final St art Produ ct =. Test Product Product = Mult iplicand 32 bit s a. Add m ulti pl icand to the l eft half of the product and place the result in the left half of the Product register 32-bit A LU Product Shift ri ght Writ e Control test 2. Shi ft the Product register righ t bit 64 bit s 32nd repetit ion? No: < 32 repet iti ons Yes: 32 repet itions Done 27 Ponto Flutuante (uma breve olhada) Nós precisamos uma meio para representar números com frações, ex., 3.46 números muito pequenos, ex.,. números muito grandes, ex., 3.5576? 9 Representação: sinal, expoente, significand : ( ) sinal???significand???2 expoente mais bits para o significand dá mais precisão mais bits no expoente aumenta o intervalo Padrão de ponto flutuante IEEE 754: precisão simples: 8 bits expoente, 23 bit significand precisão dupla: bit expoente, 52 bit significand 28

Padrão de Ponto Flutuante IEEE 754 O bit inicial do signifcand é implícito Expoente é ajustado para facilitar a ordenação todos s é o menor expoente e todos os s é o maior ajuste de 27 para precisão simples e de 23 para precisão dupla sumário: ( ) sinal?????significand)???2expoente ajuste Exemplo: decimal: -.75 = -3/4 = -3/2 2 binário: -. = -. x 2 - ponto flutuante: expoente = 26 = IEEE precisão simples: 29 Complexidade s do Ponto Flutuante As operações são um tanto mais complicadas (veja o texto) Além do overflow podemos ter também o underflow Precisão pode ser um grande problema IEEE 754 guarda dois bits extras, guarda e redondo (round) quatro modos de arredondamento positivos divididos por zero resultam em infinito zero dividido por zero resulta em não é um número outras complexidades Implementar o padrão pode ser trabalhoso Não usar o padrão pode ser ainda pior veja o texto para a descrição do bug do 8x86 e do Pentium! 3

Sumário do Capítulo 4 Aritmética de computadores é restrita por uma precisão limitada Padrões de Bits não tem nenhum significado inerente mas existem padrões Complemento de 2 Ponto flutuante IEEE 754 Instruções de computador determinam o significado dos padrões de bits Desempenho e precisão são importantes pois existem muitas complexidades em máquinas reais (ex., algoritmos e implementações). Nós estamos prontos para seguir adiante (e implementar o processador) Você pode querer uma revisão (Seção 4.2 é uma boa leitura!) 3