Download
slide1 n.
Skip this Video
Loading SlideShow in 5 Seconds..
Verano 2004 PowerPoint Presentation
Download Presentation
Verano 2004

Verano 2004

133 Vues Download Presentation
Télécharger la présentation

Verano 2004

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Organización del Computador I VeranoAritmética (1 de 3)Basado en el capítulo 4 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn

  2. Números • Los números se representan con tiras de bits. • La posición relativa de cada dígito binario determina su valor (igual que en el sistema decimal: unidades, decenas, centenas...) • El valor decimal del número se calcula: • La cantidad de bits de la representación, n, determina el máximo número representable. • Por ejemplo: con 32 bits, se podrán representar los números del 0..232-1. • Muchas veces, después de una operación aritmética, el resultado obtenido no es representable con los n bits de la representaciónDesbordamiento

  3. Representación de números negativos • Signo y Magnitud: Complemento a dos000 = +0 000 = +0 001 = +1 001 = +1 010 = +2 010 = +2 011 = +3 011 = +3 100 = -0 100 = -4 101 = -1 101 = -3 110 = -2 110 = -2 111 = -3 111 = -1 • ¿Cual elegir? balanceo, número de ceros, facilidad para el hardware • Rango de la representación: • Signo y magnitud: -(2n-1 -1)<=x<=2n-1 -1 • Complemento a 2: -(2n-1)<=x<=2n-1-1

  4. Representación Complemento a 2 • Se llama complemento a 2 porque la suma de cualquier número y su negativo dan 2n. • El complemento a 2 de un número x es: 2n –x • Los números positivos tienen una serie infinita de ceros a la izquierda, los números negativos tienen una serie infinita de unos a la izquierda. • El bit mas significativo se llama “bit de signo”

  5. Representación Complemento a 2 • Los números enteros (positivos y negativos) se representan mediante una tira de n bits, el valor decimal de dicha tira se llama valor explícito. • Ejemplo: n=4 5xe=x=5 0101 -5xe=16-5=11 1011

  6. Representación Complemento a 2 • Dado un valor explícito, el valor del número entero se obtiene: • Ejemplo: 0111 x=xe=7 1001 x= -(16-9)=-7

  7. Propiedad de la Representación Complemento a 2 • Las operaciones de suma y resta se pueden hacer sin tomar en cuenta el signo del operando, es decir, se pueden sumar (o restar) directamente los valores explícitos. • Se demuestra que

  8. Ejemplos con n=4 bits Dato X Y Xe Ye Se S Entero 3 -4 3 12 (3+12)mod16=15 -1 Natural 3 12 3 12 (3+12)mod16=15 15 Entero -7 -2 9 14 (9+14)mod16=7 -9 Natural 9 14 9 14 (9+14)mod16=7 23 El resultado (23) no es representable con 4 bits ¿Que sucede si interpretamos los números como enteros? C=1, indica desbordamiento C=1, NO indica desbordamiento

  9. Desbordamiento para números con signo • Al sumar: • Cuando los operandos tienen el mismo signo y se obtiene un resultado con signo contrario • Al restar: • Cuando se resta un número negativo de un número positivo y el resultado es negativo • Cuando se resta un número positivo a uno negativo y el resultado da positivo.

  10. Determinación de Desbordamiento para números enteros Xn-1 Yn-1 Cin Cout S V 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 0 1 0 1 1 1 1 1 1 0

  11. Restas: Restar Sumando R= Y + (-X) Necesitamos la operación de cambio de signo -X = 2n –Xe Pero: no queremos restar!! -X = (2n – 1 ) – Xe + 1 Todos unos C a 1 de X C a 2 de X

  12. Restas: Restar Sumando 1101 0011 0 1010 1101 1101 1 1010

  13. maxint minint MIPS Números con signo de 32 bits:0000 0000 0000 0000 0000 0000 0000 0000two = 0ten0000 0000 0000 0000 0000 0000 0000 0001two = + 1ten0000 0000 0000 0000 0000 0000 0000 0010two = + 2ten...0111 1111 1111 1111 1111 1111 1111 1110two = + 2,147,483,646ten0111 1111 1111 1111 1111 1111 1111 1111two = + 2,147,483,647ten1000 0000 0000 0000 0000 0000 0000 0000two = – 2,147,483,648ten1000 0000 0000 0000 0000 0000 0000 0001two = – 2,147,483,647ten1000 0000 0000 0000 0000 0000 0000 0010two = – 2,147,483,646ten...1111 1111 1111 1111 1111 1111 1111 1101two = – 3ten1111 1111 1111 1111 1111 1111 1111 1110two = – 2ten1111 1111 1111 1111 1111 1111 1111 1111two = – 1ten

  14. MIPS: Extensión de signo • Se utiliza para convertir un número de n bits en un número de mas de n bits. • El operando inmediato de 16 bitsdebe convertirse en un operando de 32 bits para operar. • Se copiael bit más significativo (bit de signo) 0010 -> 0000 0010 1010 -> 1111 1010 • La instrucción load byte (lb) trata el número como un número con signo, extendiendo el signo sobre el registro de 32 bits. La instrucción load byte unsigned (lbu), simplemente rellena con ceros los 24 bits del registro de 32.

  15. MIPS: Efecto del Desbordamiento • Cuando se detecta desbordamiento, MIPS provoca una excepción: • El control del programa pasa a una dirección predefinida, donde se ejecuta un código de error. • La dirección del programa que ha causado la excepción se guarda en un registro especial llamado EPC (exception program counter). • La instrucción mfc0 permite copiar la dirección guardada en el EPC sobre un registro de propósito general para poder retornar el programa original. • Volveremos mas adelante sobre el tema de las excepciones......

  16. MIPS: Efecto del Desbordamiento • No siempre nos interesa detectar el desdordamiento: por ejemplo, en la aritmética de direcciones (punteros), números sin signo. • MIPS diferencia dos tipos de instrucciones: las que ignoran el desbordamiento (addu,addiu,subu, etc) y las que generan excepciones (add, addi, sub, etc) • Los compiladores usan una u otra versión. • Observemos que, en las instrucciones con operando inmediato hay extensión de signo, de 16 a 32 bits, tanto para números con signo, como para números sin signo. • También observemosque hay dos instrucciones de comparación diferentes: sltu, (sltiu) y slt (slti).

  17. Códigos para detectar desbordamiento addu $t0,$t1,$t2 #suma sin deteccion xor $t3,$t1,$t2 #para comprobar los signos slt $t3,$t3,$zero #$t3=1 si los signos difieren bne $t3,$zero, no_hay # si los signos difieren no hay xor $t3,$t0, $t1 # puede haber.... slt $t3,$t3,$zero #los tres signos difieren=>hay Bne $t3,$zero, hay c addu $t0,$t1,$t2 nor $t3,$t1, $zero sltu $t3,$t3, $t2 bne $t0, $zero, hay

  18. FIN Aritmética(1 de 3)