Na Aula Anterior... Operações Aritméticas e Lógicas

Documentos relacionados
Na Aula Anterior... Operações Aritméticas e Lógicas. Nesta Aula. Instruções Aritméticas (N e Z) Exemplo 11/03/2019

ISA Instruction Set Architecture (Revisão) Na Aula Anterior... Nesta Aula. Conceitos. Tipos de Dados. Tipos de Dados 11/03/2019

ARQUITECTURA DE COMPUTADORES

Arquitetura de Computadores

Arquitetura e Organização de Computadores

Notas de Aula Guilherme Sipahi Arquitetura de Computadores

Arquitetura e Organização de Computadores

Aritmética dos Computadores

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

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

Sistemas Digitais INE 5406

Arquitetura e Organização de Processadores. Aula 2. Processadores RISC Apresentação do processador MIPS

Sistemas de Computação. Representação em Ponto Flutuante

Arquitetura de Computadores

REPRESENTAÇÃO DE DADOS. Prof. Maicon A. Sartin

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

Capítulo 3. Aritmética de Computadores

Revisão de Arquitetura e Organização de Computadores. Na Aula Anterior... Abstração de Computadores. Nesta Aula 19/08/2016

Ponto Fixo e Ponto Flutuante

Guilherme Martini Gustavo Schmid de Jesus Luís Armando Bianchin Márcio José Mello da Silva

Guia Rápido MIPS. Tipos de Dados e Formatações

Organização e Arquitetura de computadores

Operações de Controle de Fluxo e Acesso a Memória. Na Aula Anterior... Nesta Aula. Instruções de Controle de Fluxo. if then - else.

Aula 3 - Representação de Dados

Organização de Computadores μarquitetura. Na Aula Anterior... Introdução. Nesta Aula. MIPS-Monociclo. Formas de Organização 17/10/2016

Sistemas numéricos e a Representação Interna dos Dado no Computador

Números binários e erros

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

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

TP062-Métodos Numéricos para Engenharia de Produção Erros-Ponto Flutuante

Estouro e Representação em Ponto Flutuante

Sistemas Digitais Módulo 3 Codificações BCD, Gray e ASCII e Números Fracionários

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

Prof. Leonardo Augusto Casillo

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

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

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

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

Representação de Números em Ponto Flutuante

Unidade III. Sistemas Numéricos e o Computador

Infraestrutura de Hardware. Instruindo um Computador

ELETRÔNICA DIGITAL I

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

Dessa forma pode-se transformar qualquer número em qualquer base para a base 10.

Aula 11. A Informação e sua Representação Ponto-Flutuante. Prof. Dr. Dilermando Piva Jr.

Home Programa Exercícios Provas Professor Links. 2.1 Representação de um número na base dois. O número binário 101,101 significa, na base dois:

Cálculo Numérico. Erros em processamento Numéricos

Disciplina: Introdução à Engenharia da Computação

Arquitetura e Organização de Computadores. Sistemas Numéricos

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

Organização e Arquitetura de Computadores I

Métodos Numéricos Erros Ponto Flutuante. Professor Volmir Eugênio Wilhelm Professora Mariana Kleina

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

Arquitectura de Computadores I

SISTEMA DE NUMERAÇÃO. Introdução a Informática. Vinícius Pádua

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Básicas. Aula Tópico 2

Organização de Computadores I

ARQUITETURA DE COMPUTADORES

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

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

Cálculo Numérico Conceitos Básicos

Métodos Numéricos - Notas de Aula

Erros, Precisão Numérica e Ponto Flutuante

Representação e erros numéricos

Aproximações e Erros

Arquitetura e Organização de Computadores

Cálculo Numérico. Conjunto de métodos utilizados para a obtenção de resultados de problemas matemáticos através de aproximações.

Aula 9. Introdução à Computação. ADS IFBA

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

Prof. Leandro Tonietto Introdução a computação e suas aplicações Curso de Segurança da Informação UNISINOS jun-09

