1 / 18

Arquitetura de Computadores I

Arquitetura de Computadores I. Ponto Flutuante - MIPS -. Padronizar . É simples trocar dados que incluem números em ponto flutuante; Simplifica os algoritmos de aritmética de ponto flutuante saber que os números sempre estarão nesta forma;

braima
Download Presentation

Arquitetura de Computadores I

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Arquitetura de ComputadoresI Ponto Flutuante - MIPS - -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I

  2. Padronizar • É simples trocar dados que incluem números em ponto flutuante; • Simplifica os algoritmos de aritmética de ponto flutuante saber que os números sempre estarão nesta forma; • Aumenta a precisão de números que podem ser armazenados em uma palavra, já que os 0’s desnecessários da frente são substituídos por números reais à direita do ponto decimal (,). -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I

  3. Ponto Flutuante: Padronização • IEEE 754 floatting point standard • (-1)s x F x 2e • Representação de float (precisão simples) • Representação de double (precisão dupla) -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I

  4. Padronização • Representação de números negativos usando notação em excesso • Notação “excesso”: N é o número de bits do valor em questão. Ex. 1111, N = 4 • Para realizar uma conversão na representação “excesso”, fazer: 2^N-1 + número. Ex: convertendo 5, 2^3 + 5 = 1101 (1101 = +5). Convertendo -3, 2^3 + -3 = 1010 (1010 = -3). • Polarização (ou bias) • Bias é um caso especial da representação “excesso”, onde o “número mágico” é escolhido pelo usuário (ex. IEEE-754 float utiliza bias=127). -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I

  5. Exercício • 1) Mostre a representação em P.F. do número -0,75 (10) • 2) Mostre a representação decimal deste número: 1-10000001-010000..... -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I

  6. Resposta exercício 1 • Convertendo para Binário o número; •  devemos formatar o número; •  remover o primeiro 1; •  Aqui temos o expoente (1), e a parte significativa 0,1; • Até aqui sabemos que: o bit de sinal é 1 e que a parte significativa é: 100000.... -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I

  7. Resposta exercício 1 cont. • Vamos calcular o expoente; • Lembramos que Ex=Número-polarização; • -1=Número-127; • Número = 126; • Número = 01111110; • Resposta: -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I

  8. Resposta Exercício 2 • Como o bit de sinal é 1, sabemos que o número é negativo; • Vamos pegar a parte significativa do número: 0,01; • Vamos somar um (1) para respeitarmos a formatação: 1+0,25 = 1,25; • Aqui nós temos a parte significativa do número: 1,25. -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I

  9. Resposta do exercício 2 cont. • Vamos ver o expoente, lembrando que Ex=Número-polarização; • Ex=10000001-01111111; • Ex=129-127; • Ex=2; • Agora vamos juntar os dados: • -1,25x22 = -1,25x4 = -5; • Resposta: -5 -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I

  10. Coisas que devemos saber! • Para programar com números com precisão de ponto flutuante, devemos usar o co-processador de ponto flutuante do MIPS; • O co-processador possui seus próprios registradores (32), de 32 bits; • Existem instruções específicas para números de precisão simples (32 bits) e para números de precisão dupla (64 bits). • Quando trabalhamos com números de precisão dupla, ocupamos dois registradores; • Para precisão dupla devemos sempre utilizar registradores de “índice” ($fn) par. -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I

  11. Programa Exemplo Float data msg1: .asciiz "Exemplo de uso de float no spim.\nEntre com um valor: " .text .globl main main: li $2, 4 # print string (syscall code 4) la $4, msg1 syscall -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I

  12. Programa exemplo Float cont. li $2, 6 # read float (syscall code 6, returns #value read in $f0) syscall mov.s $f2, $f0 # $f2 = $f0 add.s $f2, $f2, $f0 -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I

  13. Programa exemplo Float cont. li $2, 2 # print float (syscall code 2) mov.s $f12, $f2 # $f12 has value to be #printed syscall li $2, 10 # exit (syscall code 10) syscall -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I

  14. Programa Exemplo Double .data msg1: .asciiz "\n\nf = ( g + h ) - ( i + j )\n" msg2: .asciiz "\nEntre com o valor de g: \n" msg3: .asciiz "\nEntre com o valor de h: \n" msg4: .asciiz "\nEntre com o valor de i: \n" msg5: .asciiz "\nEntre com o valor de j: \n" msg6: .asciiz "\nO valor de f é: " .text .globl main -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I

  15. Programa Exemplo cont. main: li $2, 4 #service 4: print_str la $4, msg1 syscall la $4, msg2 syscall li $2, 7 #service 7: read_double syscall #$2 receives input mov.d $f4, $f0 #$f4 receives value of variable g -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I

  16. Programa Exemplo cont. li $2, 4 la $4, msg3 syscall li $2, 7 syscall mov.d $f6, $f0 #$f6 receives value of variable h li $2, 4 la $4, msg4 syscall -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I

  17. Programa Exemplo cont. li $2, 7 syscall mov.d $f8, $f0 #$f8 receives value of variable i li $2, 4 la $4, msg5 syscall li $2, 7 syscall mov.d $f10, $f0 #$f10 receives value of variable j -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I

  18. Programa Exemplo add.d $f20, $f4, $f6 add.d $f22, $f8, $f10 sub.d $f2, $f20, $f22 li $2, 4 la $4, msg6 syscall li $2, 3 #service 3: print_double mov.d $f12, $f2 syscall li $2, 10 #service 10: exit syscall -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I

More Related