A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Arquitetura de Computadores I

Apresentações semelhantes


Apresentação em tema: "Arquitetura de Computadores I"— Transcrição da apresentação:

1 Arquitetura de Computadores I
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^ = 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: -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 é: -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 = ; 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= ; Ex= ; 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, # 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 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
mov.d $f6, $f0 #$f6 receives value of variable h la $4, msg4 -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 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 li $2, #service 10: exit -Breda, Bortoluzzi, Luz – Arquitetura de Computadores I


Carregar ppt "Arquitetura de Computadores I"

Apresentações semelhantes


Anúncios Google