Organização e Arquitetura de Computadores. Aula 10 Ponto Flutuante Parte I Juliana F. Camapum Wanderley

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

Sistemas de Computação

Cálculo Numérico Noções básicas sobre erros

Sistemas de Computação

Infraestrutura de Hardware

Arquitetura e Organização de Computadores

Organização e Arquitetura de Computadores I

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES SISTEMAS DE NUMERAÇÃO: REPRESENTAÇÃO EM PONTO FLUTUANTE. Prof. Dr. Daniel Caetano

MÓDULO. Conjunto de Instruções do 8086/88 Aritméticas, lógicas, deslocamento e rotação M 02

SEPS REPRESENTAÇÃO DE Nºs DIGITAIS I

Sistemas Numéricos e Representação de Dados. Heitor S. Ramos

Introdução. à Ciência da. Representação de Números em Ponto Flutuante. Aula 21. Números Fracionários

Algoritmos e Estruturas de Dados I (DCC/003) 2013/1. Estruturas Básicas. Aula Tópico 4

étodos uméricos Erros Visão Geral Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA

1: 2: 2, [1] [2] 0x x001f8021 $16,$0,$31 13 [3] 0x x

Arquitetura de Computadores

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

Cálculo Numérico IPRJ/UERJ. Sílvia Mara da Costa Campos Victer ÍNDICE. Aula 1- Introdução. Representação de números. Conversão de números

Introdução à Computação

ARQUITETURA DE COMPUTADORES

SSC0114 Arquitetura de Computadores

Fundamentos de Programação

Universidade Federal do Espírito Santo - UFES

Organização e Arquitetura de Computadores I

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

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

Sistemas Numéricos e o Computador

UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

Transcrição:

GBC36Arq. e Org. de Computadores I 29/8/26 Na Aula Anterior... Operações Aritméticas e Lógicas A linguagem Assembly; Montadores; Ligadores; Ligação Estática; Ligação Dinâmica; Universidade Federal de Uberlândia Faculdade de Computação Prof. Dr. rer. nat. Daniel D. Abdala Carregadores; Algumas palavras sobre Compiladores; Otimização de código; Programas executáveis; 2 Instruções Aritméticas (ℕ e ℤ) Nesta Aula Instruções aritméticas em ℤ; Formato e Codificação de Instruções; Overflow e underflow; Instruções aritméticas em ℝ; Instruções lógicas; add Adição com trap no overflow (não suportado pelo C) add $rd, $rs, $rt addi Adição com trap no overflow segundo operando cte. addi $rt, $rs, cte addiu Adição sem trap no overflow segundo operando cte. addi $rt, $rs, cte addu Adição sem trap no overflow addu $rd, $rs, $rt aui Adiciona a cte. Aos bits mais significativos aui $rt, $rs, cte clo Conta # de zeros até achar um clo $rd, $rs clz Conta # de uns até achar um clz $rd, $rs div Divisão com overflow (LO quociente HI resto) div $rs, $rt divu Divisão Natural sem overflow divu $rs, $rt madd Multiplica e adiciona madd $rs, $rt maddu Multiplica e adiciona (Naturais) maddu $rs, $rt 3 Instruções Aritméticas (ℕ e ℤ) mfhi Move o dado contido no registrador HI mfhi $rs mflo Move o dado contido no registrador LO mflo $rs msub Multiplica e subtrai msub $rs, $rt msubu Multiplica e subtrai (Naturais) msubu $rs, $rt mtlo Move o dado contido em $rs para o registrador LO mtlo $rs mthi Move o dado contido em r$ para o registrador HI mthi $rs mul Multiplicação s/ overflow mul $rd, $rs, $rt mult Multiplicação (hi 32bitsMSB lo 32bitsLSB ) mult $rs, $rt multu Multiplicação Natural (hi 32bitsMSB lo 32bitsLSB ) multu $rs, $rt sub Subtração com overflow sub $rd, $rs, $rt subu Subtração sem overflow sub u $rd, $rs, $rt 4 long a,b,c,d = 42; d = (ab) (ac); a $s b $s c $s2 d $s3 add $t, $s, $s add $t, $s, $s2 sub $s3, $t, $t 5 6

29/8/26 7 8 Formato das Instruções Aritméticas e Lógicas No MIPS todas as Instruções possuem 32 bits, sempre! Faz-se necessário utilizar um código binário para codificar as instruções em 32 bits; A maioria das instruções aritméticas e lógicas são codificadas usando o formato R, as remanescentes utilizando o formato I; Para interpretar o padrão de bits, o hardware utiliza as seguintes máscaras de bits: R 3 3 29 28 27 26 25 24 2 2 9 8 7 6 5 4 3 2 9 8 7 6 5 4 3 2 opcode rs rt rd shamt function I 3 3 29 28 27 26 25 24 2 2 9 8 7 6 5 4 3 2 9 8 7 6 5 4 3 2 9 opcode rs rt deslocamento ou constante Codificação Cada campo de uma instrução é codificado como uma sequência de bits; A maioria das instruções é do tipo R, pois todos os operadores são registradores; Para codificar qual dos 32 registradores são necessário 5 bits (2 5 = 32) (campos rs, rt e rd); Opcode codifica qual instrução. O campo function é usado para aumentar o número de instruções codificáveis; Por fim o campo shamt (shift ammount) é usado apenas nas instruções de deslocamento, e zerado nas demais; R add $t, $s, $s 3 3 29 28 27 26 25 24 2 2 9 8 7 6 5 4 3 2 9 8 7 6 5 4 3 2 mul $t, $s, $s2 mul $t, $s3, $s4 add $t2, $s4, $s5 sub $t3, $s4, $s5 div $t, $t mflo $t4 mul $t5, $t2, $t3 sub $s, $t4, $t5 long a,b,c,d,e,f = 42; a = ((b*c) / (d*e)) ((ef)*(e-f)) mul $t, $s, $s2 mul $t, $s3, $s4 div $t, $t mflo $t add $t, $s4, $s5 sub $t2, $s4, $s5 mul $t, $t, $t2 sub $s, $t, $t a $s b $s c $s2 d $s3 e $s4 f $s5 opcode rs rt rd shamt function 2 2

29/8/26 Outros usos para o ADD/ADDI A família do ADD Inicializar o valor de um registrador; addi $s,$zero,42 add Adição com overflow add $rd,$rs,$rt Zerar um registrador addi Adição com overflow segundo operando constante addi $rt,$rs,cte addu Adição sem overflow de números não sinalizados addu $rd,$rs,$rt addiu Adição sem overflow de números não sinalizados segundo operando constante addiu $rt,$rs,cte add $s,$zero,$zero addi $s,$zero,$zero Mover dados de um registrador para outro; add $s,$zero,$s Qual a diferença entre com overflow e sem overflow? Incremento; addi $s,$s, Problema com a nomenclatura Simplesmente significa que o sinal de overflow, quando ocorrer não lançará uma exceção. Decremento; addi $s,$s,- 3 Complemento de 2 O complemento de 2 é calculado pela inversão de cada um dos bits do número. Subsequentemente somase ao valor dos bits invertidos; 2-2 Decimal Comp. 2 7 6 5 4 3 2 - -2-3 -4-5 -6-7 -8 4 Overflow Qual a diferença entre uma instrução com e sem overflow? 27-5 Underflow Multiplicação de Números Binários Qual a diferença entre uma instrução com e sem overflow? - 28 - - 28-27 6 9 9 x 7 caso resp x x x x 8 3

29/8/26 Multiplicação de Palavras x a b c d e f g h Somas com deslocamento para a Esquerda a b ab c ic d jd 9 i j k 8 8 9 9 9 Considerações acerca do MULT 2 A multiplicação de dois números de 32 bits pode gerar potencialmente um número de 64 bits significativos; Todos os registradores possuem 32 bits; Utilizamos dois registradores especiais para armazenar o resultado de 32 bits de uma multiplicação; Dois registradores especiais: long a,b,c = 42; c = a*b; mult $s,$s mflo $s2 a $s b $s c $s2 mul $s2,$s,$s HI 32 bits mais significativos da palavra; LO 32 bits menos significativos da palavra. 2 22 Instruções Aritméticas (ℝ) Instruções Aritméticas (ℝ) abs.d $f2 $f4 valor absoluto (precisão dupla) abs.d $f2, $f4 ceil.w.s Aproxima para cima para o inteiro (word) ceil.w.s $f, $f abs.s $f $f valor absoluto (precisão simples) abs.d $f, $f cvt.d.s Converte de precisão simples para dupla cvt.d.s $f2, $f add.d $f2 $f4 $f6 Soma em precisão dupla add.d $f2, $f4, $f6 cvt.d.w Converte de inteiro 32 bits para precisão dupla cvt.d.w $f2, $f add.s $f $f $f2 Soma em precisão simples add.d $f, $f, $f2 cvt.s.d Converte de precisão dupla para simples cvt.s.d $f, $f2 c.eq.d $f2 == $f4? CF : CF c.eq.d $f2, $f4 cvt.s.w Converte inteiro 32bits para single cvt.s.w $f, $f c.eq.s $f == $f? CF : CF c.eq.s $f, $f cvt.w.d Converte de precisão dupla para inteiro 32 bits cvt.w.d $f, $f2 c.le.d $f2 <= $f4? CF : CF c.le.d $f2, $f4 cvt.w.s Converte de precisão simples para inteiro 32 bits cvt.w.s $f, $f c.le.s $f <= $f? CF : CF c.le.s $f, $f div.d Divisão em ponto flutuante precisão dupla div.d $f2, $f4, $f6 c.lt.d $f2 < $f4? CF : CF c.lt.d $f2, $f4 div.s Divisão em ponto flutuante precisão simples div.s $f, $f, $f3 c.lt.s $f < $f? CF : CF c.lt.s $f, $f floor.w.d Arredonda para o inteiro 32 bits para baixo (double) floor.w.d $f, $f2 ceil.w.d Aproxima para cima para o inteiro (word) ceil.w.d $f, $f2 floor.w.s Arredonda para o inteiro 32 bits para baixo (single) floor.w.s $f, $f 23 24 4

29/8/26 Instruções Aritméticas (R) mov.d Move o double em f4-f3 para f2-f3 mov.d $f2, $f4 mov.s Move o single em f para f mov.s $f, $f movf Move t2 para t se CF = movf $t, $t2 movt Move t2 para t se CF = movt $t,$t2 mul.d Multiplicação em precisão dupla mul.d $f2,$f4,$f6 mul.s Multiplicação em precisão simples mul.s $f,$f,$f3 neg.d Negação double neg.d $f2,$f4 neg.s Negação single neg.s $f,$f sub.d Subtração double sub.d $f2,$f4,$f6 sub.s Subtração single sub.s $f,$f,$f3 Notação em Ponto Flutuante Fundamentada na notação numérica científica; 42,42 = 42,42x = 4,242x =,4242x 2 Utilização otimizada do espaço de representação; Note que o sinal fracionário flutua dependendo do expoente associado a base; exp oente, mantissa base A mantissa está contida no intervalo [,[ É importante notar que a notação em ponto flutuante pode induzir à erros de arredondamento. 25 26 Padrões de Representação Precisão Simples s expoente mantissa Precisão Dupla IEEE Standard for Floating-Point Arithmetic, IEEE 754 28 3 3 63 62 52 5 s expoente mantissa Conversão (Precisão simples) Expoente possui um bias de 27 ( 2 ); Ao contrário da notação científica tradicional, que coloca todos os dígitos significativos a direita da vírgula, em ponto flutuante deixamos um a esquerda da vírgula. Equação para conversão binário decimal: s n ( ) 23 i b i e27 23i 2 2 27 28,25, 2,x2 3 sinal expoente 273 = 3 () = mantissa 3 3 3DCCCCCD H 3 3 sinal expoente 23-27= -4 mantissa, 2 2-2 -4 2-5 2-8 2-9 2-2 2-3 2-6 2-7 2-2 2-2 2-23 =.623848579.623848579 expoente valor 2 -,5 2-2,25 2-3,25 2-4,625 2-5,325 2-6,5625 2-7,7825 2-8,39625 2-9,95325 2 -,9765625 2 -,4882825 2-2,2444625 2-3,227325 2-4 6,355625e-5 2-5 3,5757825e-5 2-6,5258789625e-5 2-7 7,6293945325e-6 2-8 3,84697265625e-6 2-9,97348632825e-6 2-2 9,53674364625e-7 2-2 4,76837582325e-7 2-22 2,3848579563e-7 2-23,9292895578e-7 2-24 5,964644775396e-8 2-25 2,9823223876953e-8 29 3 5

29/8/26 Casos Especiais Números Representáveis Números (não normalizados) 3 3 zero x 3 3 infinito x x 3 3 NaN Em matemática, o conjunto dos números reais é infinito; Entre dois números reais quaisquer, há infinitos números reais; Para tal, infinitos dígitos devem ser potencialmente utilizados; A representação de números reais utilizando a notação de ponto flutuante, utiliza um número finito de bits; Por definição, apenas números racionais podem ser representados em ponto flutuante; Pelo menos bit da mantissa diferente de zero 3 Números Representáveis 32 s..... s = m =.... e = -4 3 3 Convertendo de volta para decimal... m =,4969384765625 erro =,4969384765625 33 34 Instruções Lógicas Testar se um número é par ou impar and E bit a bit and $rd,$rs,$rt or OU bit a bit or nor NÃO OU bit a bit nor $rd,$rs,$rt xor OU EXCLUSIVO bit a bit xor $rd,$rs,$rt andi E bit a bit segundo operando cte andi $rt,$rs,cte ori OU bit a bit segundo operando cte ori $rt,$rs,cte nori NÃO OU bit a bit segundo operando cte nori $rt,$rs,cte xori OU EXCLUSIVO bit a bit segundo operando cte xori $rt,$rs,cte ssl Deslocamento para a esquerda (multiplicação base 2) ssl $rt,$rs,[:3] slr Deslocamento para a direita (divisão base 2) slr $rt,$rs,[:3] sslv Deslocamento para a esquerda (multiplicação base 2) sslv $rd,$rs,$rt slrv Deslocamento para a direita (divisão base 2) slrv $rd,$rs,$rt addi $s,$zero, 43 addi $s,$zero, and $t,$s,$s $rd,$rs,$rt #coloca em s o num. a ser testado #máscara todos os bits exceto o lsb #zera todos os bits exceto o lsb #se t for igual a o número é par, se for igual a é impar Operações lógicas também são utilizadas em diversos outros contextos: 35 Testes lógicos; Computação gráfica; Parsing de arquivos binários; etc. 36 6

29/8/26 Multiplicação e Divisão via Deslocamento (Base 2) 3 ssl $s, 6 Deslocar um número para a esquerda equivale a multiplica-lo por uma potência de 2; Deslocar um número para a direita equivale a dividi-lo por uma potência de 2 Bibliografia Comentada PATTERSON, D. A. e HENNESSY, J. L. 24. Organização e Projeto de Computadores A Interface Hardware/Software. Elsevier/ Campus 4ª edição. HENNESSY, J. L. e PATTERSON, D. A. 22. Arquitetura de Computadores Uma Abordagem Quantitativa. Elsevier/ Campus 5ª edição. 37 38 Bibliografia Comentada MONTEIRO, M. A. 2. Introdução à Organização de Computadores. s.l. : LTC, 2. Bibliografia Comentada STALLINGS, W. 22. Arquitetura e Organização de Computadores. 22. MURDOCCA, M. J. e HEURING, V. P. 2. Introdução à Introdução de Computadores. 2. 85-352-684-. TANENBAUM, A. S. 27. Organização Estruturada de Computadores. 27. 39 4 7